Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponente gesucht: Label, Memo mit Anpassung an Hintergrund (https://www.delphipraxis.net/84322-komponente-gesucht-label-memo-mit-anpassung-hintergrund.html)

Loki77 15. Jan 2007 12:26


Komponente gesucht: Label, Memo mit Anpassung an Hintergrund
 
Hallo zusammen!
Bin auf der Suche nach einer Komponente die
1. Transparenz
und
2.die möglichkeit besitz, die Text-Farbe an den Hinttergrund anzupassen.
Hatte mal so etwas, weiss nur leider nicht mehr von welcher Komponenten-Sammlung das war.
Vielleicht weiss ja jemand von euch was ich da nutzen kann oder kennt Alternativen um Text
auf jedem "Untergrund" sichtbar zu halten...
Vielen Dank schon mal,
Philipp

Der_Unwissende 15. Jan 2007 12:48

Re: Komponente gesucht: Label, Memo mit Anpassung an Hinterg
 
Hi,
theoretisch müsstest Du das ganz gut selbst anpassen können. Erstell Dir einfach einen Nachfahren von TLabel und TMemo und sieh hier eine Methode vor, die auf die Botschaft CM_COLORCHANGED reagiert. Diese Botschaft wird von jedem Control (jede Elternkomponente muss ein Nachfahre von TConrol sein) ausgelöst, wenn die Farbe gewechselt wurde. Die Parameter kannst Du dabei nicht weiter ausnutzen, aber merkst Du Dir die Hintergrundfarbe des Parent kannst Du schauen ob diese sich geändert hat und ggf. selbst die Farbe wechseln.

Gruß Der Unwissende

[Add]
Was ich vergessen hatte zu erwähnen:
Die Nachricht wird durch die Funktion WindowProc (eigentlich eine Eigenschaft/ein Funktionszeiger) des TControl verarbeitet. Du müsstest also für den Parent diese WindowProc durch eine eigene ersetzen, die erst prüft was für eine Nachricht vorliegt, handelt es sich dann eben um CM_COLORCHANGED, dann reagier drauf, und danach die Botschaft auf jeden Fall an die originale WindowProc-Funktion weiterreicht (damit sich auch wirklich die Farbe ändert).
[/Add]

Loki77 15. Jan 2007 13:03

Re: Komponente gesucht: Label, Memo mit Anpassung an Hinterg
 
Danke erst mal...
Aber ich ändere nicht wirklich die Farbe, es geht darum Text über
Bildern immer optimal sichtbar zu halten. Es kann ja sein das erst ein
dunkles Bild und direkt da nach ein helles dargestellt wird.
Und der Text sollte in diesem Fall immer lesbar sein.
Ich hatte da mal eine Komponente gesehen, die sich dynamisch an den
Hintergrund angepasst hat, sozusagen die Text-Farbe immer als Negativ der Hintergrund-Farbe
darstellte. Irgendwas mit <<Mask>> glaub ich...
(Jaja, da Alter...)

andimx 15. Jan 2007 13:11

Re: Komponente gesucht: Label, Memo mit Anpassung an Hinterg
 
Na dann trotzdem das obige machen und du musst dann dir einen Schwellenwert programmieren.

z.B. löß die Hintergrundfarbe in seine RGB werte auf und prüfe dann:

wenn r oder g oder b > 128 dann mache label.color = schwarz, ansonsten label.color = weiß

du kannst das ja noch feiner machen, vielleicht komplimitär farben bilden.

Der_Unwissende 15. Jan 2007 13:17

Re: Komponente gesucht: Label, Memo mit Anpassung an Hinterg
 
Zitat:

Zitat von andimx
Na dann trotzdem das obige machen und du musst dann dir einen Schwellenwert programmieren.

Ich glaube sein Problem ist eher, dass diese Botschaft ebend nur beim Ändern der tatsächlichen Hintergrundfarbe ausgelöst wird. Lädst Du aber ein Bild in ein TImage, so wird sicherlich eine andere Botschaft ausgelöst (hab es zumindest so verstanden), da dürfte dann also die Behandlung in TControl nicht viel bringen.

[Edit]
Wobei, eigentlich müsste doch in beiden Fällen ein WM_PAINT oder so ausgelöst werden?
[/Edit]

Loki77 15. Jan 2007 13:26

Re: Komponente gesucht: Label, Memo mit Anpassung an Hinterg
 
Darüber wird das nichts...
Ich bräuchte wohl wirklich diese Komponente.
Das Bild hat ja verschiedene Bereiche, die Textfelder werden dynamisch über dem Bild
positioniert, und innerhalb des Textes kann der Hintergrund ja mehrere Bereiche haben.
Die Komponente die ich meine konnte sich an eben all diese "Situationen" anpassen.
Wenn ich nur wüsste wo ich die gesehen hab... :wall:
Aber sonst werd ich das bereits vorgeschlagene mal probieren.
Danke,
Gruß Philipp


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz