2

StringGrid コンポーネントの子孫で、セルの値に応じてポップアップのヒント メッセージを変更したいと考えています。私のコーディング:

procedure TForm.GridMouseEnterCell(Sender: TObject; ACol, ARow: Integer);
var  k: integer;
begin
  k := strtointdef(Grid.Cells[13, ARow],-1);
  Grid.ShowHint := (ACol = 12) and (k >= 0);
  if Grid.ShowHint then
    Grid.Hint := MyLIst.Items[k];
 end;

これは、別の列から列 12 にマウスを移動すると正常に機能しますが、列 12 にとどまって別の行 (k の値が異なる) に移動すると、ポップアップ ヒントは変更されません。最初にマウスを別の列に移動してから列12に戻ったときにのみ、正しい/新しいヒントが表示されます。誰か解決策がありますか?

4

2 に答える 2

0

そのOnMouseEnterCell()イベントは正しく機能していますか? 列にとどまって別の行に移動すると呼び出されますか? これは TStringGrid のイベントではなく、子孫のイベントであるため、洞察が得られません。

Application.ActivateHint(Mouse.CursorPos);また、関数の最後に置いてみてください。ヒントを強制的に再表示します:

procedure TForm.GridMouseEnterCell(Sender: TObject; ACol, ARow: Integer);
var
  k: integer;
begin
  k := StrToIntDef(Grid.Cells[13, ARow], -1);
  Grid.ShowHint := (ACol = 12) and (k >= 0);
  if Grid.ShowHint then
  begin
    Grid.Hint := MyList.Items[k];
    Application.ActivateHint(Mouse.CursorPos);
  end;
end;
于 2013-06-10T08:04:56.103 に答える