16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE^2:イベントに型無し引数を使うには"
この発言は #00770 りゅー さんのRE:イベントに型無し引数を使うには に対するコメントです
この発言に対し以下のコメントが寄せられています
#00773 りゅー さん RE^3:イベントに型無し引数を使うには
りゅー さん、こんにちは。
>まいち思い浮かばないんですが、もしかして複数の型を扱うハンドラを使おう
そういうことですね.状況によって型の違う引数をやりとりするメソッド
はたまに使いますから.
> 共有型のレコード定義じゃだめですか?
これでもいけますが,recordの宣言を直接含まないユニットでコンポの宣言を
した場合は,recordの宣言が未定義扱いになり,手書きでFormユニットにuses
しないと使用できなくなります.
自動usesで間に合わすためには,recordを使うコンポの宣言のある全部の
ユニットで別々にinterface部で宣言しなくてはならないのでいまいち.
Sender引数がみな大元の基底のTObjectなのはそのせいもありますね.
(TComponentあたりがよかろうとは思うけど)イベントの型のほうはコンパイル
時に宣言を参照する必要がないから,未定義でひっかかることはない.
<unionでやった場合の例>
type
TTestRec = record
case Integer of
0: (I: Integer);
1: (D: Double);
2: (C: Currency);
3: (S: ShortString);
end;
TTestEvent = procedure(var V:TTestRec) of object;
TMyClass = class(TComponent)
protected
FTestEvent: TTestEvent;
published
property OnTestEvent: TTestEvent
read FTestEvent write FTestEvent;
end;
TN(CQJ01721)
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|