名前 題名 ▼ Mr.XRAYさん > ▼ Saraさん,いいとこついてきますねぇ. > > > あの2行を追加すると、OnSelctFolderChangedが発生しないような・・・ > > 検証がしきれてないですが、そんな気がします。(^^; > > このあたりは,話だすと長くなりそうなんですが, > コンポの動作仕様をどのようにするかとも関係してくるんです. > 今回のは,ビジュアルなコンポです,つまり,コントロールを,TPanelと > フォルダーツリーのインターフェイスオブジェクトです. > > ビジュアルなコンポの場合,コンポのCreate,それを配置したフォームの > Createでは,まだ表示,生成されていません. > もちろん,フォーム自体もですが, > > 多くのコンポのプロパティは,既に設定してある値と同じ値を設定しようと > すると,再設定しないようにしています. > つまり,まだ表示されていないCreateで設定すると,プロパティは設定済み > です.表示してからプロパティを設定すると,同じ値だと設定作業はしない, > ということになります.したがって,その関係のイベントも発生しません. > > そこで,ビジュアルなコンポでは,プロパティの設定のタイミングは, > 表示に関係しないプロパティは,Create等,表示に影響を与えるプロパティは > OnLoad,SetParent等で行っています. > > 実は,プロパティの設定のタイミングは変更することも可能です. > それは, > ComponentStateを使うことです. > http://docwiki.embarcadero.com/VCL/ja/Classes.TComponent.ComponentState > (しかし,ホントに重たいサイトです) > > if csReading in ComponentState then exit; > if csLoading in ComponentState then exit; > こんな感じで使用します. > この2行は,コンポが,ストリームから読出し中と,ロード中の時は設定 > しないようにする例です. > > 別のページを作成しているコンポの場合,このことをある程度考慮して > コーディングしていますが,サンプルの方は,あまり考えないコードと > なっています. > そうでなくても,「Mr.XRAYさんのサンプルは難解すぎます」なんて > 言われちゃうので (^^; > > コンポが,プロパティを設定を試みるのは,完全に表示されるまで,難解, > いや,何回かあります. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link