Fix more potential theme related EAccessViolation's, due to Action:=caFree in OnClose event of modal forms. Their caller now frees these modal forms. In non-modal forms, keep caFree in OnClose but remove existing OnDestroy events, moving code to OnClose instead.

https://www.heidisql.com/forum.php?t=38043
https://stackoverflow.com/questions/2075405/how-to-close-non-modal-form-in-delphi
This commit is contained in:
Ansgar Becker
2021-06-22 20:37:34 +02:00
parent 963085463d
commit cb1024b048
23 changed files with 56 additions and 134 deletions

View File

@ -32,7 +32,6 @@ type
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
procedure TreeElementsInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode;
var ChildCount: Cardinal);
procedure FormDestroy(Sender: TObject);
procedure TreeElementsChecked(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnRecentFiltersClick(Sender: TObject);
@ -75,14 +74,6 @@ begin
end;
procedure TCopyTableForm.FormDestroy(Sender: TObject);
begin
// Save GUI stuff
AppSettings.WriteInt(asCopyTableWindowWidth, Width);
AppSettings.WriteInt(asCopyTableWindowHeight, Height);
end;
procedure TCopyTableForm.FormResize(Sender: TObject);
var
HalfWidth: Integer;
@ -193,7 +184,9 @@ begin
AppSettings.WriteString(asCopyTableRecentFilter, NewValues[i], IntToStr(i));
end;
end;
Action := caFree;
// Store GUI setup
AppSettings.WriteInt(asCopyTableWindowWidth, Width);
AppSettings.WriteInt(asCopyTableWindowHeight, Height);
end;