Einzelnen Beitrag anzeigen

Mossi

Registriert seit: 6. Feb 2004
Ort: Wenzenbach
35 Beiträge
 
Delphi 7 Enterprise
 
#1

CS_DROPSHADOW auf TForm wird erst bei Alt+TAB angezeigt

  Alt 4. Jul 2013, 08:42
Delphi-Version: 7
Hallo zusammen,

ich hab eine Basisklasse für verschiedene modale Dialoge erstellt und will für diese Dialoge haben, dass da immer ein Schatten angezeigt wird.
Die Basisklasse setzt BorderStyle auf bsNone.
Um den Schatten anzuzeigen verwende ich CS_DROPSHADOW in CreateParams:
Delphi-Quellcode:
procedure TBorderlessDialog.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  inherited CreateParams(Params);
  with Params do
  begin
    Style := WS_POPUP;
    WindowClass.Style := WindowClass.Style or CS_DROPSHADOW;
  end;
end;
Jetzt hab ich aber das Problem, dass der Schatten erst dann angezeigt wird, wenn ich mit Alt+TAB in ein anderes Programm wechsle, als ob die Form nicht komplett gezeichnet werden würde. Kann ich das irgendwie erzwingen, dass der Schatten gezeichnet wird.

Achja: Interessant könnte auch noch sein, dass es manchmal auch sofort funktioniert.

Ich weiß da echt nicht mehr weiter.

Optional freue ich mich auch über Tips, wie man anderweitig einen Schatten um ein rahmenloses Fenster zeichnen könnte. Oder im Idealfall gleich um eine Fertige Basisklasse, die das übernimmt
  Mit Zitat antworten Zitat