|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"親子コンポーネント"
{
TPanelを継承してその上にTComboBoxがのっかった親子コンポーネント
のサンプル。
設計時にオブジェクトインスペクタから子コンポーネントが持つ
プロパティやイベントをいじれるようにする。
property ComboItems: TStrings
property OnComboChange: TNotifyEvent
実行時プロパティで子コンポーネントにフルアクセスする。
property Combo: TComboBox
}
unit ComboPanel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TComboPanel = class(TPanel)
private
{ Private 宣言 }
FCombo: TComboBox;
FOnComboChange: TNotifyEvent;
procedure SetComboItem(Value: TStrings);
function GetComboItems: TStrings;
protected
{ Protected 宣言 }
procedure Loaded; override;
procedure ComboChange(Sender: TObject); dynamic;
public
{ Public 宣言 }
constructor Create(AOwner: TComponent); override;
property Combo: TComboBox read FCombo write FCombo;
published
{ Published 宣言 }
property ComboItems: TStrings read GetComboItems
write SetComboItem;
property OnComboChange: TNotifyEvent read FOnComboChange
write FOnComboChange;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Test', [TComboPanel]);
end;
{ TComboPanel }
// コンストラクタ・・コンボボックスの作成と初期設定
constructor TComboPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCombo:= TComboBox.Create(Self); // オーナーを指定して作成する
FCombo.Parent:= Self; // 親を指定する
FCombo.BoundsRect:= Classes.Bounds(8, 4, 150, 20);
FCombo.OnChange:= ComboChange; // イベントハンドラー定義
end;
// 設計時にコンボボックスの項目が作成された場合は実行時に反映する
procedure TComboPanel.Loaded;
begin
inherited Loaded;
SetComboItem(FCombo.Items);
end;
// プロパティ読み出しアクセスメソッド
function TComboPanel.GetComboItems: TStrings;
begin
Result:= FCombo.Items;
end;
// プロパティ書き込みアクセスメソッド
procedure TComboPanel.SetComboItem(Value: TSTrings);
begin
if (Value = nil) or Value.Equals(FCombo.Items) then Exit;
FCombo.Items.Assign(Value);
end;
// イベント呼び出しメソッド
procedure TComboPanel.ComboChange(Sender: TObject);
begin
if assigned(OnComboChange) then OnComboChange(Self);
end;
end.
http://member.nifty.ne.jp/h-triton/
○ 快速・大容量テキストエディタ「えるの〜と」進化中 ○
Avalon's Friendly Crew #80008 H-Triton (^^) since 1996
Original document by H-Triton 氏 ID:(QZV11422)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|