delphi do not allow form to be closed
type
TForm1 = class(TForm)
private
fCloseButtonEnabled: Bool;
procedure SetCloseButtonEnabled(const Value: Bool);
public
property CloseButtonEnabled: Bool read fCloseButtonEnabled write SetCloseButtonEnabled;
end;
procedure TForm1.SetCloseButtonEnabled(const Value: Bool);
var
hSysMenu: HMENU;
begin
fCloseButtonEnabled := Value;
hSysMenu:= GetSystemMenu(Self.Handle, False);
if hSysMenu <> 0 then begin
if Value then
EnableMenuItem(hSysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED)
else
EnableMenuItem(hSysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
DrawMenuBar(Self.Handle);
end;
end;
procedure TMain_Form.FormKeyDown(Sender: TObject; var Key: Word; shift: TShiftState);
begin
if ((not fCloseButtonEnabled) and (Key = VK_F4) and (ssAlt in Shift)) then
Key := 0;
end;