본문 바로가기
Application/Delphi Lecture

TEdit 정렬 변경하기

by 현이빈이 2008. 8. 13.
반응형
일단,에디트에는 다음과 같은 윈도우 스타일을 사용 할 수 있습니다.

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;
반응형