Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • 0

VCL 스타일 적용 시 캘린더 크기 문제


김민호

질문

안녕하세요

기본 Windows 스타일의 경우는 별다른 문제 없으나, 

제공하는 다른 여러 스타일을 적용 시 아래 이미지와 같이 TDateTimePicker 의 사이즈가 맞지 않아 양쪽이 잘린 채로 표출 됩니다.

 

캘린더 사이즈 설정 또는 관련 해결 방법에 대해 참고할만한 내용이 있다면 알려주시면 감사하겠습니다.

 

< 스타일 변경 소스 >

TStyleManager.TrySetStyle(NewStyle);

 

< 기본 Windows 스타일 >

image.png.5993d8d145522d1cd5c8a5adb8f27904.png

 

< 다른 스타일 >

image.png.25cd4e8c368875c7e019aba21019e1d2.png

image.png.2f342a50d73c5534a6d163abc7316b05.png

 

 

이 댓글 링크
다른 사이트에 공유하기

2 answers to this question

Recommended Posts

  • 2

Stack overflow에 해결방안이 있어 공유드립니다.

uses
.. Vcl.Themes, uxTheme;

procedure FormCreate(Sender: TObject);
procedure Event_DateTimeDropDown(Sender : TObject); // DateTimePicker의 OnDropDown 이벤트에 적용

...
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetVClCalendar(DateTimePicker1);
end;

procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
var
  hwnd: Winapi.Windows.hwnd;
begin
  hwnd := SendMessage(TDateTimePicker(Sender).Handle, DTM_GETMONTHCAL, 0, 0);
  uxTheme.SetWindowTheme(hwnd, '', ''); // disable themes in the drop down window
end;


procedure SetVClCalendar(DateTimePicker: TDateTimePicker);
var
  LTextColor, LBackColor: TColor;
begin
  // get the vcl styles colors
  LTextColor := StyleServices.GetSystemColor(clWindowText);
  LBackColor := StyleServices.GetSystemColor(clWindow);

  // set the colors of the calendar
  with DateTimePicker do
  begin
    calColors.BackColor := LBackColor;
    calColors.MonthBackColor := LBackColor;
    calColors.TextColor := LTextColor;
    calColors.TitleBackColor := LBackColor;
    calColors.TitleTextColor := LTextColor;
    calColors.TrailingTextColor := LTextColor;
  end;
end;

image.png.44f16b3b64ce9173bf2d4144cabf5534.png

 

참고 사이트 : https://stackoverflow.com/questions/10335310/style-properties-for-tdatetimepicker

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

  • 0

To Miniuser

해당 소스로 캘린더 사이즈가 정상적으로 조정 되는 것을 확인했습니다.

도움 감사합니다.

 

추가로 해당 DateTimePicker 의 Properties - Font - Name 이 한글명인 경우( 굴림체, ... ) 해당 증상이 발생하고,

영어인 경우(MS Sans Serif, MS Outlook, ...) 는 별다른 소스 추가 없이도 정상적으로 캘린더 사이즈가 설정됩니다. ( 폰트 크기 10 기준 )

+ 영어명임에도 안되는 폰트도 있긴 하네요...

 

Edited by 김민호
이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 질문에 답변하기...

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.