7

TListBox doubleclick イベント内から TButton Click イベントを発生させようとしています。

Button1.Click;

Delphi XE とその下のバージョンではいつでも実行できますが、Delphi Prism でエラーが発生しています。エラー メッセージは、「基になるイベント フィールドにアクセスできません」です。では、TListBox などの別のコントロールのイベント内からイベントを発生させるにはどうすればよいでしょうか。

例えば:

method UnitSelectDialog.UnitListBox_DoubleClick(sender: System.Object; e: System.EventArgs);
begin
   Okbtn.Click;
end;

上記のコードは、フォームの [OK] ボタンをクリックした場合と同じです。

4

2 に答える 2

5

Prism には詳しくありませんが、これは WinForms ボタンのように見えます。もしそうなら、あなたは電話することができますPerformClick

OKbtn.PerformClick;

.net イベントは、VCL イベントよりもはるかに複雑です。最も重要なのは、それらがマルチキャストであることです。これは、複数のハンドラーを接続できることを意味します。この結果の 1 つは、イベントの呼び出しがはるかに複雑になることです。

于 2011-08-09T15:58:14.787 に答える
0

独自のクラスを定義している場合、2 番目のオプションは、イベントの public "raise" ハンドラーを公開することです。

event Click: ClickEventhandler; public raise;

これにより、コンパイラは適切なメソッドを公開するようになり、他のクラスが「Click()」を呼び出してイベントを呼び出すことができるようになります。(もちろん、他の非公開の可視性も同様に機能します)。

于 2011-08-16T18:35:33.480 に答える