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 TreeNode in TreeView verschwindet (https://www.delphipraxis.net/64725-treenode-treeview-verschwindet.html)

Angel4585 7. Mär 2006 13:16


TreeNode in TreeView verschwindet
 
Hallo zusammen,

folgendes problem:

Ich ahbe eine Form,

links ein TreeView, rechts zwei Panels

der TreeView hat zwei Nodes: 'Panel1','Panel2'

über diese Prozedur wird jedweils ein Panel sichtbar gemacht und das andere unsichtbar:

Delphi-Quellcode:
procedure ChangeShowedPart(APanel : string);
begin
Panel1.Visible:= APanel = 'Panel1';
Panel2.Visible:= APanel = 'Panel2';
end;
funktioniert auch perfekt.

Im OnCreate der Form werden dem Treeview die zwei genannten Nodes jeweils mit
Delphi-Quellcode:
Clear;
AddChild('Panel1')
AddChild('Panel2')
hinzugefügt, danach wird mit
Delphi-Quellcode:
Select(TopItem)
das erste der beiden selektiert.
und dann die Funktion
Delphi-Quellcode:
ChangeShowedPart(Selected.Text)
aufgerufen, damit das entsprechende Panel angezeigt wird.

Soweit so gut.

Im OnChange des TreeViews steht ebenfalls dieses
Delphi-Quellcode:
ChangeShowedPart(Selected.Text).
Wenn ich jetzt die Form mit ShowModal anzeigen lasse, verschwindet auf einmal die erste Node, das OnChange des TreeViews wird aufgerufen, das zweite Panel wird angezeigt und dann ist die verschwundene Node auf einmal wieder da. Und ich verzweifle solangsam, weil es kein OnShow Ereignis gibt und mir sonst auch nichts einfällt.

Warum verschwindet da das erste Node?

HÜÜÜLLLFFFÄÄÄÄ :cry:

:angel:

Edit: Ich habs jetzt so gelöst, dass ich das OnChange des TreeViews im OnShow der Form zuweise.. dann gehts.. will aber trotzdem wissen was da los ist!

Ergänzung: Nachdem die verschwundene Node wieder da ist wird das OnChange nochmals ausgeführt.. es wird auch das richtige Panel auf Visible gesetzt.. aber trotzdem sehe ich das Panel das laut den überwachten Ausdrücken visible = False hat :wall: :wall: :wall:

Ergänzung2: aus dem Showmodal hab ich jetzt das gemacht.. und es funktioniert ohne ein OnShow:
Delphi-Quellcode:
with TtfForm.Create(Self) do
 try
  Show;
  tfMainForm.Enabled:=False;
  while Visible do
   Application.ProcessMessages;
 finally                      
  tfMainForm.Enabled:=True;
  Free;
  end;
Also muss es irgendwie mit dem ShowModal zusammenhängen oder? :gruebel: Aber was passiert da?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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