Neue Farbvariablen definieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Neue Farbvariablen definieren

Beitrag von DL3AD »

Hallo,

gibt es die Möglichkeit eine Farbvariable zu definieren die dann im Objektinspektor mit zur Auswahl steht ?

Gruß Frank

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Neue Farbvariablen definieren

Beitrag von Mathias »

Meinst du für die Eigenschaft Color ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Neue Farbvariablen definieren

Beitrag von DL3AD »

ja
z.B. eine neue Farbe clMyColor1 die ich dann nach belieben neu belegen kann - habe sie aber im Objektinspektor als Eigenschaft zur Auswahl.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Neue Farbvariablen definieren

Beitrag von theo »

Naja, grundsätzlich ist alles möglich. Du hast den kompletten Quellcode von Lazarus und FPC.
Ich würde aber nicht versuchen, die Grundfarben zu "erweitern". Man hat ja den Farbauswahldialog, wo man auch Hex-Werte eingeben kann.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Neue Farbvariablen definieren

Beitrag von wp_xyz »

DL3AD hat geschrieben:gibt es die Möglichkeit eine Farbvariable zu definieren die dann im Objektinspektor mit zur Auswahl steht ?

Damit würde ich nicht anfangen. Denn das ist Design-Code, du musst den PropertyEditor für TColor ändern und für jeden Test Lazarus neu kompilieren - das dauert... Wenn es dir um eine bestimmte Farbe geht, warum schreibst du die denn nicht in den Code, im OnCreate-Ereignis des Formulars z.B.? Denn der User kriegt den Objekt-Inspector sowieso nicht zu sehen.

Oder interessiert dich eher eine andere Art der Farbauswahl? Dann solltest du dir mbColorLib (http://wiki.lazarus.freepascal.org/mbColorLib) oder ColorPalette (http://wiki.lazarus.freepascal.org/ColorPalette) ansehen.

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Neue Farbvariablen definieren

Beitrag von DL3AD »

Hallo wp_xyz,

ja, im OnCreate-Ereignis ist natürlich eine Lösung - mache ich nun auch.
Ich dachte eine "neue Farbe" wäre einfach zu machen.

Ich DANKE euch !

Gruß Frank

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Neue Farbvariablen definieren

Beitrag von DL3AD »

Hallo,

nochmal eine Frage.
Im Form1 habe ich verschiedene Panele mit mehreren Edit-Feldern.
Nun habe ich die Hintergrundfarbe der Form1 festgelegt, die Hintergrundfarbe der Panele festgelegt - damit habe ich nun die Vererbungslienien durchbrochen.

Gibt es nun noch eine Möglichkeit die Hintergrundfarbe der Edit-Felder gemeinsam festzulegen ?
Oder muss ich nun bei jedem Edit-Feld einzeln die Hintergrundfarbe festlegen ?

Gruß Frank

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Neue Farbvariablen definieren

Beitrag von wp_xyz »

Das wird im ParentColor angezeigt. Wenn du die Hintergrundfarbe des Formulars ändert, ändert sich die Hintergrundfarbe aller Controls, deren ParentColor auf true ist. Wenn ein Panel auf dem Formular eine andere Farbe haben soll, dann änderst du diese und ParentColor des Panels springt auf False. ParentColor der Controls auf dem Panel bleibt true und dementsprechend änder sich deren Farbe auch.

Mit einem Edit wird du aber womöglich Probleme haben. Denn auch wenn Color als Property im Object-Inspector steht (m.E. aus Gründen der Delphi-Kompatibilität), heißt das noch lange nicht, dass man Color auch ändern kann. Color bei TEdit, TButton und noch einigen anderen Controls wird vom Widgetset bestimmt, also in der Regel vom Betriebssystem (Themes). Wenn die Edits unbedingt und immer und überall eine andere Farbe brauchen, musst du eine Fremdkomponente suchen, die das explizit zulässt.

Antworten