Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DropShadow (https://www.delphipraxis.net/32245-dropshadow.html)

Shaman 20. Okt 2004 19:58


DropShadow
 
Hallo zusammen

Wenn man CreateParams so überschreibt:

Delphi-Quellcode:
procedure TForm1.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  inherited;
  if (Win32Platform = VER_PLATFORM_WIN32_NT) and
     ((Win32MajorVersion > 5) or ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) then
    Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;
sollte unter XP ja eigentlich ein Schatten zu sehen sein. Nur passiert bei mir nichts... Fehlt noch was?

Gruss
Shaman

Sanchez 20. Okt 2004 20:41

Re: DropShadow
 
Bei mir gibts nen Schatten.
Hast du vielleicht das override bei der Deklaration vergessen?

Delphi-Quellcode:
    procedure CreateParams(var Params: TCreateParams); override;
grüße, daniel

Shaman 20. Okt 2004 20:55

Re: DropShadow
 
Nein, hab ich. Bleibt er bei dir auch wenn Du die Form verschiebst, minimierst etc.?

Christian Seehase 20. Okt 2004 20:59

Re: DropShadow
 
Moin Daniel,

vor dem Setzen des Stils, musst Du noch die Anzeige eines DropShadow aktiviert haben:

Delphi-Quellcode:
SystemParametersInfo(SPI_SETDROPSHADOW,0,Pointer(true),0);

Sanchez 20. Okt 2004 20:59

Re: DropShadow
 
Jo, bleibt er. Ganz egal was ich mit dem Fenster mache.

Shaman 20. Okt 2004 21:20

Re: DropShadow
 
Delphi-Quellcode:
SystemParametersInfo(SPI_SETDROPSHADOW,0,Pointer(true),0);
Danke, den hats gebraucht! :thumb:

Gruss
Shaman

Shaman 21. Okt 2004 12:31

Re: DropShadow
 
Hier noch eine handliche Funktion:

Delphi-Quellcode:
{ Am bestem im Konstruktor aufzurufen }
function DropShadow(const Handle: THandle): Boolean;
  function IsXP: Boolean;
  begin
    Result:= (Win32Platform = VER_PLATFORM_WIN32_NT) and
             ((Win32MajorVersion > 5) or ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1)));
  end;
const
  SPI_SETDROPSHADOW = $1025;
  CS_DROPSHADOW = $00020000;
begin
  Result:= IsXP and SystemParametersInfo(SPI_SETDROPSHADOW, 0, Pointer(True), 0) and
           (SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW) <> 0);
end;
Aber es ist schon ein wenig drauf, liegt bei mir die Form über einer anderen eigenen, wird der Schatten nicht angezeigt...

Gruss
Shaman


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz