zoukankan      html  css  js  c++  java
  • 报错'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中用.

  • 相关阅读:
    docker 学习
    grpc 学习
    ubuntu 完全干净的卸载docker
    numpy学习
    2020年假期sql excel文件 获取
    (a2b_hex)binascii.Error: Non-hexadecimal digit found
    数据库索引学习
    网络基础之网络协议
    Day11 进程相关
    基于socket套接字的网络通讯
  • 原文地址:https://www.cnblogs.com/ddxxxb/p/7079861.html
Copyright © 2011-2022 走看看