TGridPanel内のコントロールの位置(行と列のインデックス)を確認するにはどうすればよいですか?ボタンの数に一般的なOnClickイベントを使用したいのですが、ボタンのX、Y位置を知る必要があります。
Delphi2007を使用しています。
TGridPanel内のコントロールの位置(行と列のインデックス)を確認するにはどうすればよいですか?ボタンの数に一般的なOnClickイベントを使用したいのですが、ボタンのX、Y位置を知る必要があります。
Delphi2007を使用しています。
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;
タグプロパティを使用して、整数以外のものを格納することもできます。ポインタは現在、整数と同じメモリサイズを使用しているため、整数にポインタをキャストして、その値をタグプロパティに挿入できます。このフィールドに配置するポインタはすべて整数として扱われることに注意してください。あなたはそれが指すメモリに対して責任があり、それはコンポーネントによって管理されません。