ウィンドウのシャドウ効果を有効/無効にするために、次の手法を使用しようとしています(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クラスの最初のインスタンスでは問題なく機能しますが、次のインスタンスは、HasShadow(TToolWindowクラスの公開されたプロパティ)の値に関係なく、最初のインスタンスからの設定を保持します。
TToolWindowのさまざまなインスタンスでさまざまなシャドウ設定を行うにはどうすればよいですか?
TIA