我的stringgrid的部分是符合条件的放置目标,有些则不是(第一行是列标题,第一列是一种索引,后续列可能被删除)。我有编码和工作。
现在我认为,当用户将鼠标悬停在一个可能掉落目标的单元格上时,向用户发出视觉印象可能会很好。我想突出显示他当前正在盘旋的单元格的行和列中的第一个单元格(或者可能是整个行和列,形成一种十字准线;我尚未决定)。我估计我可以在OnDrawCell
编码。
我曾考虑使用OnMouseMove
和cehck if Dragging then
,但是......
我的问题是,当我拖动时,OnMouseMove
事件永远不会被调用。
在拖动操作过程中,还有其他方法可以知道光标悬停在strigngrid上吗?
答案 0 :(得分:4)
OnDragOver event
专为此而设计;它会自动调用,并提供鼠标指针所在的X
和Y
坐标。该链接位置提供了一个代码示例,演示了如何使用它 - 它适用于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;