请问下面这段代码,要关闭当前的form4后再显示另一个form1,但是我发现关闭不了,请问是什么原因?
...
form4.close;
form4.free;
form1.show;
...
...
form4.close;
form4.free;
form1.show;
...
解决方案 »
- 送分
- 控件运行时有什么好处?
- 请教函数SendTo那个单元中定义?
- edit的简单问题
- 新手入门
- 我用application.messagebox(edit_memo.text,'提示信息',mb_ok+mb_iconinformation);我想让消息窗口的内容为edit_memo中的所输入的。但是
- 怎样在另一FORM里调用UNIT的一个函数,并给他这样的输入参数:已打开的的ADO数据库表、已初始化的树视图控件,还有数据库的字段
- 很菜的问题:怎样给一个类添加自定义函数?很容易拿分
- 如何得到Flash图像的大小?????
- TBatchMove?
- 问题?????急急急!!!!!
- 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;这条语句有问题(语法没有问题)
程序执行到这里的时候就返回了,后面的代码不会被执行.可以把后面的代码放到前面或方到调用这个窗体的的语句之后.