Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: falsches Fenster im Vordergrund

  Alt 12. Nov 2019, 13:27
"... Da bei einem modalen Formular die Anwendung unterbrochen wird, bis der Benutzer das Fenster wieder schließt, ..." Daraus habe ich abgeleitet, dass die Form1 nicht verwendet werden kann (=> und im Hintergrund bleibt!!), bis Form2 wieder geschlossen worden ist. Und in der Zwischenzeit soll nur in Form2 gearbeitet werden.
Ich habe mal einem meiner Testprogramme ein neues Formuzlarverpasst und zeige dieses bei einem Buttonclick an:
Delphi-Quellcode:
procedure TMainPage.TlbModalClick(Sender: TObject);
begin
  Modalform.ShowModal;
end;
Auf der Modalform hab ich einen Button und ein Edit:
Delphi-Quellcode:
procedure TModalform.BitBtn1Click(Sender: TObject);
begin
  Edit1.Text := HelpTestMain.MainPage.PageControl1.ClassName
end;
Irgendwie hatte ich den Verdacht, dass ein Zugriff auf die Hauptform diese aktivieren könnte - wobei mein Zugriff sehr minimal ist und so (noch?) keinen Einfluss hat.

Ausserdem hab ich getestet, wie sich die Form verhält, wenn sie über das x rechts oben geschlossen wird:
Delphi-Quellcode:
procedure TModalform.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Showmessage('OnClose!');
end;

procedure TModalform.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Showmessage('FormCloseQuery!');
end;

procedure TModalform.FormDeactivate(Sender: TObject);
begin
  Showmessage('FormDeactivate!')
end;
Also der selbe Ablauf, wie über einen schliessen-Button oder wasauch immer.

Zitat:
Und wenn die Situation eintritt, dass das Fenster von Form1 nach vorne kommt, kann darin nicht geklickt werden (da die Form1 ja unterbrochen ist), sondern für den Anwender fühlt sich das son an, als wenn die Anwendung sich aufgehängt hat, bzw. das "sein Programm" (=> Form2) verschwunden ist. Mit dem ModalResult habe ich bisher nicht gearbeitet, weil ich damit keine Steuerung bauen wollte, sondern über den Mechanismus Form2.ShowModal sicherstellen wollte, dass der Anwender nur das "richtige" Fenster 2 verwendet.

Ich hoffe mal, dass mein Vorgehen nun etwas genauer herausgearbeitet ist.
Ja, das ist es. Wie Hoika geschrieben hat, solltest du herausfinden, wann und möglichst warum dieses Verhalten auftritt. Ich verwende dazu eine Stringliste, die ich beim Beenden abspeichere, so dass ich nach Beenden der Anwendung nachlesen kann, was in welcher Reihenfolge und mit welchen Werten abgearbeitet wurde.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat