D6 教授
特別なグリッドを備えた特別なアプリケーションがあります。セルに配置できない他の情報を表示できる HintWindow があります。たとえば、長いメモ。マウスをセルに移動すると、2 秒間待機し、情報が表示されます。
HintWindow が正常に動作しない、または通常の「ヒント」と同じように動作しないというこのテーマの問題。
通常のヒントが表示され、次の場合には消えます: - 時間の経過を示すヒント - アクティブなフォームが非アクティブ化されている - 新しいフォームが表示されている - アプリケーションが別のタスクに置き換えられている (ALT + TAB)
しかし、HintWindow は新しいフォームが表示されていること、またはアプリケーションが変更されたことを検出できません。時間... :-(
マウスの変化を検出するために "MouseMove" を使用したもう 1 つの問題は、ヒントを開始することです。
このイベントは 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 が周期的に現れたり消えたりします。
したがって、アプリケーション「Hint」と同じメソッドで動作するが、このグリッドに限定された HintWindow を作成する方法を知る必要があります。「タスク変更」「フォーム変更」でクローズする必要があります。どうやってするの?
ご協力ありがとうございます: dd