报错'cannot change visible in onshow or onhide'
Posted delphi学习交流吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错'cannot change visible in onshow or onhide'相关的知识,希望对你有一定的参考价值。
问题描述:
关闭程序的时候需要修改modalresult值,
原来把加载的事件写在MailForm的onshow事件里总是报\'cannot change visible in onshow or onhide\';
解决方法:
不要把事件写在onshow里面,改到oncreate事件里即可:
关闭窗体通过修改modalresult值的方法:
procedure TFLogin.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Self.ModalResult=mrCancel then
begin
if MessageDlg(\'确定要退出?\',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
Self.close;
Application.Terminate
end
else
Self.ModalResult:=0;
end;
end;
procedure TFLogin.btn2Click(Sender: TObject);
begin
if MessageDlg(\'确定要退出?\',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
Self.ModalResult:=mrCancel; //关闭窗体
Application.Terminate; //结束程序
end
else
Self.ModalResult:=0; //停留在登陆窗口
end;
登录窗体,登陆成功判断并修改modalresult:
procedure TFLogin.btn1Click(Sender: TObject);
begin
with frmDataPool.qry用户账号表 do
begin
Close;
SQL.Text:=\'select * from 用户账号表 where admid = :admid \';
Parameters.ParamByName(\'admid\').Value:=edtAdmid.Text; //为admin参数赋值;
Open;
end;
if frmDataPool.qry用户账号表[\'admps\']=null then //如果账号查找不到,说明账号错
begin
ShowMessage(\'账号不存在\');
Exit;
end;
if frmDataPool.qry用户账号表[\'admps\'] <> edtadmps.Text then
begin
ShowMessage(\'密码错\');
exit;
end;
Self.ModalResult:=mrOk;//对话框mrok返回
ShowMessage(\'登录成功!\');
end;
参考答案:http://www.rwtext.com/text.asp?id=9731
【编译错误解析】提示Cannot change Visible in OnShow or OnHide 的原因及解决方法
Cannot change Visible in OnShow or OnHide 的意思是:不能在 OnShow 或OnHide事件中修改显示状态
OnShow ,OnHide 本身就是指定显示与否,不可以在这样的事件中用.Visible .
就比如吧Onshow中你用Form1.Visible := False , 事让窗体在显示的时候不显示,你这不是让编译器为难么?
这就是为什么可以在OnCreate中用,不能在OnShow中用.
以上是关于报错'cannot change visible in onshow or onhide'的主要内容,如果未能解决你的问题,请参考以下文章
git pull 报错 error: cannot pull with rebase: Your index contains uncommitted changes.
git pull 报错 error: cannot pull with rebase: Your index contains uncommitted changes.
git pull --rebase 报错 error: cannot pull with rebase: Your index contains uncommitted changes.
git pull --rebase 报错 error: cannot pull with rebase: Your index contains uncommitted changes.
TypeScript 执行 console.log() 报错Cannot find name ‘console‘. Do you need to change
ssh登录locale报错:cannot change locale (zh_CN.UTF-8): No such file or directory