3

TGridPanel内のコントロールの位置(行と列のインデックス)を確認するにはどうすればよいですか?ボタンの数に一般的なOnClickイベントを使用したいのですが、ボタンのX、Y位置を知る必要があります。

Delphi2007を使用しています。

4

2 に答える 2

0

SenderキャストをtButtonとして使用し、次にその上部と左側を要求できます。たとえば、次のようになります。

Procedure TForm1.OnClick(Sender:tObject);
var
  X,Y : Integer;
begin
  if Sender is TButton then
    begin
      X := TButton(Sender).Top;
      Y := TButton(Sender).Left;
      // do something with X & Y
    end;
end;

または、押されたボタンを知りたいだけの場合は、TAGプロパティを使用して各ボタンに数字を挿入し、onclickイベントでタグ値を取得することもできます。最初にTagプロパティを何かに設定することを忘れないでください。ボタンをグリッドパネルにドロップするだけの場合はフォームデザイナで、ボタンの作成と挿入に使用するルーチンでこれを行うことができます。

Procedure TForm1.OnClick(Sender:tObject);
var
  iButton : integer;
begin
  if Sender is TComponent then
    begin
      iButton := TComponent(Sender).Tag;
      // do something with iButton
    end;
end;

タグプロパティを使用して、整数以外のものを格納することもできます。ポインタは現在、整数と同じメモリサイズを使用しているため、整数にポインタをキャストして、その値をタグプロパティに挿入できます。このフィールドに配置するポインタはすべて整数として扱われることに注意してください。あなたはそれが指すメモリに対して責任があり、それはコンポーネントによって管理されません。

于 2009-09-10T14:57:13.397 に答える