拖动时鼠标悬停在stringgrid上?

时间:2012-10-25 01:30:51

标签: delphi tstringgrid

我的stringgrid的部分是符合条件的放置目标,有些则不是(第一行是列标题,第一列是一种索引,后续列可能被删除)。我有编码和工作。

现在我认为,当用户将鼠标悬停在一个可能掉落目标的单元格上时,向用户发出视觉印象可能会很好。我想突出显示他当前正在盘旋的单元格的行和列中的第一个单元格(或者可能是整个行和列,形成一种十字准线;我尚未决定)。我估计我可以在OnDrawCell编码。

我曾考虑使用OnMouseMove和cehck if Dragging then,但是......

我的问题是,当我拖动时,OnMouseMove事件永远不会被调用。

在拖动操作过程中,还有其他方法可以知道光标悬停在strigngrid上吗?

1 个答案:

答案 0 :(得分:4)

OnDragOver event专为此而设计;它会自动调用,并提供鼠标指针所在的XY坐标。该链接位置提供了一个代码示例,演示了如何使用它 - 它适用于TListBox,但原理是相同的。

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items.Add('Not');
  ListBox1.Items.Add('In');
  ListBox1.Items.Add('Alphabetical');
  ListBox1.Items.Add('Order');
end;

// This OnDragOver event handler allows the list box to
// accept a dropped label.

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TLabel;
end;