用OnCloseQuery事件。 procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=False; if ShowMessage('确实要关闭吗?') then CanClose:=true; end;
改一下楼上的。 用OnCloseQuery事件。 procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=False; if Application.Message('确实要关闭吗?','请确认',MB_YESNO+MB_IconQuestion)=IDYES then CanClose:=true; end;
function Form1.PrintExist: boolean; var LstTemp: TStrings; begin LstTemp := TStringList.Create; try LstTemp.Clear; LstTemp.Assign(Printer.Printers); if LstTemp.CommaText = '' then Result := False else Result := True; finally LstTemp.Free; end; end;
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=FALSE;
end;
第二个问题:
用API函数
1:如果你用的是关闭按牛,那么你可以写他的click事件
用messagebox判断你点的是ok还是cancel,这样就可以控制是否退出了 肯定ok你的第一个问题!
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False;
if ShowMessage('确实要关闭吗?') then
CanClose:=true;
end;
用OnCloseQuery事件。
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False;
if Application.Message('确实要关闭吗?','请确认',MB_YESNO+MB_IconQuestion)=IDYES then
CanClose:=true;
end;
var
LstTemp: TStrings;
begin
LstTemp := TStringList.Create;
try
LstTemp.Clear;
LstTemp.Assign(Printer.Printers);
if LstTemp.CommaText = '' then
Result := False
else
Result := True;
finally
LstTemp.Free;
end;
end;