![]() |
ShowModal im Hintergrund vs. Show mit Rückgabewerten
Hallo,
ich habe - möglicherweise - eine Anfängerfrage, weiß aber leider nicht, wie ich mich dem Problem nähern kann: Ich habe ein Client-Programm, was vollständig ereignisgesteuert läuft. Der TClientSocket ist im Hauptformular. Die relativ umfangreichen Einstellungsmöglichkeiten für das gesamte Programm und so auch für TClientSocket werden in einer separaten Form amgeboten. Rufe ich nun diese Form mit .ShowModal auf, kann ich zwar auf die Tasten reagieren. Mein Hauptprogramm wird aber logischer Weise nicht weiter ausgeführt. Rufe ich das mit .Show auf, läuft mein Programm zwar weiter. Ich weiß aber leider nicht, wie ich auf die Tasten im Setup-Formular reagieren kann. Mir fiele nur ein, es zur allergrößten Not über Messages zu machen. Gibt es für mein Problem eine einfache Lösung? Falls Ihr bessere Ideen für den Titel habt, nur her damit. Auch für weiterführende Stichpunkte zum Suchen wäre ich schon dankbar. Gruß, Alex |
Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten
Hallo,
warum soll das Programm während der Einstellungen einfach so weiterlaufen ? Davon abgesehen läuft das ganze TClientXXX-Dingens ja eh weiter (OnReceive usw.). Heiko |
Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten
Danke für die Antwort.
Zitat:
Zitat:
Das werde ich dann mal ausprobieren. Das Problem ist nur, dass das Programmieren von Server und Client nicht ganz ohne ist und ich weder Lust noch Kraft habe um da Zeit reinzustecken, um später festzustellen, dass es nicht geht. Zumal die Hilfe zu .ShowModal etwas anderes dazu sagt. Dort steht, dass der Ablauf des Programms abgebrochen wird, bis das Modal angezeigte Fenster wieder geschlossen ist. Gruß, Alex |
Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten
Hallo,
damit ist gemeint, dass der Nzuter das Form nicht benutzen kannst. Lass aber z.B. mal nen Timer mitlaufen, der ein Label aktualisiert. Während des ShowModal läuft der weiter. Heiko |
Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten
Das ist mir schon klar.
Ich habe folgendes probiert:
Delphi-Quellcode:
Wenn nun Fenster 3 kommt, kann ich nicht mehr auf den Button (zum Öffnen von 2) von Fenster 1 klicken. Das ist OK, weil Fenster 2 in meinem Programm vom Client.Socket geöffnet wird. Ist Fenster 2 aber schon offen, öffnet sich Fenster 3 und ich kann mit Fenster 2 ebenfalls nichts mehr anfangen.
Unit Unit1;
Interface Uses Forms, Controls, StdCtrls, Classes, ExtCtrls; Type TForm1 = Class(TForm) Timer1 : TTimer; Button1 : TButton; Procedure Button1Click(Sender: TObject); Procedure Timer1Timer(Sender: TObject); End; Var Form1 : TForm1; Implementation Uses Unit2, Unit3; {$R *.dfm} Procedure TForm1.Button1Click(Sender: TObject); Begin Form2.ShowModal; End; Procedure TForm1.Timer1Timer(Sender: TObject); Begin Timer1.Enabled:=False; Form3.ShowModal; Timer1.Enabled:=True; End; End. Da stellt sich mir bloß am Rande auch die Frage: Obwohl beide Fenster mit ShowModal angezeigt werden. Warum schafft es Fenster 3 immer, sich "vorzudrängeln"? Falls das nicht verständlich ist, muss ich wegen meines Problems wohl etwas weiter ausholen: Mein Programm hat im Grunde kein MainForm. Es wird nur im SystemTray angezeigt, hat ein Popup und je nach dem, welcher Menüeintrag gewählt wird, kommt das eine oder andere Fenster zum Vorschein. Die einzige Ausnahme soll das Fenster mit den Systemmitteilungen sein. Die Fenster sind daher quasi gleichrangig. Gruß, Alex |
Re: ShowModal im Hintergrund vs. Show mit Rückgabewerten
Hallo,
aha !!! Warum nicht gleich so ? Dann würde ich .Show nehmen und mit Nachrichten arbeiten. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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