자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 10.1 Berlin VCL Appearance 변경 시 프로그램 프리징 현상
2021.02.25 09:43
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요. 델파이 10.1로 여전히 개발중인 개발자입니다.
이번에 기존 'Windows'라는 Default Style 에서 IceBerg Classico 로 테마를 변경해봤습니다.
문제는 VCL Style 변경 시 기존에 임의로 Style 등록한 (스태킹 플랜과 같이 그림을 만들어내는) 부분에서
특히, TComponent를 사용한 부분은 프로그램이 프리징 되거나 드랍이 계속 되고 있습니다.
var c: TComponent;
c := TwLabel.Create(aForm);
with TwLabel(c) do begin
TwLabel(c).Tag := chk;
TwLabel(c).parent := aScrollBox;
TwLabel(c).Name := honame(Bd,Ho);
TwLabel(c).Caption := aHoName;
TwLabel(c).Visible := true;
TwLabel(c).Top := t;
TwLabel(c).Left := l;
TwLabel(c).Width := w;
TwLabel(c).Height := h;
TwLabel(c).BorderStyle := mlbsRaised;//mlbsSunken;
..
..
..
if Assigned(c) then begin
with TwLabel(c) do begin
Caption := Ho;
Hint := '';
ShowHint := false;
Chima := false;
Color := c_Color_Black;
BorderColor := Color;
BorderStyle := mlbsRaised;
Font.Color := clWhite;
Font.Style := [];
Font.Size := 9;
Font.Name := '굴림체';
if (chk=1) and (aArea=0) then begin //임대불가
Color := clSilver;
Font.Color := clGray;
BorderColor := Color;
...
...
이 부분으로 보입니다.
어떻게 해결을 해보는게 좋을까요.
Delphi 10.1 Berlin VCL Appearance 변경 시 프로그램 프리징 현상
2021.02.25 09:43
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요. 델파이 10.1로 여전히 개발중인 개발자입니다.
이번에 기존 'Windows'라는 Default Style 에서 IceBerg Classico 로 테마를 변경해봤습니다.
문제는 VCL Style 변경 시 기존에 임의로 Style 등록한 (스태킹 플랜과 같이 그림을 만들어내는) 부분에서
특히, TComponent를 사용한 부분은 프로그램이 프리징 되거나 드랍이 계속 되고 있습니다.
var c: TComponent;
c := TwLabel.Create(aForm);
with TwLabel(c) do begin
TwLabel(c).Tag := chk;
TwLabel(c).parent := aScrollBox;
TwLabel(c).Name := honame(Bd,Ho);
TwLabel(c).Caption := aHoName;
TwLabel(c).Visible := true;
TwLabel(c).Top := t;
TwLabel(c).Left := l;
TwLabel(c).Width := w;
TwLabel(c).Height := h;
TwLabel(c).BorderStyle := mlbsRaised;//mlbsSunken;
..
..
..
if Assigned(c) then begin
with TwLabel(c) do begin
Caption := Ho;
Hint := '';
ShowHint := false;
Chima := false;
Color := c_Color_Black;
BorderColor := Color;
BorderStyle := mlbsRaised;
Font.Color := clWhite;
Font.Style := [];
Font.Size := 9;
Font.Name := '굴림체';
if (chk=1) and (aArea=0) then begin //임대불가
Color := clSilver;
Font.Color := clGray;
BorderColor := Color;
...
...
이 부분으로 보입니다.
어떻게 해결을 해보는게 좋을까요.
정확한 원인은 잘 파악 할 수 없으나 스타일은 적용하면 기존의 컴포넌트들도 색상변경이 되지 않습니다. 물론 색상 변경시 오류가 발생하지 않습니다만 일단 위의코드에서 색상을 변경하는 부분을 주석처리하시고 한번 테스트 해보십시오.
아래 링크는 컴포넌트의 색상을 변경하는 방법입니다. 도움이 되시라고 올립니다.
Create a new TStyleHook (스타일 후크에 대해 자세히 알아 보려면이 기사를 읽으십시오). 모든 TWinControls는 vcl 스타일이 활성화 될 때 컨트롤을 그리기 위해 TStyleHook을 사용하므로 특정 컨트롤의 TStyleHook을 수정하여 구성 요소가 그려지는 방식을 수정할 수 있습니다.
https://theroadtodelphi.com/2012/02/06/changing-the-color-of-edit-controls-with-vcl-styles-enabled/