定义的提示(Hint)为什么不能显示?(50分)

  • 主题发起人 主题发起人 j5203
  • 开始时间 开始时间
J

j5203

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个自定义的提示(Hint)组件Tp,以下是它的创建过程
如果我把self.Enabled=True的条件去掉,运行时我自定义的Hint就可以正常显示
如果照我下面的写法,即使我手动把Enabled设为真,运行时我自定义的Hint也不能显示,
请问这是为什么?
constructor Tp.Create(AOwner: TComponent);
begin
inherited;
//FMyHintWindow.create(self);
if (not (csDesigning in ComponentState)) and (self.Enabled=True) then
HintWindowClass := TMyHintWindow;
end;
 
set [8D]showhint=true
 
[?]我知道了,应该在 HintWindowClass := TMyHintWindow;前面和后面加上application:=False;
和application:=True;两句。但我还是不明白,写成
constructor Tp.Create(AOwner: TComponent);
begin
inherited;
if not (csDesigning in ComponentState) then
HintWindowClass := TMyHintWindow;
end;
Hint就可以更改。而在这种情况下,我并没有禁止老的提示窗口工作呀,为什么
就可以更换提示窗口了呢?
 
我的Delphi在Win2k下,有时自己的Hint也不能显示,特别是在构件面板上不能显示,
为了知道构件名称只有放在FORM上才知道,有什么原因吗?
 
[?][?][?][?][?][?][?][?][?][?][?]
为什么没人回答?是我没说明白吗?我是说,如果你要要把提示窗口变成你自定义的,正常的
写法是
application.showhint := False;//步骤1:禁止老的提示窗口工作
HintWindowclass := TMyHintWindow; //步骤2:把提示窗口变成你自定义的
application.showhint := True;//步骤3:允许新的提示窗口工作
而我原来的程序没有步骤1和3就更改了提示窗口,这是为什么?
原来的程序中如果我把self.Enabled=True的条件加上,变成
if (not (csDesigning in ComponentState)) and (self.Enabled=True) then
提示窗口就无法更改了,这又是为什么?
 
多人接受答案了。
 
后退
顶部