私のアプリケーションはTButtonGroupコントロールを使用しています。各ボタンにイベントハンドラ:doClickを割り当てます。各ボタン(Pointer (i)
)に情報を割り当てることによって、どのボタンが呼び出されたかを知ることができます。これはコードです:クリックされたTButtonGroupのボタンを見つける方法はありますか?
procedure TVector_Menu.Synchronize (rows, cols: Int32);
var btn: TGrpButtonItem;
i: Int32;
begin
ButtonGroup.Items.Clear;
Self.Rows := rows;
Self.Cols := cols;
for i := 0 to rows * cols - 1 do
begin
btn := Buttongroup.Items.Add;
btn.Data := Pointer (i);
btn.ImageIndex := i;
btn.OnClick := doClick;
end; // for
Self.ClientHeight := 4 + rows * ButtonGroup.ButtonHeight;
Self.ClientWidth := 22 + cols * ButtonGroup.ButtonWidth;
end; // Synchronize //
procedure TVector_Menu.doClick (Sender: TObject);
var btn: TGrpButtonItem;
i, r, c: Int32;
begin
btn := (Sender as TGrpButtonItem); // @@@ TButtonGroup
i := Int32 (btn.Data);
get_rc (i, r, c);
if Assigned (FOnClick)
then FOnClick (Sender, @FButton_Matrix [r, c]);
end; // doClick //
「@@@」。型変換は、btnと型キャストでTButtonGroupを使用すると正しいですが、これはデータプロパティーを含んでおらず、それはあまり使用されていませんでした。
テストとして私はTButtonGroupコントロールにOnClickイベントハンドラを割り当てました。ボタンをクリックすると、まずボタンイベントハンドラが呼び出され、次にボタン、イベントハンドラを含むTButtonGroupが呼び出されました。
質問:TButtonGroupのどのボタンがクリックされたかを知る方法はありますか? Windowsの7/64でのDelphi XEを使用して
ああ、私はおそらく 'ButtonGroupButtonClicked'を使っていたはずです。それはインデックスを返します。それを試み始める。 – Arnold