![]() |
TListView-OnMouseMove->richtige ListItem ermitteln?
Meine TListView wrid so erzeugt:
Delphi-Quellcode:
Wenn ich mich jetzt mit dem Maus über TListView bewege, dann wird Hint-Eigenschaft richtig gesezt. ( das kann ich im StatusBar auslesen ). Das Ganze funktionier solange ich das HorizontalScrollBar (von TListView) in Ruhe lasse. Wenn es aber "nach rechts" bewege, um die Einträge zu sehen, die unsichtbar waren, dann liefert die Procedur "HostListViewMouseMove" falsche ergebnisse. Mir ist auch klar warum es so ist. Ich weiss aber nicht, wie ich das korrigieren könnte. Weisst jemand?
var
HostListView: TListView; [...] HostListView := TListView.Create(Self); with HostListView do begin Name := 'HostListView'; Parent := VariablesSheet; Left := 0; Top := 0; Width := 441; Height := 211; Align := alClient; Columns := <>; GridLines := True; ReadOnly := True; RowSelect := True; ShowWorkAreas := True; TabOrder := 0; ViewStyle := vsReport; OnMouseMove := HostListViewMouseMove; end; [...] procedure TMainAppForm.HostListViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var ListItem:TListItem; CurrentListView:TListView; i, w:Integer; begin CurrentListView := TListView(Sender); ListItem := CurrentListView.GetItemAt(x, y); if ListItem<>nil then begin w := 0; for i:=0 to CurrentListView.Columns.Count-1 do begin w := w + CurrentListView.Columns.Items[i].Width; if w>X then begin if i=0 then begin CurrentListView.Hint := '|'+CurrentListView.Columns.Items[i].Caption+' = '+ListItem.Caption; end else begin CurrentListView.Hint := '|'+CurrentListView.Columns.Items[i].Caption+' = '+ListItem.SubItems.Strings[i-1]; end; Break; end; end; end else begin CurrentListView.Hint := ''; end; end; |
Re: TListView-OnMouseMove->richtige ListItem ermitteln?
Hallo,
kennst du das Ereignis OnInfoTip() der ListView? Im Parameter Item liefert dir dieses Ereignis das Item, über dem sich die Maus befindet. Oder interpretiere ich deinen Code falsch? Freundliche Grüße vom marabu |
Re: TListView-OnMouseMove->richtige ListItem ermitteln?
Zitat:
|
Re: TListView-OnMouseMove->richtige ListItem ermitteln?
|
Re: TListView-OnMouseMove->richtige ListItem ermitteln?
Versuch mal zur X-Position in MouseMove die aktuelle Position der horiz. Scrollbar hinzu zu addieren.
Stichwort ![]() Gruß, teebee |
Re: TListView-OnMouseMove->richtige ListItem ermitteln?
@Keldorn: Danke, aber ich habe es schon selbst...und zwar muss ich folgendes tun:
Delphi-Quellcode:
Und es funktioniert. :)
//w := 0;// so war es vorher
w := -GetScrollPos( CurrentListView.Handle, SB_HORZ);// so ist es jetzt EDIT: Ja, teebee, so ist es. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 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