5

フォームにボタンが1つあります。以下はそのボタンのクリックイベントです

procedure Form1.btnOKClick(Sender: TObject);
begin
//Do something
end;

このイベントは、ボタンをクリックしたときにのみ呼び出されますよね?

ユーザーの介入なしにこのイベントを自動的に呼び出すにはどうすればよいですか?

4

3 に答える 3

19

OnClickコントロールにアタッチされたイベントハンドラーを呼び出す最良のClick方法は、コントロールのメソッドを呼び出すことです。このような:

btnOK.Click;

イベントハンドラーを呼び出すと、Senderパラメーターを直接指定する必要があります。メソッドを呼び出すと、Clickすべての作業を実行するためのコントロールが取得されます。ボタンクリック用のWindowsメッセージハンドラーの実装は、Clickメソッドを呼び出します。

しかし、私はwhosrdaddyの答えで表明された意見を2番目にしています。ボタンの背後にあるロジックを別のメソッドに引き出す必要があります。

于 2013-01-03T12:56:02.363 に答える
15

ビジネスロジックをイベントハンドラに入れないでください。これにより、アプリケーションが大きくなるとコードが読めなくなります。

通常、これを行います。

procedure TForm1.DoSomething;
begin
 // do something
end;

procedure TForm1.btnOKClick(Sender: TObject);
begin
 DoSomething;
end;

DoSomething次に、コード内の他の部分から呼び出すだけです。

于 2013-01-03T12:25:16.463 に答える
7

このイベントは、他のメソッドと同じようにコードで呼び出すことができます。

...
btnOkClick(Self.btnOk); // Sender in this case is the btnOk
...

送信者は、好きなオブジェクトでもnilでもかまいません。

于 2013-01-03T12:23:15.587 に答える