Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fenster schließt sich nicht

  Alt 17. Apr 2023, 01:26
OK, hab nur nach Close geguckt.


Seh ich es richtig, oder verändert dieses Mistteil von CloseModal bösartig das ModalResult?
Von mrCancel zu mrNone, worauf dann wirklich die Form nicht mehr geschlossen wird.

Wer denkt sich soeinen Scheißdreck aus?


https://quality.embarcadero.com/brow...2CloseModal%22


Delphi-Quellcode:
procedure TCustomForm.Close;
var
  CloseAction: TCloseAction;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel <<<<<<<<<<<
  else
    if CloseQuery then
    begin
      if FormStyle = fsMDIChild then
        if biMinimize in BorderIcons then
          CloseAction := caMinimize else
          CloseAction := caNone
      else
        CloseAction := caHide;
      DoClose(CloseAction);
      if CloseAction <> caNone then
        if Application.MainForm = Self then Application.Terminate
        else if CloseAction = caHide then Hide
        else if CloseAction = caMinimize then WindowState := wsMinimized
        else Release;
    end;
end;
Delphi-Quellcode:
function TCustomForm.ShowModal: Integer;
begin
  ...
        ModalResult := 0;
        repeat
          ...
          Application.HandleMessage;
          if Application.Terminated then ModalResult := mrCancel else
            if ModalResult <> 0 then CloseModal;
        until ModalResult <> 0;
Echt mal, warum kann man nicht an der Stelle einen Kommentar rein tun?
Also dass Teile aus dem Else "hier" oben auch gemacht werden, nur nicht hier, sondern erst später in ShowModal->CloseModal, vorm Ende der Schleife. (außer wenn Terminated)



Das protected CloseModal (mich wundert echt, dass es nicht private ist) wird/sollte man sowieso nicht selber aufrufen. Es bleibt beim Close.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Apr 2023 um 12:44 Uhr)
  Mit Zitat antworten Zitat