![]() |
AW: ShowModal mit Programmablauf und selbst schließen?
Man könnte das ganze doch, wie von alfold vorgeschlagen lösen, und das Problem mit dem Klicken auf der Mainform umgehen, indem man die Mainform Disabled, oder sehe ich das falsch?
|
AW: ShowModal mit Programmablauf und selbst schließen?
Du brauchst ein Formular, das dein anderes überblendet, und kein modales Fenster!!! Ansonsten müsste dein Splash Formular die Arbeit machen.
Das mit dem Überblenden sollte ohne große Probleme mit TOPMOST möglich sein! modal heißt warte bis das Formular etwas zurückliefert. Das mit dem OnIdle funktioniert, ob es schön ist ist eine andere Frage. |
AW: ShowModal mit Programmablauf und selbst schließen?
Ich würde das so machen:
1. In TForm1 eine Variable "FirstActivation" anlegen 2. Im OnCreate() diese auf true setzen 3. Im OnActivate() dann:
Code:
Wenn Dir OnActivate zu "früh" ist, nimm halt OnResize. Ich habe allerdings noch kein Formular gehabt, das im OnActivate noch nicht fertig gezeichnet gewesen wäre (und ich habe hier Forms mit dutzenden von Controls).
if FirstActivation then begin
FirstActivation := false; (lange dauernde Aktionen mit Fortschrittsbalken); PostMessage(Self.Handle, WM_CLOSE, 0, 0); end |
AW: ShowModal mit Programmablauf und selbst schließen?
Ok, sehr simples Beispiel. (nicht getetstet kein Delphi zur Hand)
Delphi-Quellcode:
Solange er in dieser Schleife(Procedure) ist kann er weder Form2 bewegen noch Main anklicken!
procedure TForm1.HoleDaten1Click(Sender: TObject);
var i: Integer; begin if connect then//DBConnect begin try form2:= TForm2.Create(self); form2.show; //hole daten for i:= 0 to 100 do begin //ix Daten einlesen oder wie auch immer! form2.ProgressBar1.Position:= i; end; except Form2.Close; raise//wenn was passiert end; Form2.Close; end else begin //no connect end; end; 1. Vorteil, Form2 brauch nicht mal zu wissen das es Form1 gibt(uses). 2. Vorteil, Es bleibt alles in Main einschliesslich der gesamten Kontrolle. 3. Vorteil, Die Variablen bleiben Privat müssen nicht Public oder sogar Global gesetzt werden( je nach dem wie ich die units einbinde). 4. Vorteil, Ich habe nicht '2' getrennte Anordnungen um sicher zustellen das alles in der Form2, wenn sie Showmodal ist, auch richtig funktioniert und muss mir keinen Kopf machen die Daten nun noch zur MainForm zu schicken! Wenn das nicht Save ist? Was will man mehr :wink: Gruss alfold |
AW: ShowModal mit Programmablauf und selbst schließen?
ich würde mich WM_Close in #42 anschließen und habe immer noch nicht verstanden was bei #21 nicht passen soll...
|
AW: ShowModal mit Programmablauf und selbst schließen?
Zitat:
Zitat:
Code:
// irgendwas davor
if FormGetData.ShowModal = mrOK then ... else ... // danach sicher sein, dass alles fertig und weiter geht's Zitat:
Zitat:
@Angos: Dein Vorschlag mit Form.Diabled ist richtig und wäre das mindeste, was man machen müsste. Eine modale Form löst genau das einfach so. |
AW: ShowModal mit Programmablauf und selbst schließen?
Zitat:
Zitat:
Zitat:
Zitat:
wenn man sich das simple Beispiel anschaut und versteht! Dann brauch man auch kein Showmodal! Zitat:
Gruss alfold |
AW: ShowModal mit Programmablauf und selbst schließen?
Hallo HJay,
Zitat:
![]() Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 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-2025 by Thomas Breitkreuz