![]() |
Transparenz bei eigener Komponente ein- bzw. ausschalten
Hallo,
um meine eigene Komponente transparent zu machen, nutze ich folgen Code:
Delphi-Quellcode:
Das funktioniert auch, aber wie kann ich es einstellen, ob ich die Transparenz haben möchte oder nicht?
procedure TMJGroupBox.CreateParams(var Params: TCreateParams);
begin inherited CreateParams(Params); Params.ExStyle:=Params.ExStyle + WS_EX_Transparent; end; Ich dachte da an:
Delphi-Quellcode:
Nur weiss ich nicht, wie ich das abfragen soll? Muss ich diese CreateParms Prozedur erneut aber mit anderen Parametern aufrufen oder so umstellen das ich sie 2 mal verwenden kann?
Transparent := False;
Gruß Mazel |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Ich glaube, du solltest dir mal
![]() |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Hi,
danke. GetWindowLong ist mir bekannt, ich dachte aber das es eine andere Möglichkeit gibt. Bisher habe ich GetWindowLong nur für Forms verwendet um sie entweder volltransparent oder teiltransparent zu machen wie bei diesem Programm: ![]() Geht diese Funktion auch bei Komponenten? Und sie geht doch nur ab Windows 2000? Gruß Mazel |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
In Windows ist nahezu alles ein "Window" ... also Forms, Edit, Labels, Buttons ...
Es wird auch all dieses mit CreateWindows(Ex) erzeugt. Windows heißt ja nicht umsonst so :zwinker: |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Zitat:
Der Rest stimmt ;) |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Ok,
stimmt. :) (Labels sind keine Fenster :wink:) Gibt es eine andere Möglichlkeit als mit GetWindowLong? Gruß Mazel |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Naja .... du könntest das Fenster zerstören und neu erstellen lassen, doch das wäre ungleich aufwändiger und weniger ...sexy... als den Wert für den Ex. Style einfach mit Get/SetWindowLong zu verändern ;)
Dein Setter würde jetzt ungeähr so aussehen:
Delphi-Quellcode:
procedure TDingsDa.SetTransparency(const Value: Boolean);
begin FTransparency := Value; if Value then SetWindowLong(Handle,GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_Transparent); else SetWindowLong(Handle,GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) and not WS_EX_Transparent); end; |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Ok, dat war'n blödes Beispiel (hab'sch vor kurzem auch gemerkt, als ich das Handle daruf suchte. :wall:
Auch wenn "Labels" STATIC (nicht TLabel) in Windows Windows sind. :roll: |
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
Zitat:
|
Re: Transparenz bei eigener Komponente ein- bzw. ausschalten
OK.
Dann werde ich das mal versuchenn nur weis ich nicht so recht wie ich das abfragen bzw. setzen soll. In einer Komponente habe ich wie gesagt noch nicht mit GetWindowLong oder SetWindowLong gearbeitet. Gruß mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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