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