Ich verwende den folgenden Code, um ein Formular transparent zu machen, aber wenn die Anwendung einen VCL-Stil aktiviert hat, ist das Formular mit der Hintergrundfarbe des VCL-Stils statt transparent.
%Vor% FYI Der Code funktioniert einwandfrei, wenn der vcl-Stil auf Windows
gesetzt ist.
Gibt es eine andere Möglichkeit, ein Formular transparent zu machen, um dieses Problem zu umgehen?
Es scheint wie ein Fehler für mich. Die VCL-Stile verwenden Stil-Hooks , um die Malmethoden und die Windows-Meldungen zu diesen Vorgängen abzufangen. In diesem Fall müssen Sie Ihre Aufmerksamkeit in der PaintBackground
-Methode des TFormStyleHook
Klasse in Vcl.Forms
, von hier aus erstellen Sie eine neue Stil-Hook-Klasse (die von TFormStyleHook abstammt ), überschreiben Sie die PaintBackground
-Methode, korrigieren Sie den Code und schließlich, bevor Sie ihn verwenden, rufen Sie die RegisterStyleHook-Methode auf, um den neuen Style-Hook zu registrieren. Überprüfen Sie diesen Artikel Fixing a VCL Style bug in the TPageControl and TTabControl components
, um ein Beispiel zu sehen.
UPDATE Überprüfen Sie dieses Beispiel
%Vor% Haben Sie in einem separaten Hinweis versucht, die Eigenschaften TransparentColor
und TranparentColorValue
zu verwenden, anstatt die Fensterstile in CreateParams()
?
Tags und Links delphi delphi-xe2 vcl-styles