名前 題名 ▼ takiさん > ▼ Mr.XRAYさん > > > 私もよくは分からんのですが > > RTTI (実行時型情報) を利用するとか... > > マスター ありがとうございます。 > > ttp://d.hatena.ne.jp/tales/20121205/1354636256 で > こんなコードを見つけました。 > > procedure TForm1.Button1Click(Sender: TObject); > var > method: TMethod; // 追加 > begin > MyButton := TButton.Create(Self); > MyButton.Parent := GetComponentByName('Panel1') as TWinControl; > MyButton.Top := 20; > MyButton.Left := 20; > MyButton.Caption := '私のボタン'; > // ---------- ここから > method.Code := @TForm1.MyEvent; > method.Data := nil; > MyButton.OnClick := TNotifyEvent(method); > // ---------- ここまで > end; > > それで、label1を追加して内容を表示してみました。 > > procedure TForm1.Button1Click(Sender: TObject); > var > method: TMethod; > begin > MyButton := TButton.Create(Self); > MyButton.Parent := GetComponentByName('Panel1') as TWinControl; > MyButton.Top := 20; > MyButton.Left := 20; > MyButton.Caption := '私のボタン'; > // ---------- ここから > label1.Caption := inttostr(Integer(@TForm1.MyEvent)); // 5977080 > method.Code := Pointer(strtoint(label1.Caption)); > method.Data := nil; > MyButton.OnClick := TNotifyEvent(method); > // ---------- ここまで > end; > > コンパイルする度にlabel1の値は変わりますが、プログラムを単独で動かしても > 値が変わることはありません。 > なので、この値を保存しておけばいいのかもしれません。 > なお、method.Dataについてはもう少し調べる必要があります。 > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link