![]() |
STATIC Control transparent?
Moin. Ihr kennt doch sicher alle die Eigenschaft "Transparent" vom TLabel.
Weiss jemand wie ich das auch auf ne STATIC Control anwenden kann? Also STATIC und nich TStaticText :stupid: Thx! |
Re: STATIC Control transparent?
eine Ordentliche Transparenz kannst du darauf nur Bedingt anwenden da TStatic ein eigenes Fenster ist (handle) und TLabel nur ein Control welches sich auf die Canvas des Parenz malt.
Um deinen Effekt zu erreichen musst du WM_ERASEBKGND abfangen und die Message verwerfen. Und dann musst du bei den CreateParams zum Style ws_WS_EX_TRANSPARENT hinzufügen. Am besten du suchst mal wie man ein Panel Transparent bekommt (gabs öfters schon) und genau so geht es auch bei einem TStaticText (sollte es zumindest) |
Re: STATIC Control transparent?
Sie heisst WM_ERASEBKGND (Nur nachgeguggt, nich, dass Olli wieder denkt, dass ich Klugscheisse :mrgreen:)
Aber wie verwerfe ich den Messages? |
Re: STATIC Control transparent?
laut msdn "verwirfst" du die Message in dem du als Result einen Wert ungleich 0 beim Messagehandler zurück gibst.
Delphi-Quellcode:
Aber wie geschrieben, einfach danach suchen wie es beim panel gemacht wird und du hast die lösung.
procedure TStaticText.WMEraseBkgnd(var AMsg: TWMEraseBkgnd);
begin AMsg.result := 1; end; |
Re: STATIC Control transparent?
Zitat:
Zitat:
|
Re: STATIC Control transparent?
Bei TStaticText gibt es doch eigentlich schon ein property Transparent (was bei mir aber irgendwie nicht funktioniert)
|
Re: STATIC Control transparent?
Es geht aber nicht um TStaticText, sondern um STATIC :-D (keine VCL)
|
Re: STATIC Control transparent?
achso, wenns um Static geht hab ich ja schon gepostet wie es gehen sollte.
Dann musst du nicht die CreateParams überschreiben sondern gleich beim erzeugen beim Style das WS_EX_TRANSPARENT mit übergeben. |
Re: STATIC Control transparent?
Da is leider kein Unterschied zu vorher :(
Zitat:
//Edit: Gibts auch sowas wie AutoSize fürn STATIC? |
Re: STATIC Control transparent?
Zitat:
|
Re: STATIC Control transparent?
Ich merk schon, das wird nix ^^
Dann muss ich eben wissen, was man bei TWndClassEx beim Brush angeben muss, um die Windows Standardfarbe für 3D Objekte zu bekommen. COLOR_BTNFACE is dunkelblau und COLOR_APPWORKSPACE is braun. Normalerweise sind meine Fenster Hell Grau und die MDI BGs sind dunkel Grau. Was muss ich da denn angeben :gruebel: //Edit: Grad rausgefunden: COLOR_BTNSHADOW ergibt bei mir die Standardfarbe für Fenster. Kann das sein? |
Re: STATIC Control transparent?
Häh? Was soll der Quark denn hier im Thema :lol:
Das Ding ist doch schon "transparent", es sei denn du änderst die Farbe. In diesem Fall nimmste WM_CTLCOLORSTATIC ;) ... Wenn es wieder eines Beispiels bedarf, gib mal kurz deinen aktuellen Source. Zitat:
![]() |
Re: STATIC Control transparent?
Zitat:
Zitat:
Unter Wiondows 2000 müsste es so aussehen:
Delphi-Quellcode:
Das ergibt das normale Fenstergrau von Windows.
wc: TWndClassEx = (
cbSize: SizeOf(TWndClassEx); Style: CS_HREDRAW or CS_VREDRAW; lpfnWndProc: @WndProc; cbClsExtra: 0; cbWndExtra: 0; hbrBackground: COLOR_APPWORKSPACE; lpszMenuName: nil; lpszClassName: ClassName; hIconSm: 0; ); |
Re: STATIC Control transparent?
Zitat:
Zitat:
|
Re: STATIC Control transparent?
Zitat:
Zitat:
|
Re: STATIC Control transparent?
Also bei mir (Windows 2000) macht das keinen Unterschied. :gruebel:
|
Re: STATIC Control transparent?
Zitat:
|
Re: STATIC Control transparent?
Hi,
hmm, schon 'n bissel alt das Thema, hab aber noch einen Lösungsvorschlag, der eigentlich immer funktionieren sollte.
Delphi-Quellcode:
Das ganze kann man dann noch via GetCDlgtrlID(lParam) nur auf bestimmte Statics anwenden.
WM_CTLCOLORSTATIC:
begin SetBkMode(wParam, TRANSPARENT); SelectObject(wParam, GetStockObject(NULL_BRUSH)); end; Gruß D4rk4ng3l Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 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