掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
親コンポーネント上にある子コンポーネント間の変化を相互に反映させ合うには? (ID:33015)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYです.今年もよろしくお願いします. 複数のコンポーネントを持つコンポーネントにはいろいろな種類がありますが, ingさんのように,そのコンポーネント(PanelTrackBarEdit)を使用したアプリから TTrackbar,TEditを操作する必要のないコードであれば,以下の考え方でイベント処理が可能です. 1. 内部で生成するコンポーネントに必要なイベントを定義 2. そのイベント内で必要な処理を書く 以下は,Editの値を変更する場合です.(TEditのOnChangeを使用) //*** が追加した行です(6行) unit PanelTrackBarEdit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,ComCtrls,StdCtrls; type TPanelTrackBarEdit = class(TPanel) private { Private 宣言 } FTrackBar: TTrackBar; FEdit: TEdit; protected { Protected 宣言 } procedure EditChange(Sender: TObject); //*** public { Public 宣言 } constructor Create( AOwner: TComponent); override; published { Published 宣言 } end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TPanelTrackBarEdit]); end; constructor TPanelTrackBarEdit.Create( AOwner: TComponent); begin inherited Create(AOwner); width:= 190; height:= 30;//100; //TrackBarを作成 FTrackBar:= TTrackBar.Create(self); FTrackBar.Parent:= self; FTrackBar.Top:= 2; FTrackBar.Left:= 2; //Editを作成 FEdit:= TEdit.Create(self); FEdit.Parent:= self; FEdit.top:=2; FEdit.Left:= 150; FEdit.Width:= 30; FEdit.OnChange := EditChange; //*** FEdit.Text:= inttostr(FTrackBar.position); end; procedure TPanelTrackBarEdit.EditChange(Sender: TObject); //*** begin //*** FTrackBar.Position := StrToIntDef(FEdit.Text,0); //*** end; //*** end. 参考になるかどうかはわかりませんが... http://mrxray.on.coocan.jp/Delphi/plSamples/160_CreateComponent.htm#110
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.