Farbe von Button ändern

Rund um die LCL und andere Komponenten
Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Farbe von Button ändern

Beitrag von Mathias »

Wieso änderst sich die Farbe das Buttons nicht ?

Die Schriftgrösse ändert sich.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Font.Color := $FF;
  Button1.Font.Size := 20;
  Button1.Color := $FF00;
end;     
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Farbe von Button ändern

Beitrag von Michl »

Unter Windows ist die Farbe von TButtons abhängig vom eingestelltem Theme. Dieses bedingt auch die Farben diverser anderen Komponenten. Die Frage, warum man die Farbe nicht ändern kann, taucht regelmäßig hier im Forum oder auch im englischen Forum auf.

Du könntest einen TBitBtn verwenden:

Code: Alles auswählen

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  BitBtn1.Font.Color := $FF;
  BitBtn1.Font.Size := 20;
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Farbe von Button ändern

Beitrag von Antrepolit »

Die Frage ist, warum man die Standardfarbe überhaupt ändern sollte? Schließlich möchte der Benutzer ja gerne das Theme haben, dass er in seinem System eingestellt hat. Ich erinnere mich mit schrecken an diese verbastelten buten GUIs, die unprofessionell wirken und am Ende eigentlich auch optisch recht schäbig sind.
Grüße, Antrepolit

care only if your os is really burning

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

Re: Farbe von Button ändern

Beitrag von Mathias »

Die Frage ist, warum man die Standardfarbe überhaupt ändern sollte?

Ich wollte nur bei eine Button-Gruppe die Schrift Dunkelblau machen. Ich habe jetzt fsItalic für diesen Zweck genommen.

Bei einem Game, könnte ich mir farbig Button gut vorstellen. Z.B. wen man ein Senso programmieren will.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Farbe von Button ändern

Beitrag von Aliobaba »

Hallo,

Sorry, wenn ich diesen Thread nochmal aufwärme: Kann man mittlerweile schon farbige Buttons generieren?
(Die Antwort, dass das ja eh blöd aussieht, es also niemand braucht, hilft mir grad nicht richtig weiter)
Mein Problem:
Ich habe ein Programm unter Linux geschrieben und kompiliert und brauche dabei mehrere sehr kleine Buttons, die sich besonders durch die Button-Farbe definieren und unterscheiden. Unter Linux wird die Button-Eigenschaft "color" problemlos akzeptiert. Die Entäuschung ist nun, dass dasselbe Programm, kompiliert in einer Windows-Oberfläche, diese Buttons grau (default) läßt obwohl die Eigenschaft "color" im Objektinspektor auch in der "Windows-Version" von Lazarus angeboten wird.

Ist das ein Bug oder stelle ich mich nur wieder 'mal dumm an? ("Programm-Absicht" kanns ja kaum sein, sondern sonst wäre ja wohl die Wahl nicht im Objekt-Inspektor angeboten)

Aliobaba

Und ja - bemüht, selbständig eine Lösung zu finden habe mich ich auch schon, diesen Thread kenne ich: viewtopic.php?f=18&t=1713&
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

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

Re: Farbe von Button ändern

Beitrag von Mathias »

Unter Linux wird die Button-Eigenschaft "color" problemlos akzeptiert

Interessant, das dies unter Linux geht. :shock:

Ist das ein Bug oder stelle ich mich nur wieder 'mal dumm an?

Ich nehme an, das da Windows sich querstellt.

Da hätte ich eine Notlösung, ein Panel, anstatt eines Buttons.

Code: Alles auswählen

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: integer);
begin
  Panel1.BevelOuter := bvLowered;
end;
 
procedure TForm1.Panel1Click(Sender: TObject);
begin
  Panel1.Color:=Random($FFFFFF);
end;
 
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: integer);
begin
  Panel1.BevelOuter := bvRaised;
end
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Farbe von Button ändern

Beitrag von Aliobaba »

Danke Mathias,
mit einem "kleinen Memo-Feld" habe ich's schon probiert: Geht natürlich --- aber der "Maus-Pfeil" wird immer zum Cursor-Strich :cry:

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Farbe von Button ändern

Beitrag von m.fuchs »

Wer sprach denn vom Memo-Feld?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Farbe von Button ändern

Beitrag von Aliobaba »

Hallo,
ich habe ja auch nur davon berichtet, dass ich's so schon probiert habe (und wollte damit meine bescheidene "Experimentierfreudigkeit" kund tun).
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Farbe von Button ändern

Beitrag von m.fuchs »

Ah okay, das las sich etwas missverständlich für mich.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Farbe von Button ändern

Beitrag von Komoluna »

Hi, ich bin mir nicht sicher, aber kennst du die Eigenschaft Cursor???
Dann würde auch das Memo funktionieren...

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

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

Re: Farbe von Button ändern

Beitrag von theo »

Aliobaba hat geschrieben:Ist das ein Bug oder stelle ich mich nur wieder 'mal dumm an? ("Programm-Absicht" kanns ja kaum sein, sondern sonst wäre ja wohl die Wahl nicht im Objekt-Inspektor angeboten)


Das ist so dokumentiert.
Gehe unter "Ansicht" -> "Browser für bedingte Eigenschaften" und tippe "TButton" ein.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Farbe von Button ändern

Beitrag von Christian »

Die Standardbuttons im Windows können nicht Farbig sein. Da musst dich an Microsoft wenden. Alterativ kannst die Buttons selbst zeichnen. Evntl gehts auch mit Speedbuttons die werden von der LCL gezeichnet.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Farbe von Button ändern

Beitrag von Aliobaba »

Hallo,

Danke für die Antworten!
Es hilft aber alles nichts: Wenn Lazarus unter Windows die Eigenschaft "Color" bei Buttons im Objektinspektor anbietet, es aber dann nicht ausführt; das würde ich dann eben "Bug" nennen. (jetzt nehme ich mal auf mich, dass ich geschimpft werde...)

Aber egal, macht ja nichts.
Ich löse das wahrscheinlich so, dass ich eben einen farbigen Rahmen um die winzigen Buttons lege:
Buttons.png
Buttons.png (4.1 KiB) 4671 mal betrachtet

Um die winzigen "eigentlichen" Buttons, die unter Linux farbig sind und unter Windows grau, ist ein entsprechender farbiger "Rahmen.

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

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

Re: Farbe von Button ändern

Beitrag von theo »

Aliobaba hat geschrieben:Es hilft aber alles nichts: Wenn Lazarus unter Windows die Eigenschaft "Color" bei Buttons im Objektinspektor anbietet, es aber dann nicht ausführt; das würde ich dann eben "Bug" nennen. (jetzt nehme ich mal auf mich, dass ich geschimpft werde...)


Das Thema ist nicht neu: http://bugs.freepascal.org/view.php?id=9285

Sicher könnte man darüber reden, dass Lazarus das im Objektinpektor je nach Plattform ausblendet.
Das dürfte aber doch recht aufwändig sein. Kannst ja einen Patch machen, wenn es dir wichtig ist: http://wiki.freepascal.org/Creating_A_Patch/de

Antworten