![]() |
TListView SubItem Position genau feststellen
Hi,
wie kann ich ein TRect eines SubItems in einem TListView korrekt feststellen? Mit folgender Funktion hole ich mir das TRect zur Zeit:
Delphi-Quellcode:
Nun ist es aber so, dass die Column 0 auf Autosize steht, und sie sich verkleinert, bis sie eine Width von 1 hat. Wenn man dann weiter verkleinert, bekommt sie eine Width von -1, was zeichnerisch an die optimale Spaltenbreite angepasst wird. Wen man jetzt weiter verkleinert, geht die Width weiter in den negativen Bereich, je nach weiterer Verkleinerung. So komme ich dann aber rechnerisch nicht mehr an die genaue Position des SubItems.
r:=lv1.Items[i].DisplayRect(drBounds);
InlineCheckbox.BoundsRect:=ShrinkToColumn(lv1, 5, r); . . . function Tfrm_mitarbeiterT.ShrinkToColumn(lv: TListView; Col: Integer; r: TRect): TRect; var i, l: Integer; begin Result:=r; if Col>0 then begin l:=0; for I := 0 to col-1 do if lv.Columns[i].Width>0 then l:=l+lv.Columns[i].Width else l:=l+(lv.Columns[i].Width * -1); //Zum Testen, weil unsichtbare Columns teilweise negative //Werte haben Result.Left:=r.Left+l; end; Result.Right:=Result.Left+lv.Columns[Col].Width; end; Gibt es dafür eine bessere Lösung? |
AW: TListView SubItem Position genau feststellen
Keiner eine Idee?
|
AW: TListView SubItem Position genau feststellen
Ich Antworte mir mal selbst, da ich eine Lösung jetzt gefunden habe. (Für alle, die sowas mal suchen)
Quelle: ![]()
Delphi-Quellcode:
Aufruf:
const
LVM_FIRST = $1000; LVM_GETSUBITEMRECT = LVM_FIRST + 56; LVIR_BOUNDS = 0; function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer; code: DWORD; prc: PRect): BOOL; begin if prc <> nil then begin prc^.Top := iSubItem; prc^.Left := code; end; Result := BOOL(SendMessage(hwndLV, LVM_GETSUBITEMRECT, iItem, Longint(prc))); end;
Delphi-Quellcode:
var
wr: TRect; li: TListItem; begin li:=ListView1.Items.Add; li.SubItems.Add(''); ListView_GetSubItemRect(ListView1.Handle, li.Index, //Index der jeweiligen Zeile 1, //Caption mitzählen LVIR_BOUNDS, @wr); //In wr haben wir nun das TRect des SubItems end; |
AW: TListView SubItem Position genau feststellen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
- siehe Anhang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz