请问下面这段代码,要关闭当前的form4后再显示另一个form1,但是我发现关闭不了,请问是什么原因?
...
form4.close;
form4.free;
form1.show;
...
...
form4.close;
form4.free;
form1.show;
...
解决方案 »
- 如何取得本机的唯一标识?
- Socket问题:可否java做server,delphi做client
- 有没有返回文件夹所在路径的方法??
- 在StringGrid自动换行的时候为什么出现了字迹模糊情况?
- 请教如何通过域名得到IP
- 怎么读取oracle的blob类型字段?
- 电脑卖了2500块大洋~~~散分!!!
- 如何获取分配给ADSL的动态IP地址?如何和已经申请的域名动态连接? --急急急
- 我想做一个文档管理器,不知道如何下手?who can help me?
- 真的很抱歉,Delphi自带的Docking的例子,我看不太明白,如果那里有介绍,请告之,谢谢。
- 问题?????急急急!!!!!
- FASTREPORT的DEMO里能将报表打印成一行灰色底,一行白色底的样式,要设置那个属性呢?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls,frmFull,unit1, Db, ADODB;type
TForm4 = class(TForm)
imgAthena: TImage;
lblUserName: TLabel;
lblPassword: TLabel;
edtUserName: TEdit;
edtPassWord: TEdit;
btnOK: TButton;
btnCancel: TButton;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure edtUserNameKeyPress(Sender: TObject; var Key: Char);
procedure edtPassWordKeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
//procedure edtPassWordChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form4: TForm4;implementation{$R *.DFM}procedure TForm4.btnOKClick(Sender: TObject);
begin//==============打开oracle记录集
DataSet.Connection:=Cnn;
DataSet.CommandText:='select * from pwd where usrname='''+ edtUserName.Text +''' and passwd=''' + edtPassWord.Text + '''';
DataSet.Open;
if DataSet.RecordCount=1 then
begin
dataset.Close;
form4.ModalResult:=1; form4.close;
form4.free;
form1.show;
end
else
begin
application.MessageBox('用户名或!'+#13+#10+'密码不正确!!','测试程序',0);
end
end;procedure TForm4.btnCancelClick(Sender: TObject);
begin
application.Terminate;
end;procedure TForm4.edtUserNameKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
if UpperCase(Sender.ClassName) <> UpperCase('TDBGrid') then begin
Key := #0;
PerForm(WM_NEXTDLGCTL,0,0);
end;
end;
if Key = #27 then close;
end;procedure TForm4.edtPassWordKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
btnok.Click;
end;
end;procedure TForm4.FormActivate(Sender: TObject);
begin
edtUserName.SetFocus;
//edtPassWord.SetFocus ;
end;procedure TForm4.FormCreate(Sender: TObject);
begin
form4.top:=(screen.Height-form4.Height) div 2;
form4.Left:=(screen.Width-form4.width) div 2;
end;end.
form4 := Tform4.create(...);或application.createforom(form4,tform4);如果,这样调用
frm : Tform4;
...
frm := Tfrom4.create(application);
frm.showmodal;
你的代码肯定是错误的。
那么,请斧正
Action := caFree;
在onClose 方法里写代码:
Action := caFree;
要使普通的SDI窗体的话就直接Close就可以了
Fm.ShowModal;
if Fm.ModalResult<>mrOK then halt;
Fm.Free;
from1 show
close 之后的语句可能不会执行了吧,个人认为,可以做个实验阿
form4.ModalResult:=1;这条语句有问题(语法没有问题)
程序执行到这里的时候就返回了,后面的代码不会被执行.可以把后面的代码放到前面或方到调用这个窗体的的语句之后.