Einzelnen Beitrag anzeigen

Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

TreeNode in TreeView verschwindet

  Alt 7. Mär 2006, 13:16
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?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat