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 Wie kann man die Farbe einer Checkbox ändern? (https://www.delphipraxis.net/55095-wie-kann-man-die-farbe-einer-checkbox-aendern.html)

emsländer 16. Okt 2005 19:39


Wie kann man die Farbe einer Checkbox ändern?
 
Moin,

vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber auch die Suche brachte kein Ergebnis.

Ich möchte die Farbe einer Checkbox ändern. Und zwar die, wo man den Haken reinmacht und nicht aussen rum oder die Schrift.

Die Frage ist wie?

Gruss

EL

marabu 16. Okt 2005 20:05

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Moin EL,

ist dir bekannt, dass die Farbeinstellung für die kleine CheckBox dieselbe ist, die auch die Farbe von TEdit, TStringGrid und so ziemlich allen anderen Window-Controls steuert? Es ist die Farbe, die du unter Desktop|Eigenschaften|Darstellung|Fenster einstellst. Und diese Farbe wird vom Benutzer deines Programms verwaltet, mitunter vom Admin - aber nicht von dir!

Freundliche Grüße vom marabu

emsländer 16. Okt 2005 20:07

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von marabu
Moin EL,

ist dir bekannt, dass die Farbeinstellung für die kleine CheckBox dieselbe ist, die auch die Farbe von TEdit, TStringGrid und so ziemlich allen anderen Window-Controls steuert? Es ist die Farbe, die du unter Desktop|Eigenschaften|Darstellung|Fenster einstellst. Und diese Farbe wird vom Benutzer deines Programms verwaltet, mitunter vom Admin - aber nicht von dir!

Freundliche Grüße vom marabu

Das ist bekannt. Ich möchte das aber "auftrennen".

Hintergund: Ich habe in meiner Applikation sogenannte Pflichtfelder, die ich farbig anders unterlegt habe.
Und dazu gehören auch einige Checkboxen und Radiobuttons.

Gruss

EL

marabu 16. Okt 2005 20:30

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Mein Tag ist um, aber noch ein Tip: die CheckBox ist wohl ein combi control. Versuche mal, ob du das handle des windows bekommst, welches die kleine Box repräsentiert.

marabu

Union 16. Okt 2005 20:35

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Damit das Ganze sauber läuft, wirst Du wohl eine eigene Komponente dafür erstellen müssen, denn die Standard-Checkbox liefert auch keinerlei Events, um in den Paint Process eingreifen zu können. Ein schönes Beispiel mit Sourcecode findest Du hier Torry Xp Controls

marabu 17. Okt 2005 05:28

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Moin EL,

ich habe mal etwas näher drauf geschaut und festgestellt, dass die CheckBox ein button control ist. Da würde es eventuell ausreichen eine Komponente von TCheckBox abzuleiten und deren CreateParams-Methode zu überschreiben, um ihr den style BS_OWNERDRAW zu verpassen. Aber vielleicht erfüllt ja der "russische" Code, den Union verlinkt hat, deine Anforderungen und du bist schon fertig.

Grüße vom marabu

emsländer 17. Okt 2005 08:11

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von marabu
Moin EL,

ich habe mal etwas näher drauf geschaut und festgestellt, dass die CheckBox ein button control ist. Da würde es eventuell ausreichen eine Komponente von TCheckBox abzuleiten und deren CreateParams-Methode zu überschreiben, um ihr den style BS_OWNERDRAW zu verpassen. Aber vielleicht erfüllt ja der "russische" Code, den Union verlinkt hat, deine Anforderungen und du bist schon fertig.

Grüße vom marabu

Habe versucht die zuvor genannte Komponente einzubauen. Er meckert irgendwas von vcl30.. an ..

Gruss

EL

Sharky 17. Okt 2005 08:20

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Hai EL,

die DPK die in dem Archiv dabei ist wurde wohl für Delphi3 erstellt. Du musst im requires Teil stehende VCL durch die für deine Delphiversion (vcl90 für d2005) ersetzen.

emsländer 17. Okt 2005 08:35

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von Sharky
Hai EL,

die DPK die in dem Archiv dabei ist wurde wohl für Delphi3 erstellt. Du musst im requires Teil stehende VCL durch die für deine Delphiversion (vcl90 für d2005) ersetzen.

Hi Sharky,

auch das klappt irgendwie nicht. Hab dort jetzt


requires
vcl90;

contains
xpButton,
xpCheckBox;

end.

stehen, aber auch da meckert er die vcl90 an :gruebel:


Gruss

EL

emsländer 17. Okt 2005 08:46

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von emsländer
Zitat:

Zitat von Sharky
Hai EL,

die DPK die in dem Archiv dabei ist wurde wohl für Delphi3 erstellt. Du musst im requires Teil stehende VCL durch die für deine Delphiversion (vcl90 für d2005) ersetzen.

Hi Sharky,

auch das klappt irgendwie nicht. Hab dort jetzt


requires
vcl90;

contains
xpButton,
xpCheckBox;

end.

stehen, aber auch da meckert er die vcl90 an :gruebel:



Gruss

EL

Problem ist gelöst. DAS:

requires
rtl,
vcl;
contains
xpButton,
xpCheckBox;

end.

musste dort rein.

Nun mal testen, ob das Ding genau das ist, was ich brauche ;-)



Gruss

EL

emsländer 17. Okt 2005 08:51

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von Union
Damit das Ganze sauber läuft, wirst Du wohl eine eigene Komponente dafür erstellen müssen, denn die Standard-Checkbox liefert auch keinerlei Events, um in den Paint Process eingreifen zu können. Ein schönes Beispiel mit Sourcecode findest Du hier Torry Xp Controls



Moin,

auch das Teil ist leider nicht das Genaue. Denn die Farbänderung betriff den Hintergund der Schrift incl. der Box.. grummel
Aber vielleicht ist hier einer der Hardcore-Coder in der Lage das Teil dahingehend abzuändern? :gruebel:

Gruss

EL

marabu 17. Okt 2005 10:29

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Habe noch ein wenig im WIN32 SDK geschmökert:

Zitat:

The WM_CTLCOLORBTN message is sent to the parent window of a button when the button is about to be drawn. By responding to this message, the parent window can set a button's text and background colors.
...
REMARKS
The text color of a check box or radio button applies to the box or button, its check mark, and the text. ...
Sieht so aus, als müsste man eine CheckBox von Grund auf nachbauen, wenn man die Farbe der check mark box aus einer Anwendung heraus individuell kontrollieren will.

marabu

wfoertsch 17. Okt 2005 11:17

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,
leg doch einfach nen shape hinter ...
dann musst du zwar ein anderes label für die caption nehmen aber so war es am schnellsten gemacht ...



gruss wolle

emsländer 17. Okt 2005 11:18

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von wfoertsch
hi,
leg doch einfach nen shape hinter ...
dann musst du zwar ein anderes label für die caption nehmen aber so war es am schnellsten gemacht ...



gruss wolle

Es geht nicht um das Drumherum. Die Farbe IN der Box soll geändert werden können.

Gruss

EL

Kroko1999 17. Okt 2005 11:21

Re: Wie kann man die Farbe einer Checkbox ändern?
 
so etwas habe ich vorlanger Zeit auch mal versucht, ich glaube Du musst es selbst schreiben, denn die Checkboxes liegen als Bitmap in Windows (IMHO)!

emsländer 17. Okt 2005 11:22

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von Kroko1999
so etwas habe ich vorlanger Zeit auch mal versucht, ich glaube Du musst es selbst schreiben, denn die Checkboxes liegen als Bitmap in Windows (IMHO)!

Grummel .... wundert mich nur, das bisher noch niemand so ein rudimentäres Teil geändert oder geschrieben hat :gruebel:


Gruss

EL

Nils_13 17. Okt 2005 11:23

Re: Wie kann man die Farbe einer Checkbox ändern?
 
setz die checkbox in einen Panel, der die Farbe hat, die du haben willst.

Kroko1999 17. Okt 2005 11:27

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Nils_13
setz die checkbox in einen Panel, der die Farbe hat, die du haben willst.

dann ist der Haken immer noch schwarz :!:
//EDIT: Bild
//Edit2: und das Innere immer noch weiß

emsländer 17. Okt 2005 11:34

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von Kroko1999
Zitat:

Zitat von Nils_13
setz die checkbox in einen Panel, der die Farbe hat, die du haben willst.

dann ist der Haken immer noch schwarz :!:
//EDIT: Bild

Und ausserdem geht es nicht um den Haken. Es geht um die innere Farbe der Box :?


Gruss

EL

hanselmansel 17. Okt 2005 11:48

Re: Wie kann man die Farbe einer Checkbox ändern?
 
HiHo,

mit ein bisschen Bastelei kannst du die Checkbox auch selbst zeichnen. Du könntest deine Komponente von irgendeinem Control ableiten, das dir schon die Methoden des Canvas mitbringt. Der 3D-Effekt wird (unter Win9x) durch einen hellen Winkel rechts unten und einen schwarzen Winkel links oben dardestellt. Da müsstest du nur mit LineTo rumspielen, bis es richtig gut aussieht. Dann kanst du im Zentrum ein Rectangle beliebiger Farbe zeichnen. (Als Default liefert Delphi AFAIK sogar clWindow) Das Häckchen sollte auch keine größere, künstlerische Leisung darstellen. Dann musst du nur noch die restliche Funktionalität einer Checkbox implementieren, und wuppdi, alle sind glücklich.

MfG,

hanselmansel

Union 17. Okt 2005 12:01

Re: Wie kann man die Farbe einer Checkbox ändern?
 
Zitat:

Zitat von emsländer
Es geht nicht um das Drumherum. Die Farbe IN der Box soll geändert werden können.

Die Box wird in xpCheckBox.pas in der Prozedur DrawCheckArea gezeichnet. Dort musst Du bei den GradientFillRect Aufrufen mit den Farben experimentieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 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