카테고리 없음
[일반/컴포넌트] TEdit의 Text를 left, center, right 정렬하기
쇼핑스크래퍼2
2023. 9. 5. 08:03
// 콤포넌트 입니다
unit AlignedEdit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TMyAlign = (alRight, alLeft, alCenter);
TAlignedEdit = class(TEdit)
private
{ Private declarations }
FAlignment: TMyAlign;
protected
{ Protected declarations }
procedure CreateParams(var Params: TCreateParams); override;
procedure SetAlignment(Value: TMyAlign);
procedure KeyPress(var Key: Char); override;
public
{ Public declarations }
published
{ Published declarations }
property Alignment: TMyAlign read FAlignment write SetAlignment;
end;
procedure Register;
implementation
procedure TAlignedEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TMyAlign] of Longint = (ES_RIGHT, ES_LEFT, ES_CENTER);
begin
inherited CreateParams(Params);
// ES_MULTILINE 속성이 있어야만 ES_RIGHT, ES_LEFT, ES_CENTER 가 동작함
Params.Style := Params.Style or ES_MULTILINE or Alignments[FAlignment];
end;
procedure TAlignedEdit.SetAlignment(Value: TMyAlign);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd;
end;
end;
procedure TAlignedEdit.KeyPress(var Key: Char);
begin
inherited KeyPress(Key);
// ES_MULTILINE 속성이 있어서 Enter 키를 막음
if Key = #13 then
Key := #0;
end;
procedure Register;
begin
RegisterComponents('Samples', [TAlignedEdit]);
end;
end.