名前 題名 ▼ takiさん > 動的にコンポーネントを生成しているのですが、text等に記録した文字列から生成したいのです。 > TopとかLeftとかCaptionとかは文字列から値を代入できます。 > MyButton.ParentはGetComponentByName()という関数を作って文字列'Panel1'からTWinControlを > 得ることができたのですが、MyEvent手続きを手続き名'MyEvent'から探す方法が分かりません。 > > unit Unit1; > > interface > > uses > Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, > Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; > > type > TForm1 = class(TForm) > Button1: TButton; > Panel1: TPanel; > Button2: TButton; > procedure Button1Click(Sender: TObject); > procedure Button2Click(Sender: TObject); > private > { Private 宣言 } > MyButton:TButton; > procedure MyEvent(Sender: TObject); > function GetComponentByName(AName:String):TComponent; > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > > function TForm1.GetComponentByName(AName:String):TComponent; > var > i:integer; > begin > result := self; // 無かったらForm1に生成 > if Form1.ComponentCount = 0 then exit; > for i := 0 to Form1.ComponentCount - 1 do begin > if Form1.Components[i].Name = AName then begin > result := Form1.Components[i]; > exit; > end; > end; > end; > > procedure TForm1.Button1Click(Sender: TObject); > begin > MyButton := TButton.Create(Self); > MyButton.Parent := GetComponentByName('Panel1') as TWinControl; > //Panel1上にボタンを生成している > MyButton.Top := 20; > MyButton.Left := 20; > MyButton.Caption := '私のボタン'; > MyButton.OnClick := MyEvent; // ← ここの値を'MyEvent'から得たい > end; > > procedure TForm1.Button2Click(Sender: TObject); > begin > if MyButton <> nil then FreeAndNil(MyButton); > end; > > procedure TForm1.MyEvent(Sender: TObject); > begin > beep; > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link