![]() |
TTreeView.GetNodeAt
Ich benutze eine Komponente TTreeView, die auf einer TCustomForm platziert ist und einige hundert Knoten enthält.
Im MouseDownEvent liefert lt. Hilfe die Funktion TTreeView.GetNodeAt(x,y) den Knoten zurück, der sich an der Position [x,y] befindet. Wenn der TreeView aber nun auf den interessierenden Knoten gescrollt werden muß, erhalte ich in OnMouseDown nie diesen Knoten, sondern stets den, der unter der Mausposition [x,y] steht, die hier als absolute Position interpretiert wird, nicht aber als relative Position zum ersten Knoten im TreeView. Woher bekomme ich den Wert Add, der zu y addiert werden muß, um den korrekten Knoten, d.h. den unter der absoluten Position [x,y+Add] zu finden? |
AW: TTreeView.GetNodeAt
Ich verstehe dein Problem nicht.
Ich erstelle eine TreeViewe mit 20x20 Knoten, expandiere einige, scrolle runter, klicke auf einen X-beliebigen Knoten und bekomme immer genau den, auf den ich klicke.
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm3 = class(TForm) TreeView1: TTreeView; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.FormCreate(Sender: TObject); Var i,j : Integer; n : TTreeNode; begin for I := 0 to 20 do begin n := TreeView1.Items.Add(nil,IntToStr(i)); for j := 0 to 20 do TreeView1.Items.AddChild(n,n.text+'/'+intToStr(j)); end; end; procedure TForm3.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var n : TTreeNode; begin n := TreeView1.GetNodeAt(X,Y); if n<>nil then label1.Caption := n.Text; end; end. |
AW: TTreeView.GetNodeAt
Ja, das scheint ein spezielles Problem in meiner Umgebung zu sein. Habe gerade eine Testdemo mit einem TreeView erstellt, klappt einwandfrei. In meiner Anwendung ist der TreeView Bestandteil einer Komponente, die eine TForm (ToolWindow) ist und diese wird dynamisch erzeugt. Wahrscheinlich gibt es da Wechselwirkungen mit anderen Events, muß ich ausforschen. Thanx to you, das Problem liegt also an mir und diese Gewißheit ist schon mal hilfreich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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 by Thomas Breitkreuz