右寄せ・数値入力可能な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;
|
|