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.