다음과 같은 기법을 사용하여 창에 그림자 효과를 사용하거나 사용하지 않도록 설정하려고합니다. (CreateParams는 물론 재정의됩니다 .TToolWindow는 TForm에서 파생됩니다.) 동일한 폼 클래스의 서로 다른 인스턴스가 서로 다른 윈도우 클래스 스타일을 사용할 수 있습니까?
procedure TToolWindow.CreateParams(var Params: TCreateParams);
var
LShadow: boolean;
begin
inherited;
if (Win32Platform = VER_PLATFORM_WIN32_NT)
and ((Win32MajorVersion > 5)
or ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) then //Win XP or higher
if SystemParametersInfo(SPI_GETDROPSHADOW, 0, @LShadow, 0) then
begin
if LShadow and HasShadow then
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;
end;
이는 TToolWindow 클래스의 첫 번째 인스턴스에 대한 확인을 작동하지만
는 다음과 같은 경우에 관계없이합니다 (TToolWindow 클래스의 게시 된 재산) HasShadow의 가치, 첫 번째 인스턴스에서 설정을 유지합니다.TToolWindow의 다른 인스턴스에서 어떻게 그림자 설정을 다르게 할 수 있습니까?
TIA