Fake Icons auf TButton

Rund um die LCL und andere Komponenten
Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Fake Icons auf TButton

Beitrag von Winni »

Hi!

Wenn man Icons auf seinem Button haben möchte, dann wird es arbeitsreich:
TBitBtn oder TSpeedButton oder gar was Selbstgeschnitztes.

Andererseits ärgere ich mich ja über den "bunten Kinderkram", der sich in UTF8 breit macht.
Aber man kann den auch praktisch einsetzen. Und bunt.

Da ganz Lazarus ja auf UTF8 umgestellt ist und die Betriebssysteme auch, ergibt sich doch folgende Frage:

Was machen die Betriebssysteme, wenn man bunte Icons in die Caption einer Komponente eingibt, die nur schwarzen Font erlaubt? Siehe da: bunte Icons.

Und so kommen wir zu dem Trick, wie wir die hässlichen System-Icons vom BitBtn ganz einfach ersetzen könne, die farbig machen können und dazu noch einen simplen TButton benutzen können.

Wir suchen uns aus der endlosen UTF8-Tabelle die gewünschten Icons aus (Empfehlung: Codeblock Dingbats) und geben z.B. als caption ein:

'❌ Nein'

Die Farben erscheinen auf dem Button wie vorgegeben - zumindestens unter gtk2.

Beispiel-Bild im Anhang.
Hoffe es spart Arbeit.

Winni
Dateianhänge
Button_UTF8.png
Button_UTF8.png (15.61 KiB) 2080 mal betrachtet

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fake Icons auf TButton

Beitrag von af0815 »

Bei so Sachen sind die Unterschiede in den Widgets am grössten. Ich werde es mal mit Windows probieren. Kannst du mal den Source hochladen. Weil dann sehe ich gleich wie das dann nativ in der Konversation Linux->Windows in Lazarus funktioniert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fake Icons auf TButton

Beitrag von Socke »

Ob und wie ein solches Zeichen dargestellt wird, hängt doch auch von der Schriftart ab bzw. wie diese automatisch ersetzt wird, wenn die Schriftart das gewünschte Zeichen nicht enthält.
Unter Windows 10 erhalte ich mit Schriftart "default" ein schwarzes Kreuz ohne Farbe.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Fake Icons auf TButton

Beitrag von Winni »

@ Socke

Die UTF8 Zeichen sind eigentlich genormt durch das UTF8 Konsortium. d.h

❌ 10060 274C CROSS MARK

sollte überall rot erscheinen und sollte auch nicht anders aussehen.
Dass Android und Apple sich mal wieder nicht an die Norm halten ist ja eine bekannte Geschichte.

Schade, dass Windows unfähig ist, das Kreuz auf der button.caption farbig darzustellen.

Und man muss natürlich einen UTF8-Font geladen haben. In Linux ist das inzwischen default.
In Windows gibt es auf jeden Fall ne UTF8-Version von Arial, die mit Win10 automatisch daherkommt. Für Win7 muss man die runterladen.

@af0815

Da gibt es keinen Source.
Wie schon gesagt kopiert man sich aus nem Char Tool oder aus dem Internet das UTF8 Zeichen. Oder aus diesem Beitrag. Den kopiert man im Object Inspector in die property "Caption" des Button. Das ist das ganze Geheimnis.

Winni

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

Re: Fake Icons auf TButton

Beitrag von wp_xyz »

Winni hat geschrieben:
Mi 10. Mär 2021, 21:53
Wenn man Icons auf seinem Button haben möchte, dann wird es arbeitsreich:
Ich verstehe jetzt nicht ganz, was es da viel Arbeit sein sollte, wenn ich bei einem TBitBtn die Eigenschaft "Kind" auf bkNo setzen muss. Bei deiner Lösung muss ich die Zeichentabelle öffnen, den Codeblock "Dingbats" suchen (ok - zum Glück kann man die Liste seit einiger Zeit alphabetisch sortieren) und das gewünschte Zeichen anklicken. Das Zeichen landet aber direkt im Quelltext, nicht in der Caption des Buttons - wenn ich das nicht erkenne, weil wie bei Windows das Zeichen nicht rot sondern schwarz ist, habe ich einen Fremdkörper in meinem Quelltext, den mir vielleicht der Compiler beim nächsten F9 meldet, oder aber der Kunde, der sich wundert, dass mitten im Meldungstext ein "x" steht.... OK - ein extremes Beispiel, aber im Normalfall muss ich das Zeichen im Quelltext markieren, in die Zwischenablage kopieren, die Caption des Buttons im Objektinspektor öffnen, das Zeichen reinkopieren und den Caption-Text ergänzen. Sorry, das ist mir viel zu aufwendig.

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

Re: Fake Icons auf TButton

Beitrag von theo »

Nur mal zur Begrifflichkeit.
Es gibt weder UTF8 Zeichen noch ein UTF8 Konsortium.
Es gibt aber Unicode Zeichensätze und ein Unicode Konsortium.
UTF-8 ist eine Codierung.

Soviel Zeit muss sein. :wink:

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Fake Icons auf TButton

Beitrag von Winni »

wp_xyz hat geschrieben:
Do 11. Mär 2021, 10:53

Ich verstehe jetzt nicht ganz, was es da viel Arbeit sein sollte, wenn ich bei einem TBitBtn die Eigenschaft "Kind" auf bkNo setzen muss.
Hi!

Dann sieh Dir noch mal in Ruhe den TBitBtn an, was Du da noch so ändern must:

