![]() |
Label "Transparenz" beibringen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich nutze eine vorgefertigte Komponente, um HTML-ähnliche Structuren in einem Label eingeben zu können. Das funktioniert jetzt so wie gewollt. Danke an alle, die beteiligt waren bisher.
Aber ein aller letztes, sehr großes Problem bleibt! Wie bringe ich diesem Label Transparenz bei? Auf einem TPanel ist das Label transparent. ABER PageControl auf das Formular, dort eine Seite erstellen und dort das Label drauf. Dann ist es nicht mehr transparent sondern nimmt die Hintergrundfarbe vom Control an, was unter dem TPageControl ist. In diesem Fall das Form. Im OnCreate des Labels steht schon
Delphi-Quellcode:
deswegen verstehe ich nicht, was hier falsch ist.
ControlStyle := [csOpaque, csCaptureMouse, csClickEvents, csSetCaption];
Ich weiß, dass es keine Transparenz in dem Sinne gibt. Die Komponente sollte also, um "transparent" zu sein, die Farbe vom Parent annehmen. Aber wie vermittelt man dem sowas? Ist das überhaupt der richtige Weg? |
AW: Label "Transparenz" beibringen
Wenn es transparent sein soll, dann sollte csOpaque eigentlich nicht gesetzt werden.
|
AW: Label "Transparenz" beibringen
Das Resultat ist leider gleich. Das Label nimmt die Farbe vom Parent an (hier Form).
Wenn ich innerhalb der Komponente auf das Property Color des Parents zugreifen könnte, könnte ich so einen unschönen Workaround basteln denke ich. Aber da komme ich leider nicht ran. Ein MDLabel1.Color := clRed; (egal welche Farbe man nimmt, am besten die des Parents) löst das Problem aber ich würde gerne vermeiden, das jedes mal zuweisen zu müssen. |
AW: Label "Transparenz" beibringen
Ich habe jetzt nur auf die Schnelle mal drüber gesehen, aber wenn in der Paint-Methode folgendes steht
Delphi-Quellcode:
und FOnPaintBackground nicht zugewiesen ist, wie soll denn das Label dann transparent sein? Hier wird doch explizit ein Rechteck mit der Color des Labels gemalt.if Assigned(FOnPaintBackground) then FOnPaintBackground(self, self.Canvas, Width, Height) else begin Canvas.Pen.Width := 0; Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := Color; Canvas.Pen.Color := Canvas.Brush.Color; Canvas.Rectangle(ClientRect); Canvas.Brush.Style := bsClear; end; |
AW: Label "Transparenz" beibringen
FOnPaintBackground schmeiße ich gleich auch raus.
Wenn das Event dann weg ist, was müsste man hier schreiben, damit es transparent ist? Wenn ich
Delphi-Quellcode:
kommentiere, ist es zwar transparent, aber das Label hat einen schwarzen, 1px Kasten drumherum, obwohl Pen Width 0 ist.
Canvas.Brush.Color := Color;
Canvas.Pen.Color := Canvas.Brush.Color; |
AW: Label "Transparenz" beibringen
keine Color und/oder kein Style = keine Farbe
Warum überhaupt ein Rechteck zeichnen, wenn du Keines willst? |
AW: Label "Transparenz" beibringen
Wenn ich da alles kommentiere ist der Hintergrund Dunkelgrau / Schwarz.
Das ist nicht meine Komponente. Ich versuche sie nur mit eurer Hilfe so anzupassen, dass sie ordentlich funktioniert. Egal was ich da kommentiere oder nicht, der Hintergrund ist dann entweder weiß oder grau mit einem 1px schwarzen Rand. |
AW: Label "Transparenz" beibringen
OK, es gibt hier keine Transparenz.
Das ist wie beim ![]() Dieses hier erbt von ![]() "Transparent" kann aber nur etwas werden, welches von TGraphicControl erbt, wie z.B. TLabel, TImage und TShape, denn diese Kompoenten sind keine eigenständigen Windows-Controls, sondern "hacken" sich in ihren Parent rein, wo sie sich auf dessen Canvas drauf zeichnen, mit der Möglichkeit, dass vorher der "Inhalt" des Parents gezeichnet wird und dann diese Komponente nur Teile davon übermalt. |
AW: Label "Transparenz" beibringen
Ich habe irgendwann mal versucht das von TGraphicControl erben zu lassen aber dann gehen einigen Stellen leider kaputt und es wird kein Text mehr ausgegeben.
|
AW: Label "Transparenz" beibringen
Du willst echte Transparenz?
Dann kannst du nur eins tun deinen Text in einem Transparenten Bitmap kopieren und diesen anschließend wie ein Bitmap behandeln. Aber! Wenn du einen grauen Hintergrund hast ist der Hintergrund des Labels natürlich auch hier dann Grau. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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