|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"2個のTEditを載せたPanelコンポ"
自分(コンテナ)の上に他のコンポを生成して載せる複合コンポの作り方
の例です.
子コンポのOwnerをForm以外にすれば設計時には触れません.
子コンポのイベントに自分のメソッドをアタッチして利用します.
unit TwoEdits;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TTwoEdits = class(TPanel)
private
{ Private 宣言 }
protected
{ Protected 宣言 }
FLEdit,FREdit: TEdit;
procedure LEditKeyPress(Sender: TObject; var Key: Char);
procedure REditKeyPress(Sender: TObject; var Key: Char);
procedure AdjustEdit;
procedure SetParent(AParent: TWinControl); override;
public
{ Public 宣言 }
constructor Create(AOwner: TComponent); override;
procedure Setbounds(ALeft, ATop, AWidth, AHeight: Integer); override;
published
{ Published 宣言 }
end;
procedure Register;
implementation
procedure TTwoEdits.LEditKeyPress(Sender: TObject; var Key: Char);
begin
//////////// ここにやりたいことを書く
end;
procedure TTwoEdits.REditKeyPress(Sender: TObject; var Key: Char);
begin
//////////// ここにやりたいことを書く
end;
constructor TTwoEdits.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FLEdit := TEdit.Create(Self);
FLEdit.OnKeyPress := LEditKeyPress;
FREdit := TEdit.Create(Self);
FREdit.OnKeyPress := REditKeyPress;
AdjustEdit;
end;
procedure TTwoEdits.AdjustEdit;
var
CH,CW: integer;
begin
CH := Height div 2;
CW := Width div 2;
FLEdit.Setbounds(5, CH -12, CW -10, 24);
FREdit.Setbounds(CW +5, CH-12, CW -10, 24);
end;
procedure TTwoEdits.SetParent(AParent: TWinControl);
begin
Caption := '';
inherited SetParent(AParent);
if (FLEdit.Parent = nil)and(AParent <> nil) then begin
FLEdit.Parent := Self;
FREdit.Parent := Self;
end;
end;
procedure TTwoEdits.Setbounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
inherited Setbounds(ALeft, ATop, AWidth, AHeight);
if Parent <> nil then begin
AdjustEdit;
end;
end;
procedure Register;
begin
RegisterComponents('Samples', [TTwoEdits]);
end;
end.
TN(CQJ01721)
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|