Delphi Tips 
-----------------------------

0224  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/08/28 おばQ rev 1.1.1.5
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/07 西坂良幸 編集
右寄せ・数値入力可能なEditコンポーネントを作りたい。

Win98 以降では、次のようにすれば完璧な右寄せエディタが作成できます。
 WindowsNT4 では SP3 (User32.Dll が 03/11/97 07:04p Intel, 03/11/97 06:14p Alpha) から利用できます。


type
 TRgEdit = class(TEdit)
 protected
   procedure CreateParams(var params: TCreateParams); override;
 end;

procedure TRgEdit.CreateParams(var params: TCreateParams);
begin
 inherited CreateParams(params);
 with Params do
   Style := Style or ES_RIGHT;
end;

 追記のバージョン以前、またDelhi3以前は、
   Style := Style or WS_MULTILINE or ES_RIGHT and not WS_VSCROLL and not WS_AUTOVSCROLL ;

とします。
また、入力を数字専用される場合は、上記にES_NUMBERを論理和
させます。

以下は、Alignment、NumOnly の各プロパティを作成する例です
(FAlignment、FNumOnlyやプロパティ定義部分は省略しています)

procedure TRgEdit.CreateParams(var params: TCreateParams);
const
 Alignments: array[TAlignment]of Word = (ES_LEFT, ES_RIGHT, ES_CENTER);
 NumlOnlies: array[Boolean]of Word = (0, ES_NUMBER);
begin
 inherited CreateParams(Params);
 Params.Style := Params.Style  
         or Alignments[FAlignment]
         or NumlOnlies[FNumlonly];
end;

procedure TRgEdit.SetAlignment(NewValue: TAlignment);
begin
  if FAlignment <> NewValue then
  begin
    FAlignment := NewValue;
    RecreateWnd;// CreateParamsを呼び出すのではないことに注意
  end;
end;

procedure TRgEdit.SetNumlOnly(NewValue: Boolean);
begin
  if FNumlOnly <> NewValue then
  begin
    FNumlOnly := NewValue;
    RecreateWnd;
  end;
end;
参照: [Delphi-ML:9195] [Delphi-ML:41622] <コンポーネント > <Standard>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp