Probleme mit OnClose

Für Fragen von Einsteigern und Programmieranfängern...

Probleme mit OnClose

Beitragvon jrx » 17. Feb 2018, 00:30 Probleme mit OnClose

Hallo

ich hab ein Programm mit 2 Formularen, beide sind gleich zu Programmstart vorhanden (automatisch erzeugt)
Das Hauptprgamm ruft das andre Formular mit Form2.ShowModal auf.

Code: Alles auswählen
 procedure TForm2.Button1Click(Sender: TObject);
begin
  close;
end;


Der Click auf den Button funktioniert nicht mehr.

Wenn ich den Debugger bemühe, geht der Cursor bei ModalResult:=mrCancel.
Code: Alles auswählen
procedure TCustomForm.Close;
var
  CloseAction: TCloseAction;
  IsMainForm: Boolean;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel
  else
  begin
    if CloseQuery then
    begin     


Trotzdem wird das Fenster nicht geschlossen.

Ich habe meine Version geupdattet. Seit dem gehts nicht mehr.
Lazarus 1.6.4 r54278 FPC 3.0.2 x86_64-win64-win32/win64
vorher hatte ich was ca. 2 Jahre altes (genau weiß ich die Version nicht mehr).
Da ging's aber noch.

Wenn ich ein neues Project anlege, dann geht alles wie gewohnt, an der Installation kann es eigentlich nicht liegen.

Kann mir bitte jemand einen Tipp geben?

Grüe
jrx
jrx
 
Beiträge: 40
Registriert: 14. Mai 2010, 12:23
Wohnort: Erlangen
OS, Lazarus, FPC: Lazarus 1.8.0 r56594 FPC 3.0.4 i386-win32-win32/win64 | 
Nach oben

Beitragvon wp_xyz » 17. Feb 2018, 10:21 Re: Probleme mit OnClose

Funktioniert bei mir einwandfrei (Laz 1.8/FPC 3.04 32 bit, Win10 64 bit). Auch mit Laz 1.6.4

Aber warum schließt du das modale Formular überhaupt per "Close"? Du musst nur dem Button, der das Formular schließen soll, im Objektinspektor ein ModalResult <> mrNone geben, dann geht der Rest automatisch, ohne eine Zeile Code.

Und wenn du schon updatest, warum nicht gleich auf die aktuelle Version (1.8)?
wp_xyz
 
Beiträge: 2695
Registriert: 8. Apr 2011, 08:01

Beitragvon jrx » 18. Feb 2018, 00:00 Re: Probleme mit OnClose

Oops - Heise/Download als meine primäre Sekundärquelle ist nicht ganz aktuell.

Leider hat aber die Neuinstallation nichts geändert.
Ich lass das Form jetzt zur Laufzeit generieren, dann geht's.
Die Ursache ist mir aber trotzdem unklar.
jrx
 
Beiträge: 40
Registriert: 14. Mai 2010, 12:23
Wohnort: Erlangen
OS, Lazarus, FPC: Lazarus 1.8.0 r56594 FPC 3.0.4 i386-win32-win32/win64 | 
Nach oben

Beitragvon wp_xyz » 18. Feb 2018, 00:19 Re: Probleme mit OnClose

jrx hat geschrieben:Oops - Heise/Download als meine primäre Sekundärquelle ist nicht ganz aktuell.

Und warum nimmst du nicht https://www.lazarus-ide.org/index.php?page=downloads als primäre Primärquelle?

jrx hat geschrieben:Leider hat aber die Neuinstallation nichts geändert.
Ich lass das Form jetzt zur Laufzeit generieren, dann geht's.
Die Ursache ist mir aber trotzdem unklar.

Mir auch. Aber ohne den gesamten Code zu sehen, kann ich nicht helfen.
wp_xyz
 
Beiträge: 2695
Registriert: 8. Apr 2011, 08:01

Beitragvon jrx » 20. Feb 2018, 17:20 Re: Probleme mit OnClose

Den ganzen Code kann ich ja nicht hochladen. So richtig geht's auch immer noch nicht (verschiedene Rechner).

Hier Fragmente:
Code: Alles auswählen
Hide;
KF:=TfrmScreenKeybrd.Create(self);
KF.Titel:='MP3 suchen';
KF.footer:='Datenbank';
KF.ERG:='*';
KF.SetColors(ColorStat,ClockStat,BtnStat);
KF.ShowModal;
FctOK:= KF.OK;
s:=KF.ERG;
Show;
Top := KF.Top;
Left := KF.Left;
KF.Destroy


