프로그래밍/델파이

TEdit에서 Alignement 처리하기.(왼쪽/가운데/오른쪽 정렬)

채윤아빠 2007. 12. 18. 01:41
728x90
반응형
TLabel 등에는 TAlignment 속성이 있어서 정렬 처리가 가능합니다.
하지만 TEdit에는 TAlignment 관련 속성이 없습니다.
이를 처리하기 위해서 GetWindowLong 및 SetWindowLong Windows API를 이용합니다.
TEdit는 윈도우의 기본 내장 클래스인 edit 컨트롤을 래핑해 놓은 것으로 다음과 같은 스타일을 적용할 수 있습니다.

  { 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;

위 상수들은 Windows.pas 파일에 정의되어 있습니다.

정렬 관련 상수는 ES_LEFT, ES_CENTER, ES_RIGHT 입니다.

GetWindowLong API에서 윈도우즈 스타일 정보를 얻기 위해서 GWL_STYLE 상수를 이용합니다.

SetWindowLong(Edit1.handle, GWL_STYLE , GetWindowLong(Edit1.handle, GWL_STYLE) or ES_RIGHT));

위와 같이 호출하면 Edit1 컴포넌트의 정렬을 오른쪽 정렬로 변경하게 됩니다.