untuk menghindari pentutpan form yang tidak sengaja, kita dapat melakukan dengan antisipasi yaitu sebuah pertanyaan apakah form tersebut benar benar ingin ditutup. Dalam delphi ada sebuah event yang bertanggung jawab dalam masalah ini. Event ini berjalan sesaat sebelum event OnClose.
Event ini namanya event OnCloseQuery. Sehingga kita harus menempatkan pertanyaan atau konfirmasi pada event ini. dengan mengelolah parameter CanClose. Parameter ini secara default bernilai True artinya form jadi ditutup. CanClose kita ubah nilanya menjadi false, kemudian kita berikan pertanyaan jika user memilih jawaban yes form ditutup maka nilai canclose kita ubah menjadi true.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose :=false;
if MessageDlg('Form mau ditutup... sekarang.. ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CanClose :=true;
end;
end;
begin
CanClose :=false;
if MessageDlg('Form mau ditutup... sekarang.. ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CanClose :=true;
end;
end;
Sepertinya penjelasan ini membikin pusing saja apabila tidak disertakan contoh. untuk itu mari kita bikin aplikasi baru. kemudian tambahkan perintah pada ivent OnCloseQuery. lebih detailnya ada pada listing berikut ini.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false;
if MessageDlg('Form mau ditutup... sekarang.. ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CanClose:=true;
end;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false;
if MessageDlg('Form mau ditutup... sekarang.. ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CanClose:=true;
end;
end;
end.
Jalankan aplikasi kemudian tutup aplikasi, pilih jawaban no kemudian tutup aplikasi sekali lagi kemudian pilih yes...
selamat mencoba
0 komentar:
Posting Komentar