Cancel, Default, defaultCaption, GlyphShowMode, Kind, Modalresult, etc .....
Und dann noch die Standard Properties.

Und als Resultat erhält man dann einen Button mit einem mickrigen grau-weiß Icon in 16x16.
Im Windows 3.1 / Delphi 1 Stil.

Die Geschmäcker sind ja verschieden, aber meiner ist das nicht.

Wenn Du da schicke Icons ranpfriemeln willst, wird's noch mehr Arbeit.

Winni

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

Re: Fake Icons auf TButton

Beitrag von wp_xyz »

Der Screenshot entstand nach folgenden Schritten:
- einen TBitBtn auf Formular setzen
- Property Kind auf bkNo setzen
- Fertig

Cancel oder Default oder ModalResult musst du, wenn du mit den Defaultwerten nicht einverstanden bist, auch mit deinem TButton ändern. GlyphShowMode bleibt normalerweise unverändert, aber ich könnte so mit Hilfe der ApplicationProperties.ShowButtonGlyph das Icon zusammen mit allen anderen Button-Icons mit einem einzigen Klick ausschalten (du musst dafür alle Captions in allen 100 Formularen deiner Anwendung ändern...)

Und mickrig grau-weiß ist gar nichts.

Aber wem sage ich das. Du bist doch kein Anfänger. Welche Laus ist dir über die Leber gelaufen, dass du so unqualifizierte Aussagen von dir geben musst?
Dateianhänge
TBitBtn.png
TBitBtn.png (1.75 KiB) 1900 mal betrachtet

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Fake Icons auf TButton

Beitrag von gladio »

Cancel, Default, defaultCaption, GlyphShowMode, Kind, Modalresult, etc .....
Und dann noch die Standard Properties.

Und als Resultat erhält man dann einen Button mit einem mickrigen grau-weiß Icon in 16x16.
Eigentlich muß man beim BitButton gar nichts. Ist alles Option.
Natürlich schöner, wenn da eine individuelle Caption gewählt wird und das Bitmap oder Icon kann schon größer als 16x16 sein.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Fake Icons auf TButton

Beitrag von Winni »

gladio hat geschrieben:
Fr 12. Mär 2021, 12:19

Eigentlich muß man beim BitButton gar nichts. Ist alles Option.
Jo. Selbst die Benutzung von TBitBtn ist nur eine Option.

Unter gtk2 kann er übrigens keine Farbe sondern nur grau-weiß.

Winni

Benutzeravatar
six1
Beiträge: 787
Registriert: Do 1. Jul 2010, 19:01

Re: Fake Icons auf TButton

Beitrag von six1 »

Winni hat geschrieben:
Fr 12. Mär 2021, 13:08
Unter gtk2 kann er übrigens keine Farbe sondern nur grau-weiß.

Winni
...ist er enabled gewesen?
Ich setze den unter Debian10 ein und da meine ich schon Farbe erkannt zu haben :mrgreen:
Gruß, Michael

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Fake Icons auf TButton

Beitrag von Winni »

six1 hat geschrieben:
Fr 12. Mär 2021, 13:40
Winni hat geschrieben:
Fr 12. Mär 2021, 13:08
Unter gtk2 kann er übrigens keine Farbe sondern nur grau-weiß.

Winni
...ist er enabled gewesen?
Ich setze den unter Debian10 ein und da meine ich schon Farbe erkannt zu haben :mrgreen:
Hi!

Nee, ist bei mir grau-weiß und enabled.

Hier ist wieder Merkwürden am Werk:
Ist mir schon öfter aufgefallen, dass Lazarus mit gtk2 sich unter Debian (Farbe) anders verhält als Suse (s/w).

Das nächste Rätsel ....

Winni
Dateianhänge
bkNo.png
bkNo.png (13.47 KiB) 1821 mal betrachtet

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Fake Icons auf TButton

Beitrag von Timm Thaler »

Auf dem Raspi unter Raspbian ist es farbig.

Aber warum zum Henker steht im Formulareditor mit Kind = bkAbort "X Abbruch", und in der Exe unter Windows und auf dem Raspi wird daraus "Abort" - obwohl deutsche Ländereinstellung? Bei bkCancel steht im Editor "X Abbrechen" - in der Exe wird daraus "X Cancel".
Dateianhänge
form3.png
form3.png (6.07 KiB) 1814 mal betrachtet

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

Re: Fake Icons auf TButton

Beitrag von wp_xyz »

Das liegt an dem Übersetzungssystem. In deiner IDE ist die Sprache auf Deutsch eingestellt, die IDE findet alle Sprachdateien und kann die übersetzten Text anzeigen (wobei ich die Übersetzung von "Abort" als "Abbruch" und "Cancel" als "Abbrechen" im Zusammenspiel für nicht sehr gelungen halte).

Dein Programm dagegen ist wahrscheinlich unübersetzt (Projekt-Option i18n nicht aktiviert) und weiß nicht, wo die Übersetzungen der Standardtexte stehen - daher kommt der Defaulttext aus dem Quelltext zur Anwendung.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fake Icons auf TButton

Beitrag von Socke »

wp_xyz hat geschrieben:
Fr 12. Mär 2021, 15:49
(wobei ich die Übersetzung von "Abort" als "Abbruch" und "Cancel" als "Abbrechen" im Zusammenspiel für nicht sehr gelungen halte).
Dazu hatten wir vor kurzem eine Diskussion: Im Englischen gibt es wohl unterschiedliche Konzepte für diese Worte. Im Deutschen gibt es sprachlich keinen so feine Differenzierung.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten