Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...