关于Hint问题(急、急、急、急、急、急、急、急) if StatusBar1.Panels.Count < 2 then Exit; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这段代码在逻辑上没有问题,出现访问错误一般是引用的非法的地址。所以我觉得你的错误可能是以下问题导致的:1,窗体创建的时候Application.OnHint:=DisplayHint2, 窗体Destroy的时候没有让Application.OnHint:=nil3, 当需要显示Hint时,程序仍企图调用已经被销毁的DisplayHint而导致错误 Application.OnHint := DisplayHint;这个有问题!Application的事件,在子窗体里面是只读! 在子窗体里面的Application的事件是只读,所以不能用Application.OnHint:=DisplayHint 我问你,是不是我的状态条只分为一栏,你把StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);改为StatusBar1.Panels[0].Text :=GetlongHint(Application.Hint); ^ | |注意这里| StatusBar1.Panels.Count 为4(0-3)运行过程没出错,就在我退出或关闭窗体时出现以上错误,一点击就弹出,我是个初学者,只读指的是什么?中途动态修改HINT属性不行吗? StatusBar1.Panels.Count 为4(0-3)运行过程没出错,就在我退出或关闭窗体时出现以上错误,一点击就弹出,我是个初学者,只读指的是什么?中途动态修改HINT属性不行吗? 试一下: 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 试过楼上的,错误还是一样,“在子窗体里面的Application的事件是只读,所以不能用Application.OnHint:=DisplayHint”那该如何修改呢? 你把Application.OnHint:=DisplayHint就放在主窗体中,子窗体不许要你写任何代码提示信息就可以显示在主窗体的StatusBar中. 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属性填好你要显示的信息. To:borlandor(五角▲大民) 我的子窗体中也有StatusBar1,由于信息比较多而且反馈给操作员,提示信息是和主窗体分开的,即各个窗体单独显示, 子窗口也可,只是如果是主窗口的提示信息也显示到子窗口了,不过可以先判别一下: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. 其实那些窗体都是通过主窗体的菜单项进行显示的,并不是真正意义上的子窗体,光标停在StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);可能问题不在这,Panels[0~3]都有,会不会该窗体的procedure DisplayHint(Sender: TObject);和主窗体发生冲突,两边代码一样, TO: inbud(清风侠) 为什么在主窗体中可以不使Application.OnHint:=nil,退出时可以,而二级窗体就不行呢? 如何获得cxgrid的列名! 【请教】尝试读取或写入受保护的内存。这通常指示其他内存已损坏 delphi7中使用了XPManifest控件后怎样取消panel的透明状态? DevExpress控件的安装问题!!! 哪一位大侠可以帮我把下面的翻译成DELPHI,关于SNMP的 急求..XP(1024*768)下设计的界面为什么跑到98(1024*768)下显示乱了? 为什么我的ToolBar上的ToolButton宽度不能够调整? 画图去除以前画的内容. 100个大洋,急需一个报表的组件 有关CreateProcess的问题 一定要这么痛苦吗? win2000为什么老是自动共享所有盘符??
所以我觉得你的错误可能是以下问题导致的:
1,窗体创建的时候Application.OnHint:=DisplayHint
2, 窗体Destroy的时候没有让Application.OnHint:=nil
3, 当需要显示Hint时,程序仍企图调用已经被销毁的DisplayHint而导致错误
Application.OnHint:=DisplayHint
StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);改为
StatusBar1.Panels[0].Text :=GetlongHint(Application.Hint);
^
|
|注意这里|
运行过程没出错,
就在我退出或关闭窗体时出现以上错误,
一点击就弹出,
我是个初学者,只读指的是什么?
中途动态修改HINT属性不行吗?
运行过程没出错,
就在我退出或关闭窗体时出现以上错误,
一点击就弹出,
我是个初学者,只读指的是什么?
中途动态修改HINT属性不行吗?
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
Application.OnHint:=DisplayHint”那该如何修改呢?
子窗体不许要你写任何代码提示信息就可以显示在主窗体的StatusBar中.
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属性填好你要显示的信息.
我的子窗体中也有StatusBar1,
由于信息比较多而且反馈给操作员,
提示信息是和主窗体分开的,
即各个窗体单独显示,
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.
并不是真正意义上的子窗体,
光标停在StatusBar1.Panels[1].Text :=GetlongHint(Application.Hint);
可能问题不在这,Panels[0~3]都有,
会不会该窗体的procedure DisplayHint(Sender: TObject);
和主窗体发生冲突,两边代码一样,
为什么在主窗体中可以不使Application.OnHint:=nil,
退出时可以,而二级窗体就不行呢?