Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView - OnInfoTip (https://www.delphipraxis.net/211967-listview-oninfotip.html)

geldis 27. Nov 2022 15:14

ListView - OnInfoTip
 
Moin Moin.

In einem Listview mit Ordnernamen soll beim bewegen der Maus über einen Eintrag eine Information angezeigt werden. Diese Info wird in einem extra Formular angezeigt, weil für die HINT Zeile sind die Informationen (JOSN) zu lang und es sieht sch...lecht aus.
Dazu verwende ich die Ereignisroutine OnInfoTip. Klappt anstandslos.

Delphi-Quellcode:
Procedure TMainForm.FilesInfoTip(Sender: TObject; Item: TListItem; var InfoTip: string);
Var
SelectedDirectory : String;
begin
  SelectedDirectory := Item.Caption;
  Infotip := '';
  if Not(Tfile.Exists(MODPath + SelectedDirectory + '/modinfo.json')) then
    begin
      HintForm.ModNameLabel.Caption := SelectedDirectory;
      CreateEmptyJSON(MODPath + SelectedDirectory);
      ReadJSONModInfo(MODPath + SelectedDirectory + '/modinfo.json');
    end;
    if Tfile.Exists(MODPath + SelectedDirectory + '/modinfo.json') then
    begin
     ReadJSONModInfo(MODPath + SelectedDirectory + '/modinfo.json');
    end;
end;

procedure TMainForm.FilesMouseLeave(Sender: TObject);
begin
 HintForm.Hide;
end;

procedure TMainForm.FilesMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  HintForm.Left := MainForm.Left - HintForm.Width - 5;
  HintForm.Top := MainForm.Top + MainForm.Files.Top;
  HintForm.show;
end;
In Item ist der ItemIndex des jeweils «berührten» ListView Eintrages enthalten. Genau solange bis ein neuer Eintrag «berührt» wird.

Mein Problem:
Wenn der Anzeigebereich des ListViews größer ist als die Anzahl der Einträge, brauche ich im quasi leeren Bereich des ListViews eben diese Info : Wo der Mauszeiger momentan gerade ist - da ist nichts.

Aber woher? Jemand eine Idee?

geldis

peterbelow 28. Nov 2022 14:46

AW: ListView - OnInfoTip
 
TListview hat eine GetItemAt-Methode, die könntest Du im OnMouseMove-Handler des Listviews verwenden, um zu checken, ob die Maus über dem leeren Bereich ist.

geldis 29. Nov 2022 07:26

AW: ListView - OnInfoTip
 
Vielen Dank, das ist es. :thumb:

Zuverlässig nur mit MouseMove, aber das geht bestens.

geldsi


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz