2013-10-28 3 views
0

VCL 스타일을 실험하고 있습니다. 이것은 바보 같은 질문 일지 모르지만 스타일을 사용할 때 배경이 다른 양식을 가질 수 있습니까? 양식 배경 (클라이언트 영역)은 VCL 스타일 디자이너에서 지정되며 양식의 Color 속성을 무시하는 것으로 보입니다.VCL 스타일로 배경색을 지정 하시겠습니까?

다른 배경색으로 양식을 만들려면 어떻게해야합니까? 예를 들어 모달 대화 상자의 배경색이 기본 양식과 다를 수 있습니다.

+1

가능한 [VCL 스타일을 사용하는 TComboBox의 배경색을 지정하는 방법] (http://stackoverflow.com/questions/16538890/how-to-color-the-background-of-a- tcombobox-with-vcl-styles-enabled) –

+0

또한 유용한 링크는 http://stackoverflow.com/questions/9906312/ –

+0

에 있습니다 @ Arioch'The 제공된 솔루션이 포함되어 있습니다. 몇 가지 사항을 적용하면됩니다. TFromStyleHookExt = class (TFormStyleHook)'TWinControlClass (Control)을 변경합니다. TForm (Control). 적응 초기화 TStyleManager.Engine.RegisterStyleHook (TForm_XY, TFromStyleHookExt); WndProc를 변경하십시오. – bummi

답변

6

는 네, 그것은 가능하다 : 델파이 XE3, XE4, XE5를 사용하는 경우 : 만 양식의 StyleElements 속성에서 seClient를 제거해야합니다

Form3.StyleElements := [seFont, seBorder]; 

당신은 델파이를 사용하는 경우 XE2 : 당신은 TFormStyleHook 클래스를 무시하고 WM_ERASEBKGND 메시지를 잡기 및 기본 메시지 처리하지 않고 반환해야합니다 :

type 
    TFormStyleHookEx = class(TFormStyleHook) 
    procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; 
    end; 
{ TFormStyleHookEx } 

procedure TFormStyleHookEx.WMEraseBkgnd(var Message: TMessage); 
begin 
    Message.Result := 1; 
end; 

initialization 

TStyleEngine.RegisterStyleHook(TForm3, TFormStyleHookEx); 
을 0

enter image description here

+1

그는 XE2에 있으며 StyleElements는 여기에 알려져 있지 않습니다. – bummi

+0

@ bummi, 죄송합니다 .. 새 업데이트를 확인하십시오. –

+0

멋지고 간결하지만, 불행히도 IMHO 질문은 여전히 ​​중복입니다. – bummi