フォームにがTGridPanel
あり、クリックされた特定の「セル」にコントロールを追加したいと思います。
私は簡単にポイントを得ることができます:
procedure TForm1.GridPanel1DblClick(Sender: TObject);
var
P : TPoint;
InsCol, InsRow : Integer;
begin
P := (Sender as TGridPanel).ScreenToClient(Mouse.CursorPos);
if (Sender as TGridPanel).ControlAtPos(P) = nil then
begin
InsCol := ???;
InsRow := ???;
(Sender as TGridPanel).ControlCollection.AddControl(MyControl, InsCol, InsRow)
end;
end;
おそらくif ControlAtPos(P) = nil then
行は必要ありませんが、すでにコントロールが含まれているセルにコントロールを挿入しないようにしたいのです。
では...InsColとInsRowを取得するためにどのコードを使用しますか?クラスコードを上下に移動しましたがTGridPanel
、TControlCollection
マウス座標から列または行の値を取得できるものが見つかりません。また、。以外に使用する関連イベントではないようですOnDblClick()
。
どんな助けでも大歓迎です。
編集:混乱を避けるために、変数ResultをMyControlに変更しました。