AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Label "Transparenz" beibringen

Ein Thema von DieDolly · begonnen am 8. Jun 2020 · letzter Beitrag vom 8. Jun 2020
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Label "Transparenz" beibringen

  Alt 8. Jun 2020, 16:50
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 ControlStyle := [csOpaque, csCaptureMouse, csClickEvents, csSetCaption]; deswegen verstehe ich nicht, was hier falsch ist.

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?
Angehängte Dateien
Dateityp: pas MDLabel.pas (51,1 KB, 11x aufgerufen)

Geändert von DieDolly ( 8. Jun 2020 um 16:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: Label "Transparenz" beibringen

  Alt 8. Jun 2020, 16:59
Wenn es transparent sein soll, dann sollte csOpaque eigentlich nicht gesetzt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Label "Transparenz" beibringen

  Alt 8. Jun 2020, 17:05
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.

Geändert von DieDolly ( 8. Jun 2020 um 17:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: Label "Transparenz" beibringen

  Alt 8. Jun 2020, 17:42
Ich habe jetzt nur auf die Schnelle mal drüber gesehen, aber wenn in der Paint-Methode folgendes steht
Delphi-Quellcode:
 
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;
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Label "Transparenz" beibringen

  Alt 8. Jun 2020, 18:07
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:
Canvas.Brush.Color := Color;
   Canvas.Pen.Color := Canvas.Brush.Color;
kommentiere, ist es zwar transparent, aber das Label hat einen schwarzen, 1px Kasten drumherum, obwohl Pen Width 0 ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#6

AW: Label "Transparenz" beibringen

  Alt 8. Jun 2020, 18:26
keine Color und/oder kein Style = keine Farbe


Warum überhaupt ein Rechteck zeichnen, wenn du Keines willst?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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