高分求救,窗体有模显示以后,free了也不能执行下面的语句吗

chenliang2001 2004-04-17 04:47:58
高分求救,窗体有模显示以后,free了也不能执行下面的语句吗,我是在工程文件里写的,比如frmlogo:=tfrmlogo.creat(application);
frmlogo.ShowModal;
frmlogo.updata;
然后在frmlogo的单击事件中写frmlogo.free;
还有就是检查用户名密码的问题,其实我让窗体有模显示都是为了检查用户名密码的问题
...全文
45 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiirii 2004-04-18
  • 打赏
  • 举报
回复
>>然后在frmlogo的单击事件中写frmlogo.free;
改成 frmlogo.close;

其它,修改如下:
begin
Application.Initialize;
Application.Title := '房屋中介管理系统';

frmlogo:=tfrmlogo.Create(application);
frmlogo.Show; //这行修改
frmlogo.Update;

frmfuwu:=tfrmfuwu.Create(application);
frmfuwu.ShowModal;

if mycom.fuwubool then
begin
frmdenglu:=tfrmdenglu.Create(application);
frmdenglu.ShowModal;

if mycom.denglubool then
begin
Application.CreateForm(TFrmmain, Frmmain);
Application.Run;
end;
end
if assigned(frmdenglu) then FreeAndNil(frmdenglu);
if assigned(frmfuwu) then freeAndNil(frmfuwu);

end.

//你的代码,逻辑很混乱!!!
upingking 2004-04-18
  • 打赏
  • 举报
回复
不要让工程自动创建你的登陆窗体,手动创建即可。否则窗体是不会free的,即使free了,最后关闭程序时也会处地址错误。
miky 2004-04-18
  • 打赏
  • 举报
回复
ShowModal后,程序会挂起,等待Modal窗口返回。
把你的判断代码放到那个Modal窗口里。

给个例子你看看:

class function TfrmLogin.Execute:Boolean;
begin
with TfrmLogin.Create(Application) do ShowModal;
Result := IsLogined;
end;

procedure TfrmLogin.Button1Click(Sender: TObject);
begin
Inc(FLoginTimes);
With frmMain.ADOQuery do
begin
try
SQL.Clear;
SQL.Add(Format(SGetPassWordSQL,[cmbUserName.text]));
Open;

if RecordCount = 0 then
begin
MessageBox(Handle,Pchar(SInvalidUserName),Pchar(Application.Title),
MB_OK or MB_ICONSTOP);
exit;
end;

if edtPassword.Text = Fields.FieldByName('UserPassword').AsString then
begin
IsLogined := True;
strUserName := cmbUserName.text;
Self.Close;
exit;
end;
finally
Close;
end;
end;
if FLoginTimes = 3 then
begin
MessageBox(Handle,Pchar(S3Times),PChar(Application.Title),MB_OK or MB_ICONSTOP);
Self.Close;
end
else begin
MessageBox(Handle,Pchar(SInvalidPassword),Pchar(Application.Title),MB_OK or MB_ICONSTOP);
EdtPassword.SetFocus;
EdtPassword.SelectAll;
end;
end;
chenliang2001 2004-04-18
  • 打赏
  • 举报
回复
可是楼上的大哥,ShowModal;以后就不执行了怎么办
nicolas2003 2004-04-17
  • 打赏
  • 举报
回复
TDengLu.Create(Application).ShowModal;
if bDenglu = true then(在登陆窗口里定义一个bDenglu来判断密码是否正确)
begin
Application.CreateForm(TFormMain, FormMain);
Application.Run;
end;

在登陆窗口的确定按钮里写
procedure TDengLu.QuedingClick(Sender: TObject);
begin
判断密码是否正确
if 正确 then bDenglu:=true
else 提示密码不正确
end;
chenliang2001 2004-04-17
  • 打赏
  • 举报
回复
请楼上的老兄说清楚一点,最好写出代码,先谢谢了,什么时候返回frmdenglu.showmodal=mrok
是frmdenglu显示以后就返回mrok吗,小弟才学DELPHI,让各位见笑了
Tensionli 2004-04-17
  • 打赏
  • 举报
回复
同意楼上,先判断再释放
myart 2004-04-17
  • 打赏
  • 举报
回复

frmdenglu
中判断密码是否正确
如果正确返回一个值
不正确返回一个值
if frmdenglu.showmodal=mrok then

else
chenliang2001 2004-04-17
  • 打赏
  • 举报
回复
不是啊,请看下边的代码



program FANGWU;

uses
Forms,
MAIN in 'MAIN.pas' {Frmmain},
DENGLU in 'DENGLU.pas' {Frmdenglu},
FUWU in 'FUWU.pas' {Frmfuwu},
MYCOM in 'MYCOM.pas',
LOGO in 'LOGO.pas' {FRMLOGO};

{$R *.res}

begin
Application.Initialize;
Application.Title := '房屋中介管理系统';

frmlogo:=tfrmlogo.Create(application);
frmlogo.ShowModal;
frmlogo.Update;

frmfuwu:=tfrmfuwu.Create(application);
frmfuwu.ShowModal;
frmfuwu.Update;
if mycom.fuwubool=TRUE then
begin
frmdenglu:=tfrmdenglu.Create(application);
frmdenglu.ShowModal;
frmdenglu.Update;

if mycom.denglubool=TRUE then
begin
Application.CreateForm(TFrmmain, Frmmain);
Application.Run;
end;
end
else
application.Terminate;

end.
insert2003 2004-04-17
  • 打赏
  • 举报
回复
Free

要显示再

creat

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