掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
生成したTPaintBoxに線を描画するには? (ID:20583)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
1.TLabel.Captionが変更されると、 自分でCM_TEXTCHANGEDというメッセージを発し、(TControl.SetTextBuf) それを改めて受けて自身を再描画する。(XRayさんが示したTCustomLabel.CMTextChangedで行う) こういう面倒な手続きはCaptionに限ったことで、理由は定かでありません。 「その様にDelphiが作られています.」としか私も言いようがありません。 ソースを見て初めて解ることですが、ソースを見たからといって解るというものでもありません。 習わないと解らないことです。 2.再描画はどうやって行うかというと、TCustomLabel.CMTextChangedがInvalidate を実行します。 これは,Windowsに再描画を依頼する行為です。暇ができると 親コントロールに再描画を命令してくれます。 この間にもその伝達のためのメッセージがたくさん飛び交いますが省略します。 それ以後はデル太さんも少し解りかけてきたと思います。 3.実際の描画は、paintがあればそれを実行します。 そのpaintはTCustomLabelにあります。 4.具体的作業はTCustomLabel内のDoDrawTextが行います。 5.DoDrawTextはTCustomLabelのヘルプにも書かれているGetLabelTextでCaptionの文字列を得、Canvas.DrawTextを使って描画します。 従って、我々がそのコードをいちいち書く必要はどこにもありません。 ただし、起動時にLabelが初めてCreateされて以後Caption property が設計者により変更されるまでのCaptionの描画はもう少し手がかかっています。(Name property をコピーする)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.