У меня есть 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, чтобы избежать путаницы.