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
Select(TopItem)
das erste der beiden selektiert.
und dann die Funktion
ChangeShowedPart(Selected.Text)
aufgerufen, damit das entsprechende Panel angezeigt wird.
Soweit so gut.
Im OnChange des TreeViews steht ebenfalls dieses
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ÄÄÄÄ
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
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?
Aber was passiert da?