1

对不起我的英语不好,首先这是注销语法。

当我单击注销时,所有活动表单都会继续显示而不是关闭。

procedure Tf_utama.KELUAR1Click(Sender: TObject);
begin
if MessageDlg('Logout ??',mtConfirmation,mbOKCancel,0)=mrOK 
then

DATAINPUTAN1.Visible:=False;
INFODATA1.Enabled:=False;
TRANSAKSI.Enabled:=False;
LAPORAN1.Enabled:=False;
PENGATURAN1.Enabled:=False;

f_databuku:=nil;
f_rakbuku:=nil;
f_permintaan_pembeli:=nil;
f_rakbuku:=nil;
f_pengguna:=nil;
f_transaksi_penjualan:=nil;
f_transaksi_pembelian:=nil;
f_supplier:=nil;

StatusBar1.Panels[0].Text:='Nama Pengguna :';
StatusBar1.Panels[1].Text:='Hak Akses :';
end;

在每个要关闭的表单上,我正在使用:

procedure Tf_caribuku.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
f_caribuku:=nil;
end;
4

1 回答 1

0

这不是您关闭和释放表单的方式。您只是分配nil给表单指针,它不会关闭它们。您必须调用的是TForm.Close(). 此外,如果您想在满足语句的情况下执行多个命令,则必须if MessageDlg(...使用块打开语句。begin..end;所以你的代码看起来像这样:

procedure Tf_utama.KELUAR1Click(Sender: TObject);
begin
  if MessageDlg('Logout ??',mtConfirmation,mbOKCancel,0) = mrOK then 
  begin 
    DATAINPUTAN1.Visible:=False;
    INFODATA1.Enabled:=False;
    TRANSAKSI.Enabled:=False;
    LAPORAN1.Enabled:=False;
    PENGATURAN1.Enabled:=False;

    f_databuku.Close;
    f_rakbuku.Close;
    f_permintaan_pembeli.Close;
    f_rakbuku.Close;
    f_pengguna.Close;
    f_transaksi_penjualan.Close;
    f_transaksi_pembelian.Close;
    f_supplier.Close;

    StatusBar1.Panels[0].Text:='Nama Pengguna :';
    StatusBar1.Panels[1].Text:='Hak Akses :';
  end;
end;

另外,如果没有创建您尝试关闭的任何表单,我相信它会因 AV 异常而失败。更好的方法是创建另一个类作为表单容器,例如TFormContainer,您可以根据需要添加和删除表单。这样,在注销时,打开的表格将在TFormContainer课堂上,您可以关闭它们。

于 2014-05-24T09:22:09.657 回答