if StatusBar1.Panels.Count < 2 then Exit;

解决方案 »

  1.   

    这段代码在逻辑上没有问题,出现访问错误一般是引用的非法的地址。
    所以我觉得你的错误可能是以下问题导致的:
    1,窗体创建的时候Application.OnHint:=DisplayHint
    2, 窗体Destroy的时候没有让Application.OnHint:=nil
    3, 当需要显示Hint时,程序仍企图调用已经被销毁的DisplayHint而导致错误
      

  2.   

    Application.OnHint := DisplayHint;这个有问题!Application的事件,在子窗体里面是只读!
      

  3.   

    在子窗体里面的Application的事件是只读,所以不能用
    Application.OnHint:=DisplayHint
      

  4.   

    我问你,是不是我的状态条只分为一栏,你把
    StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);改为
    StatusBar1.Panels[0].Text :=GetlongHint(Application.Hint);
                      ^
                      |
                  |注意这里|
      

  5.   

    StatusBar1.Panels.Count 为4(0-3)
    运行过程没出错,
    就在我退出或关闭窗体时出现以上错误,
    一点击就弹出,
    我是个初学者,只读指的是什么?
    中途动态修改HINT属性不行吗?
      

  6.   

    StatusBar1.Panels.Count 为4(0-3)
    运行过程没出错,
    就在我退出或关闭窗体时出现以上错误,
    一点击就弹出,
    我是个初学者,只读指的是什么?
    中途动态修改HINT属性不行吗?
      

  7.   

    试一下:
         
      public
        S:strig;
        procedure DisplayHint(Sender: TObject);
      end;procedure TForm4.DisplayHint(Sender: TObject);
    begin
      S:=GetlongHint(Application.Hint);
    end;procedure TForm4.FormCreate(Sender: TObject);
    begin
      Application.OnHint := DisplayHint;
    end;事件中:
    StatusBar1.Panels[1].Text := S
      

  8.   

    试过楼上的,错误还是一样,“在子窗体里面的Application的事件是只读,所以不能用
    Application.OnHint:=DisplayHint”那该如何修改呢?
      

  9.   

    你把Application.OnHint:=DisplayHint就放在主窗体中,
    子窗体不许要你写任何代码提示信息就可以显示在主窗体的StatusBar中.
      

  10.   


    procedure TMainForm.FormCreate(Sender: TObject);
    begin
      Application.OnHint := DisplayHint;
    end;procedure TMainForm.DisplayHint(Sender: TObject);
    begin
      StatusBar.SimpleText := GetlongHint(Application.Hint);
    end;子窗体中的VCL组件必须将ShowHint属性设置为TRUE,Hint属性填好你要显示的信息.
      

  11.   

    To:borlandor(五角▲大民) 
    我的子窗体中也有StatusBar1,
    由于信息比较多而且反馈给操作员,
    提示信息是和主窗体分开的,
    即各个窗体单独显示,
      

  12.   

    子窗口也可,只是如果是主窗口的提示信息也显示到子窗口了,不过可以先判别一下:
    unit CHILDWIN;interfaceuses Windows, Classes, Graphics, Forms, Controls, StdCtrls, ComCtrls;type
      TMDIChild = class(TForm)
        Memo1: TMemo;
        StatusBar: TStatusBar;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure DisplayHint(Sender: TObject);
      public
        { Public declarations }
      end;implementation{$R *.dfm}procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
    end;procedure TMDIChild.FormCreate(Sender: TObject);
    begin
      Application.OnHint := DisplayHint;
    end;procedure TMDIChild.DisplayHint(Sender: TObject);
    begin
      StatusBar.SimpleText := GetlongHint(Application.Hint);
    end;end.
      

  13.   

    其实那些窗体都是通过主窗体的菜单项进行显示的,
    并不是真正意义上的子窗体,
    光标停在StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);
    可能问题不在这,Panels[0~3]都有,
    会不会该窗体的procedure DisplayHint(Sender: TObject);
    和主窗体发生冲突,两边代码一样,
      

  14.   

    TO: inbud(清风侠) 
    为什么在主窗体中可以不使Application.OnHint:=nil,
    退出时可以,而二级窗体就不行呢?