Zum Inhalt springen

Delphi: Formular pausieren bis zu einer Aktion


Zakum

Empfohlene Beiträge

Hallo,

ich arbeite gerade zum ersten Mal mit zwei Forms in einem Delphi-Projekt (war iwie nie von Nöten, bisher Oo) und bin da auf folgendes Problem gestossen:

Mitten in einer Prozedur soll das zweite Formular escheinen, dort werden dann, während die "rufende Prozedur" schläft, einige Angaben gemacht und auf Festplatte gespeichert, dann darfs im ersten Formular/Unit weiter gehen, das diese Daten von Festplatte lädt und weiter verarbeitet (Oder kann ich die beiden irgendwie kommunizieren lassen und muss nicht auf Festplatte zwischen speichern?).

Ich hab das wie folgt realisiert:

 filme_form.visible:=true;           //zweites Formular erscheint

 main_form.Caption:='Pause';               

 While main_form.Caption='Pause' do

  Application.ProcessMessages;            //wir warten, bis die Caption wieder geändert wird

...
Und in der Unit des erscheinende Formulars passiert dann folgendes:

  ...

  main_form.Caption:='Aktiv';

  filme_form.visible:=false;

Was soll ich sagen... Es funktioniert. :D

Nun höre ich aber schon im Geiste den Doktor über schlechten Programmierstil zettern. Naja, ganz im Ernst, das ist wirklich etwas übers Knie gebrochen. :(

Weiß jemand, wie das schöner geht? Ohne Endlosschleife wäre ja zumindest nicht schlecht...

Vielen Dank schon im Vorraus,

Zakum

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kein Problem:

procedure Form1.OnButton1Click(Sender blablub);

begin

  ...

  if Form2.ShowModal = mrOK then begin

    ...

  end;

end;

Form.Show öffnet nur das Fenster in den Vordergrund und kehrt sofort zurück.

Bei Form.ShowModal dagegen bleibt die Ausführung dort stehen und öffnet das Fenster als modal (wie einen Dialog) und kehrt erst zurück, wenn ein Button, der einen gesetzten ModalResult hat gedrückt wurde, oder das Form mittels einer der diversen Methoden zum Closen ausgeführt wurde.

Hinweise:

1) Wichtig ist einerseits genau zu wissen, wann Du einen Close und wann Du einen Hide im Form2 machen musst! Sonst knallts evtl beim zweiten Aufruf :D

2) Andererseits ist auch wichtig zu wissen, dass es einen Unterschied macht, ob das Formular2 bereits instanziiert wurde, ansonsten musst Du es vorher noch mittels Application.CreateForm(TForm2, Form2); erstellen.

Siehe dazu in der Project.dpr: in der Quellcodeverwaltung -> Rechtsklick -> Quellcode anzeigen

Wenn was nicht klappt einfach nochmal fragen :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...