掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
カスタムコントロール:独自イベントを作成するには? (ID:21591)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
idyさんfさんありがとうございます。 TMyPersistent=class(TPersistent) private FOnChanging: TnotifyEvent; FMyTag: Integer; published Property MyTag:Integer Read FMyTag write setMyTag ; property OnChanging:TnotifyEvent read FOnChanging write FOnChanging ; end; TMyCustomControl = class(Tcustomcontrol) private FOnMyPersistentChange: TNotifyEvent; FMyPersistent:TMyPersistent; procedure SetMyPersistent(const Value:TMyPersistent); protected procedure MyPersistentChange(AObject:TObject); published property OnMyPersistentChange:TNotifyEvent Read FOnMyPersistentChange write FOnMyPersistentChange ; property MyPersistent:TMyPersistent read FMyPersistent write SetMyPersistent ; end; {TMyPersistent} procedure TMyPersistent.setMyTag(const Value: Integer); begin FMyTag := Value; if assigned(FOnchanging) then FonChanging(self); end; {TMyCustomControl} constructor TMyCustomControl.Create(AOwner: TComponent); FOnMyPersistentChange:=MyPersistent.FOnChanging; begin procedure TMyCustomControl.MyPersistentChange(AObject: TObject); begin inherited ; if assigned(FOnBlockChange) then FOnBlockChange(self); Repaint; end; procedure SetMyPersistent(const Value:TMyPersistent); begin MyPersistent:=Value; end; 上のようなコードで、結局のところMyPersistentプロパティが変更されるたびに再描画したかっただけなのですが、自分にはTMyPersistentに変更された時のイベントを定義して・・・ と、うだうだする方法しか思い浮かばなかったのです。しかし、上のコードではプロパティが変更されたときは再描画が施されません。 なので、MyPersistentプロパティが変更したときに、自前のメッセージを宣言して・・・また、うだうだするのかなぁと思ったんです。そのとき、メッセージの宣言まではなんとか理解しているつもりでいるのですが、どうもメッセージを宣言したところでそのメッセージがどのような具合に発信されるのかがいまいちわかりません。もし、TMyPersistentがメッセージを発信できるのならどのようにすればいいのか教えてください。そもそもメッセージの発信などという言葉があるのかは知りませんが、自分が何を勘違いしているのか、勘違いしているのかもわかりません。ただ、質問させていただいたのは、このような過程があったからです。もちろん、MyPersistentプロパティが変更したときに、再描画する方法が他にもあれば、それでいいといえばいいのですが、ここまで考えた手前、あまり気が進まないのです。よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.