2012-12-20 12 views
6

デザイン時にToolButtonを持たないTToolBarを作成しました。私の考えは、実行時にToolButtonを作成し、フォームが作成されたときにそこに配置することです。メインメニューの「Windows」メニューを開くことなくフォームを開く方法をユーザーに示します。実行時にツールボタンのOnClickイベントをどのように割り当てることができますか?

NavigationUtils.pasという名前のユニットがあり、これはナビゲーションに関するプロシージャ/関数(フォームの作成時にボタンを作成するためのもの)を保存するために使用します。

質問:ツールボタンの作成時にOnClickイベントを設定するにはどうすればよいですか?

+1

'NewToolButton.OnClick:= ...' –

+1

こんにちは、@DavidHeffernan、よく、私が試しました** NavigationUtils.pas(24):互換性のない型: 'TNotifyEvent'および 'プロシージャ、型なしポインタまたは型なしパラメータ' ** – juniorgarcia

+0

問題は説明されている通りです。 'TNotifyEvent'以外のものを割り当てようとしています。 –

答えて

13

コメントから、TNotifyEventOnClickイベントに割り当てていないことは明らかです。 TNotifyEventの宣言は次のとおりです。

TNotifyEvent = procedure(Sender: TObject) of object; 

ですから、タイプTObjectの単一のパラメータで、手順を必要とし、手続きは、オブジェクトのメソッドでなければなりません。したがって、このような何か:

procedure TMyForm.ToolButtonClick(Sender: TObject); 

そして、あなたはそうのようにそれを割り当てることができます。

NewToolButton.OnClick := ToolButtonClick; 
+0

はい、イベントは公開されている必要があります。 –

+0

@RolandBengtssonいいえ、プライベートにすることができます。 –

+1

こんにちは、@DavidHeffernan。 Man、私はあなたが見たものに従ったソリューションを見つけ出し、メインフォームに "MyOnClickEvent"を追加しました。設計者は、デザイン時に作成されたツールバーを含んでいます。私は** toolbarFormsCustomDrawButton **ツールバーのイベントを設定しました。そのため、イベントのSenderをSenderの(TToolButton)キャプションを使用してフォームを検索する実行時に作成されたボタンのプロシージャOnClickに使用しました。助けをありがとう! – juniorgarcia

関連する問題