Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi: Formular pausieren bis zu einer Aktion

Empfohlene Antworten

Veröffentlicht

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

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

Vielen Dank,

das klappt bisher sehr gut.

Allerdings entsteht dabei ein ganz anders Problem, irgendwo im Restprogramm, wobei das natürlich ganz meine Sorge ist. :)

Also nochmals danke schön,

das ist ne sehr angenehme Funktion.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.