16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"コンテナのParentからTFormを探す"
この発言に対し以下のコメントが寄せられています
#00696 Satobe さん RE:コンテナのParentからTFormを探す
#00698 TN さん RE:コンテナのParentからTFormを探す
#00701 佐藤 充男 さん コンテナのコンポからTFormを探す
こんにちは、佐藤 充男です。
☆説明
複数のコンテナコンポーネント(例:TPanel)の上に置いてあるコンポー
ネント(例:TButton )から、TForm を探す例です。
☆準備
1.フォームにPanel1を置き、その上にPanel2、さらにPanel3を置きます。
2.Panel3の上にButton1 を置きます。
こんな感じに配置します
+-------------------------------+
| Form1 |
+-------------------------------+
|+-------------------------+ |
|| Panel1 | |
||+----------------------+ | |
||| Panel2 | | |
|||+-------------------+ | | |
|||| Panel3 | | | |
|||| +---------+ | | | |
|||| | Button1 | | | | |
|||| +---------+ | | | |
|||+-------------------+ | | |
||+----------------------+ | |
|+-------------------------+ |
+-------------------------------+
☆補足
・自作コンポーネントでPostMessage(Parent.Handle,WM_NEXTDLGCTL,0,0);を
呼び出す場合、TPanelやTPageControl上にコンポを置くと反応がなかった
ので作りました。
・Delphi 4 でテスト。
[サンプルソース]
----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
Father: TWinControl;
begin
Father := Button1;
while True do begin
if Father is TWinControl then begin
if (Father as TControl).Parent is TForm then begin
Father := (Father as TControl).Parent;
ShowMessage( (Father as TControl).Name );
Break; // TFormが見つかった
end;
end
else begin
ShowMessage( 'TWinControlでない!' );
Exit; // TFormが見つからない
end;
Father := (Father as TControl).Parent;
ShowMessage( (Father as TControl).Name );
end;
end;
----------------------------------------------------------------------
#すでに公開されてたらごめんさない(^^;
98/10/23(金) 08:20pm LDM03756 佐藤 充男
Original document by 佐藤 充男 氏 ID:(LDM03756)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|