반응형
일단,에디트에는 다음과 같은 윈도우 스타일을 사용 할 수 있습니다.
Windows.pas 유닛에 가보면 다음과 같이 스타일이 선언되어 있죠.
{ Control Manager Structures and Definitions }
{ Edit Control Styles }
{$EXTERNALSYM ES_LEFT}
ES_LEFT = 0;
{$EXTERNALSYM ES_CENTER}
ES_CENTER = 1;
{$EXTERNALSYM ES_RIGHT}
ES_RIGHT = 2;
{$EXTERNALSYM ES_MULTILINE}
ES_MULTILINE = 4;
{$EXTERNALSYM ES_UPPERCASE}
ES_UPPERCASE = 8;
{$EXTERNALSYM ES_LOWERCASE}
ES_LOWERCASE = $10;
{$EXTERNALSYM ES_PASSWORD}
ES_PASSWORD = $20;
{$EXTERNALSYM ES_AUTOVSCROLL}
ES_AUTOVSCROLL = $40;
{$EXTERNALSYM ES_AUTOHSCROLL}
ES_AUTOHSCROLL = $80;
{$EXTERNALSYM ES_NOHIDESEL}
ES_NOHIDESEL = $100;
{$EXTERNALSYM ES_OEMCONVERT}
ES_OEMCONVERT = $400;
{$EXTERNALSYM ES_READONLY}
ES_READONLY = $800;
{$EXTERNALSYM ES_WANTRETURN}
ES_WANTRETURN = $1000;
{$EXTERNALSYM ES_NUMBER}
ES_NUMBER = $2000;
여기서 상수 이름만 봐도 알다시피 오른쪽 정렬 스타일은 ES_RIGHT 입니다.
그리고 새 윈도우의 스타일을 지정하는 API 함수는 SetWindowLong..
기존의 윈도우 스타일을 가져오는 API 함수는 GetWindowLong..
그렇다면 기존의 윈도우스타일을 가져온 후 기존의 윈도우스타일에 ES_RIGHT 스타일을 추가하면 됩니다.
그래서 다음과 같이 하면 되죠.
// ** 오른쪽 정렬한다 ** //
procedure TForm1.Button1Click(Sender: TObject);
var
AStyle:Integer;
begin
AStyle:=GetWindowLong(Edit1.Handle,GWL_STYLE);
AStyle:=AStyle or ES_RIGHT;
SetWindowLong(Edit1.Handle,GWL_STYLE,AStyle);
Edit1.Repaint;
end;
// ** 원래대로 ** //
procedure TForm1.Button2Click(Sender: TObject);
var
AStyle:Integer;
begin
AStyle:=GetWindowLong(Edit1.Handle,GWL_STYLE);
AStyle:=AStyle xor ES_RIGHT;
SetWindowLong(Edit1.Handle,GWL_STYLE,AStyle);
Edit1.Repaint;
end;
Windows.pas 유닛에 가보면 다음과 같이 스타일이 선언되어 있죠.
{ Control Manager Structures and Definitions }
{ Edit Control Styles }
{$EXTERNALSYM ES_LEFT}
ES_LEFT = 0;
{$EXTERNALSYM ES_CENTER}
ES_CENTER = 1;
{$EXTERNALSYM ES_RIGHT}
ES_RIGHT = 2;
{$EXTERNALSYM ES_MULTILINE}
ES_MULTILINE = 4;
{$EXTERNALSYM ES_UPPERCASE}
ES_UPPERCASE = 8;
{$EXTERNALSYM ES_LOWERCASE}
ES_LOWERCASE = $10;
{$EXTERNALSYM ES_PASSWORD}
ES_PASSWORD = $20;
{$EXTERNALSYM ES_AUTOVSCROLL}
ES_AUTOVSCROLL = $40;
{$EXTERNALSYM ES_AUTOHSCROLL}
ES_AUTOHSCROLL = $80;
{$EXTERNALSYM ES_NOHIDESEL}
ES_NOHIDESEL = $100;
{$EXTERNALSYM ES_OEMCONVERT}
ES_OEMCONVERT = $400;
{$EXTERNALSYM ES_READONLY}
ES_READONLY = $800;
{$EXTERNALSYM ES_WANTRETURN}
ES_WANTRETURN = $1000;
{$EXTERNALSYM ES_NUMBER}
ES_NUMBER = $2000;
여기서 상수 이름만 봐도 알다시피 오른쪽 정렬 스타일은 ES_RIGHT 입니다.
그리고 새 윈도우의 스타일을 지정하는 API 함수는 SetWindowLong..
기존의 윈도우 스타일을 가져오는 API 함수는 GetWindowLong..
그렇다면 기존의 윈도우스타일을 가져온 후 기존의 윈도우스타일에 ES_RIGHT 스타일을 추가하면 됩니다.
그래서 다음과 같이 하면 되죠.
// ** 오른쪽 정렬한다 ** //
procedure TForm1.Button1Click(Sender: TObject);
var
AStyle:Integer;
begin
AStyle:=GetWindowLong(Edit1.Handle,GWL_STYLE);
AStyle:=AStyle or ES_RIGHT;
SetWindowLong(Edit1.Handle,GWL_STYLE,AStyle);
Edit1.Repaint;
end;
// ** 원래대로 ** //
procedure TForm1.Button2Click(Sender: TObject);
var
AStyle:Integer;
begin
AStyle:=GetWindowLong(Edit1.Handle,GWL_STYLE);
AStyle:=AStyle xor ES_RIGHT;
SetWindowLong(Edit1.Handle,GWL_STYLE,AStyle);
Edit1.Repaint;
end;
반응형