お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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