D6教授德尔福:如何让我自己的提示窗口?
我们有一个特殊的应用程序与特殊的网格。它有一个HintWindow可以显示不能放在单元格中的其他信息。例如长备忘录。 将鼠标移动到单元格时,它将等待2秒钟,并显示信息。
这个主题的问题是HintWindow工作不正常,或者与正常的“提示”一样。
普通提示正在出现,并且它们正在消失在这些情况下: - 提示表示时间ellapsed - 的活性形式被去激活 - 一种新的形式示出 - 应用被另一任务(Alt + Tab)代替
但是我们的HintWindow无法检测到新窗体显示或应用程序已更改 - 它一直保留在顶部,直到出现失败。时间... :-(
,我们用“的MouseMove”来检测鼠标变化的另一个问题 - 。开始提示
此事件也发生如果HintWindow消失,所以,我需要防范环秀与此代码:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Caption := INtTOStr(X) + ' ' + IntToStr(Y) + ' ' + IntToStr(GetTickCount);
// If same coordinate I don't show it again
if (LX <> X) or (LY <> Y) then begin
miHint.DoActivateHint(Self, 'Anytext', 2000, 2000);
LX := X; LY := Y;
end;
end;
没有这个LX,LY的HintWindow周期性出现,dissappears
所以:我们需要知道我们是如何作出这样的工作在相同的方法类似应用HintWindow“提示“,但只限于这个网格 它必须关闭“任务更改”,“更改格式”。怎么做?
感谢您的帮助: DD
唉唉......我忘了说,这个控制是一个虚拟的网格,不是基于在VCL网格上 - 它基于自定义控件。 所以提示来自这个班级。 但是:我不想使用任何控件时可见的“正常”提示。我想让这些细胞给出信息。所以我需要抓住光标移动。 – durumdara 2010-08-23 09:52:09
@durumdara - >“需要捕捉游标移动” - 传递给'OnShowHint'事件的'HintInfo'已经有了游标位置,我描述的实现使用它来定位'提示'将会在哪个单元格上。我现在也提供了一些指向文档的链接。读一下他们... – 2010-08-23 10:08:50