![]() |
ComboBox Onchange ereignis schliesst form
Abend!
Ich habe 2 Forms. Auf der Zweiten Form habe ich eine ComboBox und eine ShellTreeView Komponente. Die ComboBox hat als Items z.B.: E:\ F:\ G:\ wenn ich nun die auswahl änder wird die folgende procedure aufgerufen:
Delphi-Quellcode:
Das sollte doch so ok sein?! Wenn ich aber nun bei der ComboBox einen anderen Eintrag wähle (z.b. F:\ ), dann schließt sich die Form2.
procedure TForm2.ComboBox1Change(Sender: TObject);
begin ShellTreeView1.Root:=ComboBox1.Text; end; Wenn ich darauf hin von Form1 wieder Form2 öffne, dann ist der Root des ShellTreeView auch mein neugewähltes Laufwerk (hier F:\ ) Wie kann ich das schließen des Forms denn verhindern?! Woran kann das liegen? die ShellComboBox kann ich nicht benutzen, weil nur bestimmte, vorher gefilterte ( keine leeren etc. ) Laufwerke aufgelistet werden sollen... Fehlermeldungen gibt er überhaupt nicht aus... hoffe jemand kann mir da helfen! thx dioony |
Re: ComboBox Onchange ereignis schliesst form
So müsste es gehen:
eine variable vom Typ Boolean; [delphi] var Form2 : TForm2; combo_change : Boolean; [delphi] die ComboBox Prozedur [delphi] procedure TForm2.ComboBox1Change(Sender: TObject); begin ShellTreeView1.Root:=ComboBox1.Text; combo_change := True; end; [delphi] das OnCloseQuery vom Formular [delphi] procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if combo_change := True then begin CanClose := False; combo_change := False; end; end; [delphi] das Sollte gehen (ungetestet!) |
Re: ComboBox Onchange ereignis schliesst form
Hi!
Danke erstmal, das hat mir leider nicht weitergeholfen... funktionierte leider nicht... Aber wenn er darauf nicht reagiert, dann sollte das wahrscheinlich bedeuten, dass er die Form nicht normal schließt. Ich wüsste aber auch nicht, wo der Fehler liegen könnte... habe auch schon überlegt, ob es beim shelltreeview sowas wie die methode beginupdate oder so was in der art gibt? Habe darüber auch nichts im www gefunden... |
Re: ComboBox Onchange ereignis schliesst form
Abend!
Wollte mal ebend einen anderen Ansatz posten, der mir eingefallen ist, aber der Funktioniert nicht ganz so, wie ich es mir gedacht habe... Meinen Nachforschungen nach liegt der Fehler wohl in der Kombination von ShellTreeView und der ComboBox. Nun habe ich mir gedacht, dass ich statt der ComboBox eine ShellComboBox nehme und sie mir meinen ansprüchen anpasse. ShellComboBox und ShellTreeView kann man über die Eigenschaften ja miteinander verknüpfen... Das ganze sieht dann so aus:
Delphi-Quellcode:
Das Problem hierbei ist jetzt nur, dass die ShellComboBox von
ShellComboBox1.Clear;
ShellComboBox1.Items.Add('E:\'); ShellComboBox1.Items.Add('F:\');
Delphi-Quellcode:
abhängig ist und daher automatisch den Inhalt des Desktops in der ShellComboBox wiedergibt... Es sollen ja nur vorher bestimmte Laufwerke angezeigt werden...
ShellComboBox.Root:=rfDesktop;
kann man sowas irgendwie umgehen? zu der ShellComboBox habe ich auch nichts wissenwertes gefunden. Delphi hat es bei mir zumindest noch nicht mal in der hilfe... cya dioony //edit...: Habe das Problem das ganz am anfang war, gelöst.... er hat die form geschlossen, weil in der prozedur ShellTreeView1Change die Form2 disabled wurde und danach wieder enabled. Irgendwie hat ihn das gestört... wollte die lösung nur ebend fürs protokoll posten ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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