3

私のstringgridの一部は適格なドロップターゲットであり、一部はそうではありません(最初の行は列見出しで、最初の列は一種のインデックスであり、後続の列はドロップされる可能性があります)。私はそれをコード化して動作させています。

現在、ユーザーがドロップ ターゲットとなる可能性のあるセル上でマウスをドラッグするときに、ユーザーに視覚的な指示を与えるとよいと考えています。彼が現在ホバリングしているセルの行と列の最初のセルを強調表示したいと思います(または、行と列全体で、一種の十字線を形成します。まだ決定していません)。でコーディングできると思いますOnDrawCell

OnMouseMoveと cehckを使おうと思っif Dragging thenたのですが...

私の問題は、ドラッグしているときにOnMouseMoveイベントが呼び出されないことです。

ドラッグ操作中にカーソルが strigngrid の上に置かれていることを知る他の方法はありますか?

4

1 に答える 1

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;
于 2012-10-25T01:51:42.087 に答える