找出TGridPanel内部控件的位置

Har*_*riv 3 delphi vcl delphi-2007 tgridpanel

我怎样才能找到TGridPanel里面控件的位置(行和列索引)?我想对按钮的数量使用常见的OnClick事件,并且需要知道按钮的X,Y位置.

我正在使用Delphi 2007.

Fra*_*ois 5

不幸的是,由于TGridPanel的魔力,它比仅获取Top和Left属性要复杂一点......

这应该适用于任何控件,使其适应您的需求:

procedure GetRowColumn(const AControl: TControl; var ARow, AColumn: Integer);
var
  I: Integer;
begin
  if AControl.Parent is TGridPanel then
  begin
    I := TGridPanel(AControl.Parent).ControlCollection.IndexOf(AControl);
    if I > -1 then
    begin
      ARow := TGridPanel(AControl.Parent).ControlCollection[I].Row;
      AColumn := TGridPanel(AControl.Parent).ControlCollection[I].Column;
    end;
  end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
  Row, Column : Integer;
begin
  GetRowColumn(Sender as TControl, Row, Column);
  // do something with Row and Column
  ShowMessage( Format('row=%d - col=%d',[Row, Column]));
end;
Run Code Online (Sandbox Code Playgroud)