Da Hauptprogrammfenster wird ausgeschalten und TfrmScreenKeybrd als Formular geladen. Es bekommt ein paar Infos mit und zeigt sich dann.
Jetzt geb ich was ein in meinem Formular (s.u.) Wenn ich nun beende , werden Variablen zurückgegeben und das Hauptprogramm wieder auftauchen.
Die Position wird neu festgelegt, falls das Unterformular mit der Maus verschoben wurde und dann wird der Formular beendet.

Im Subformular:
Code: Alles auswählen
procedure TfrmScreenKeybrd.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
   if Shift = [] then
    case key of
      VK_ESCAPE, VK_LEFT: bLeft.Click;
      VK_DOWN: bDown.Click;
      VK_UP: bUp.Click;
      VK_RIGHT: bRight.Click;
      13:
      begin
        OK := True;
        Close;
      end;
  end;
  //ShowMessage(IntToStr(key));
  { TODO : Text/Kommas etc per Tasteneingabe ermöglichen }
end;           


bLeft.Click und bRight.Click sind wie "case 13:" mit paar mehr Zeilen. "Close" generiert auch ein Modalresult:=mrCancel, falls noch keines vergeben wurde.
Nicht mal ein Klick auf das Windows-Fenster-X funktioniert. Das Formular ist praktisch nur über den Debugger oder dem Taskmanager abzuwürgen.
Irgendwas ist verstellt, blos was?

So oder So wird das Formular nicht beendet , ein 2. Formular mit ähnlicher Konstellation funktioniert.
In meinen beiden Quellen sehe ich keine prinzipiellen Unterschiede, es muss also irgendwo im "nicht-transparenten" zu finden sein.

jrx
jrx
 
Beiträge: 40
Registriert: 14. Mai 2010, 12:23
Wohnort: Erlangen
OS, Lazarus, FPC: Lazarus 1.8.0 r56594 FPC 3.0.4 i386-win32-win32/win64 | 
Nach oben

Beitragvon wp_xyz » 20. Feb 2018, 17:58 Re: Probleme mit OnClose

Hast du vielleicht vergessen das "KeyPreview" des 2.Formulars zu aktivieren? Das würde erklären, dass die ENTER-Taste nicht verarbeitet wird, es würde allerdings nicht erklären, warum du das Formular überhaupt nicht mehr schließen kannst. Gibt es einen Handler für "OnCloseQuery", der das Schließen verbietet?
wp_xyz
 
Beiträge: 2695
Registriert: 8. Apr 2011, 08:01

Beitragvon jrx » 20. Feb 2018, 22:55 Re: Probleme mit OnClose

in der Tat war keyPreview:=False;
Eigentlich hätte es trotzdem funktionieren müssen, weil keine Childcontrols drin sind.
Nur TPanel, TLabel und TSpeedButton.

Jetzt geht es (zumindest auf dem einen Rechner Win10/64). Es sollte ja aber dann auch auf dem anderen Win7/32 gehen.

Danke
jrx
jrx
 
Beiträge: 40
Registriert: 14. Mai 2010, 12:23
Wohnort: Erlangen
OS, Lazarus, FPC: Lazarus 1.8.0 r56594 FPC 3.0.4 i386-win32-win32/win64 | 
Nach oben

Beitragvon wp_xyz » 21. Feb 2018, 00:41 Re: Probleme mit OnClose

Tja... Mein nach deinen Angaben zusammengeschustertes Testprogramm läuft sowohl auf Win10 als auf Win7. Das Problem wird wohl irgendwo anders liegen.
wp_xyz
 
Beiträge: 2695
Registriert: 8. Apr 2011, 08:01

Beitragvon jrx » 27. Feb 2018, 12:36 Re: Probleme mit OnClose

wp_xyz hat geschrieben:Das Problem wird wohl irgendwo anders liegen.

Zwischen meinen Ohren hab ich schon geschaut.
jrx
 
Beiträge: 40
Registriert: 14. Mai 2010, 12:23
Wohnort: Erlangen
OS, Lazarus, FPC: Lazarus 1.8.0 r56594 FPC 3.0.4 i386-win32-win32/win64 | 
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried