Moin Leute
Ich hatte da ein Problem mit dem TreeView. Bei einem Doppelklick auf einen Eintrag sollte dieser Eintrag nicht aufklappen. Warum? Egal! Hier ist einfach mal die Lösung dazu:
Delphi-Quellcode:
private
{ Private-Deklarationen }
FExpandNode,
FCollapseNode : TTreeNode;
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
FCollapseNode:=nil;
FExpandNode:=nil;
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
lExpandingEvent : TTVExpandingEvent;
lCollapsingEvent : TTVCollapsingEvent;
begin
if Assigned(FExpandNode) then
begin
lExpandingEvent:=TreeView1.OnExpanding;
TreeView1.OnExpanding:=nil;
FExpandNode.Expand(False);
TreeView1.OnExpanding:=lExpandingEvent;
FExpandNode:=nil;
end;
if Assigned(FCollapseNode) then
begin
lCollapsingEvent:=TreeView1.OnCollapsing;
TreeView1.OnCollapsing:=nil;
FCollapseNode.Collapse(False);
TreeView1.OnCollapsing:=lCollapsingEvent;
FCollapseNode:=nil;
end;
end;
procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
AllowCollapse:=False;
FCollapseNode:=Node;
end;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
AllowExpansion:=False;
FExpandNode:=Node;
end;
Vielleicht gibt es da noch etwas schöneres mit Botschaften. Auf jeden Fall funktioniert es.
Ach ja, Delphi 5 pro
Stefan