[gelöst] Underline: Wie lässt sich das realisieren?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

[gelöst] Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

Hallo Zusammen. Hoffe es gehört hierher.

Habe mehrmals versucht, Wörter (von Button. Label etc.) unterstreichen zu lassen. Leider geht dies nicht. Folgendes habe ich bis jetzt leider Erfolglos versucht:
- Im Objektinspektor Unter Font -> Style -> fsUnderline: auf True gesetzt
- Im Objektinspektor Unter Font das TFont aufgerufen. Dort zeigte es aber bei keiner Schrift die Auswahl Underline an.
- Im Quelltext durch den Befehl

Code: Alles auswählen

xx1.Font.Style := True;
'
- Im Quelltext durch den Befehl

Code: Alles auswählen

xx1.Font.Style = xx1.Font.Style + [fsUnderline];

Weiß Jemand von Euch was ich falsch mache, oder was da los ist?

Benutze Lazarus unter Linux (Xubuntu - mit gtk2 (beta)).
Version 0.9.28.2
FPC-Version: 2.4.0
Zuletzt geändert von Erwin am Mi 7. Jul 2010, 12:37, insgesamt 1-mal geändert.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Teekeks »


pluto
Lazarusforum e. V.
Beiträge: 7096
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Underline: Wie lässt sich das realisieren?

Beitrag von pluto »

Kurz Version: Durchsteichen und Unterstreichen geht nicht. Bei eigenen Komponenten kann man es selbst Implementieren. Bei einem Button jedoch nicht.
MFG
Michael Springwald

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

Danke, Teekeks. Aber leider scheint es bei mir nicht zu klappen. Habe die eine Zeile dazu gefügt, und 3 Varianten (also Stellen) ausprobiert. All dies half aber leider nichts. Vielleicht muss man auch ein wenig mehr machen (mein Englisch ist sehr schlecht). Aber selbst dann ... der Fehler besteht ja schon bei meiner 1 Jahr älteren Version. Mir fehlt da einfach die Motivation, um zu glauben, dass es noch was bringt, sich länger damit zu beschäftigen.

pluto hat geschrieben:Kurz Version: Durchsteichen und Unterstreichen geht nicht. Bei eigenen Komponenten kann man es selbst Implementieren. Bei einem Button jedoch nicht.

Button, Label, Edit ... bei all dem geht das also nicht? Wozu ist dann diese Eigenschaft vorhanden?
Danke für die Klarstellung. Irgend so etwas hatte ich schon befürchtet.
Schade. Da muss ich mir noch mal überlegen, ob Lazarus das richtige für mich ist.

Bei eigenen Komponenten ginge dies? Das finde ich jetzt komisch. Hat man dies etwa gezielt bei den Komponenten ausgelassen? Mal sehen, wie man überhaupt Komponenten erstellt. In Deutscher Version will mir Namentlich diesbezüglich nichts so rechtes auffallen, mit welcher Auswahl so ein Projekt gestartet wird.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Teekeks »

Weil das unter gtk1 win23 usw. geht. Nur nicht unter gtk2...

Socke
Lazarusforum e. V.
Beiträge: 2813
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: Underline: Wie lässt sich das realisieren?

Beitrag von Socke »

Erwin hat geschrieben:
pluto hat geschrieben:Kurz Version: Durchsteichen und Unterstreichen geht nicht. Bei eigenen Komponenten kann man es selbst Implementieren. Bei einem Button jedoch nicht.

Button, Label, Edit ... bei all dem geht das also nicht? Wozu ist dann diese Eigenschaft vorhanden?
Danke für die Klarstellung. Irgend so etwas hatte ich schon befürchtet.
Schade. Da muss ich mir noch mal überlegen, ob Lazarus das richtige für mich ist.

Da wir hier auch alle um plutos Englischkenntnisse wissen (oder hat sich was daran geändert?), möchte ich noch hinzufügen, dass dieses Verhalten ein Fehler ist und nur GTK 2 betroffen ist. Dieser Fehler ist in der aktuellen Entwicklungsversion schon behoben und wird in der nächsten Version (0.9.30) behoben sein. Mit allen anderen Widgetsets gibt auch unterstrichenen Text! Es wurden also nur ein paar Textzeilen ausgelassen (ein paar Textzeilen können auch die Sicherheit eines ganzen kryptografischen Systems verändern...).

plutos Vorschlag einen Text in einer eigenen Komponente selbst zu unterstreichen halte ich für mindestens fragwürdig. Vor allem deshalb, weil ich hoffe, dass die Pango (GTK 2-Zeichen- und Textsystem) mehr Gespür für typografische Feinheiten haben. Das macht dann den Unterschied zwischen einer Linie im Text und gut lesbarem unterstrichenem Text (wobei letzteres sowieso kaum zu erreichen ist).

Was das unterstreichen von Text an geht, bin ich aus typografischer Sicht dagegen. Ausgenommen sollten nur einzelne Buchstaben zur Kennzeichnung von Tastenkürzeln (was ganz einfach durch ein & vor dem entsprechenden Zeichen zu erreichen ist und auch unter GTK 2 funktioniert). Bei allem anderen, wo ein "da muss unbedingt ein Unterstrich hin" sollte man nach wesentlich eleganteren Möglichkeiten, wie Kursivschrift oder (wenn es wirklich wichtig ist) Fettschrift, suchen. Unterstrichener Text ist ein Relikt aus Zeiten, in denen es noch Schreibmaschinen gab und dies die einzige Möglichkeit zur Textauszeichnung (außer Sperren) war.

Erwin hat geschrieben:Schade. Da muss ich mir noch mal überlegen, ob Lazarus das richtige für mich ist.

Als ich das erste Mal Lazarus angeschaut habe, war ich auch nicht sofort überzeugt; das hat sich aber ein paar halbe Versionen später vollkommen geändert und ich habe mich komplett von Delphi 7 gelöst (mittlerweile bin ich auch auf Linux umgestiegen). Bitte vergiss aber nicht, dass Lazarus immer noch in der Entwicklung ist und wahrscheinlich auch noch sehr lange aktiv weiter entwickelt werden wird. Ich möchte dich daher einladen, Lazarus zu testen, und wenn es dir nicht so ganz gefällt, in eins, zwei Jahren noch mal vorbei zu schauen wie es dann aussieht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

@ Teekeks,
dies ging aber bei dem Text, denn Du verlinkst hast, für mich (als Englisch-Laie) nicht hervor. Dort stand was von gtk2 und eine Anleitung etwas zu ändern. Dann ist dies dort also nichts anderes, als eine Konkrete Mitteilung, was geändert werden muss, dessen Änderung man aber selbst nicht vornehmen kann, ... wegen irgendwelchen anderen Abhängigkeiten? ... ohoh, jetzt dämmert es mir erst. Einiges hat mich da irritiert, bei der Aufmachung des Forumsbeitrags. Kann es sein, dass dies eine Interne Bugmeldung war, mit kurzer Beschreibung zur Aufhebung des Problems?

@ Socke
Ich habe es mal mit einem anderen Widget-Set probiert. Dort geht es aber auch nicht.

Das mit der Notwendigkeit von Unterstreichen habe ich mir wegen dem nicht-funktionieren auch bereits überlegt. Während es teils das weglassen noch geht, geht es woanders wiederum nicht. Zum Beispiel wenn ich vor einem Eingabefeld die kurze Bezeichnung hinschreibe, dient das Unterstreichen viel mehr als Trennung und Zielführung (optische Zeile). Wobei ich schon getestet habe, dass ich dies eventuell mit einem weiteren Label ebenfalls machen könnte. Führt aber dann wiederum zu mehr Komponenten im Programm.
Und das die Hervorhebung alt ist, da stimme ich Dir zu. Aber gerade dies macht zumindest für mich den Reiz aus. Weil andere Hervorhebung (Farbe, Kursiv etc.) ist für mich eher teils irritierend. Aber wen ich recht überlege ... Unterstreichen dafür wiederum im Laufe der Zeit zugleich irgendwie weniger auffallend.

Dieser Fehler dürfte aber schon über 12 Monate alt sein.
Bin vor paar Jahren bei Linux gelandet. Naja, nicht direkt Linux, sondern eben ein fertiges Distri, die in Sachen Optik und Handhabung gezielt mit Win konkurriert. Deshalb bin ich wiederum unter andere auch an Lazarus interessiert. Meine erste Programmiersprache am PC war Delphi 2. Und ich dachte mir, wenn ich schon was programmiere, wäre es Sinnvoller, es unter Linux zu machen.
Aber inzwischen weiß ich nicht so recht.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

Socke
Lazarusforum e. V.
Beiträge: 2813
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: Underline: Wie lässt sich das realisieren?

Beitrag von Socke »

Ich benutze Windows nur noch zum Spielen (wenn ich es denn tue). Alles andere erledige ich mit Linux.

Zum Unterstreichen: Beim Einarbeiten des Patches muss dir ein Fehler unterlaufen sein. Bei mir funktioniert nämlich alles wunderbar (Debian Lenny/FPC 2.4.0 Lazarus r22277 (müsste v0.9.28.2 sein), GTK 2 v2.12.12).
Schritt für Schritt Anleitung:
  • erstmal alles wieder in den Ursprungszustand versetzen (also dein Versuch, die Datei zu ändern rückgängig machen)
  • Datei lazarus-verzeichnis/lcl/interfaces/gtk2/gtk2winapi.inc öffnen
  • Zwischen Zeile 223 und 225 die Zeile

    Code: Alles auswählen

    pango_layout_set_attributes(CurFont, AttrList);
    einfügen; Speichern
  • LCL neu kompilieren: Werkzeuge Lazarus Kompilieren einrichten... -> es muss nur die LCL neu gebaut werden (LCL sollte auf clean & build stehen; Rest muss nicht, kann aber, wenn gewollt ist)
  • Eigenes Programm neu erstellen (ggf. alte Dateien löschen)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

Das mit dem neu Kompilieren war der Teil, den ich in Englisch nicht verstanden hatte (oder gar überlesen habe?). Danke. Das erklärt einiges.
Jetzt geht das Unterstreichen beim Label. Aber nur dort scheinbar. Bei Buttons, Edit nicht. Andere habe ich noch nicht getestet.
Des weiteren hatte ich Anfangs Probleme, wegen der Admin-Rechte, als ich es dann schaffte, habe ich statt LCL zuerst 'andere' neu kompiliert. Da tauchten einige Fehlermeldungen auf. Muss ich mir da jetzt Sorgen machen? Oder sind diese Fehlermeldungen normal (wegen den Fehlermeldungen)? Leider konnte ich mir diese nicht notieren, weil es danach automatisch neu gestartet ist (das Lazarus).
Bin mir jetzt nicht sicher ob ich es auf 'Clean und Build' stand? Hoffe mal, damit war nicht der Hacken bei 'Alles säubern' gemeint?
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

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

Re: Underline: Wie lässt sich das realisieren?

Beitrag von theo »

Erwin hat geschrieben:Jetzt geht das Unterstreichen beim Label. Aber nur dort scheinbar. Bei Buttons, Edit nicht. Andere habe ich noch nicht getestet.

Beim Button wird die Unterstreichung für den Shortcut eingesetzt.
Vielleicht sollte man sich einfach an die Standards halten, und so etwas gar nicht wollen ;-)
Kennst du irgend eine halbwegs professionelle Anwendung die voll unterstrichene Buttons oder Labels verwendet? Ich nicht.

Erwin hat geschrieben:Bin mir jetzt nicht sicher ob ich es auf 'Clean und Build' stand? Hoffe mal, damit war nicht der Hacken bei 'Alles säubern' gemeint?

Ich mach nach einem Update immer:
"Clean up and build all" aus den Quick Options, dann im Advanced Tab die Examples auf "none".

Man kann die IDE übrigens auch auf Deutsch umstellen ;-)

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

theo hat geschrieben:Beim Button wird die Unterstreichung für den Shortcut eingesetzt.
Vielleicht sollte man sich einfach an die Standards halten, und so etwas gar nicht wollen ;-)
Kennst du irgend eine halbwegs professionelle Anwendung die voll unterstrichene Buttons oder Labels verwendet? Ich nicht.

Bin mir sicher, dass es in Delphi 2 und 3 so ziemlich alles, was eine Schrift enthielt, unterstreichen konnte. Bei der Scriptsprache Python geht dies ebenfalls. Andere Sprachen habe ich bis jetzt nicht näher kennen gelernt.
Aber das mit dem davon wegkommen, stimme ich Dir bei meiner Häufigen Nutzung zu. Anderseits besonders in Fällen, wo etwas zugleich als Überschrift herhalten soll, geht dies dann recht schwer. Insbesondere bei Label erscheint mir da das Unterstreichen ja nach Situation geradezu als Art Pflicht.

theo hat geschrieben:Man kann die IDE übrigens auch auf Deutsch umstellen ;-)

Ist sie auch. Vereinzelt steht das eine oder Andere trotzdem noch in Englisch dort (in bestimmten Unterfunktionen).
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

Socke
Lazarusforum e. V.
Beiträge: 2813
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: Underline: Wie lässt sich das realisieren?

Beitrag von Socke »

Buttons unterstützen unter GTK 2 nur die Font-Styles fsBold und fsItalic. fsStrikeOut und fsUnderline werden ignoriert. Soweit ich das sehe, ist das wahrscheinlich eine bewusste Designentscheidung als ein Fehler (auch wenn man es in Hinsicht auf Delphi-Kompatibilität anders sehen kann).
Aus meinen kurzen Ausflügen zu C/C++ (und Glade) kann ich sagen, dass Buttons unterstrichenen Text nur über Umwegen unterstützen. Dazu muss man einem Button ein Label hinzufügen und dort den Text-Style ändern. Da ich außer ein paar Klicks aber keine Erfahrung damit habe, kann es auch sein, dass es viel einfacher geht...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

Also selbst mit Label schien es bei Buttons nicht so recht zu gehen, weil ich diese nicht ins Button rein bekommen habe. Aber vielleicht muss ich da noch üben.
Ansonsten, je mehr ich nachdenke, desto komischer kommt es mir auch selbst vor. Muss eine Eigenart von mir sein, oft zu Unterstreichen.
Danke für den Hinweis von C. Wäre vielleicht überhaupt interessant, mal in Erfahrung zu bringen, ob dies oft angeboten wird in Sprachen, oder eher selten, und ich einfach zufällig gleich über 2 gestolpert bin, wo dies geht. ... mir fällt gerade ein ... glaube es gibt noch eine Dritte, wo dies auch geht. Müsst es vorher noch mal überprüfen.
Beim Kompilieren tauchte dann diese Meldung auf: Warning. Local variable 'Keys' does not seem to be initialized (LCL beendet)
Mach ich mir da wiederum lediglich um einen Hinweis sorgen?

Socke
Lazarusforum e. V.
Beiträge: 2813
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: Underline: Wie lässt sich das realisieren?

Beitrag von Socke »

Erwin hat geschrieben:Also selbst mit Label schien es bei Buttons nicht so recht zu gehen, weil ich diese nicht ins Button rein bekommen habe. Aber vielleicht muss ich da noch üben.
Ansonsten, je mehr ich nachdenke, desto komischer kommt es mir auch selbst vor. Muss eine Eigenart von mir sein, oft zu Unterstreichen.
Danke für den Hinweis von C. Wäre vielleicht überhaupt interessant, mal in Erfahrung zu bringen, ob dies oft angeboten wird in Sprachen, oder eher selten, und ich einfach zufällig gleich über 2 gestolpert bin, wo dies geht. ... mir fällt gerade ein ... glaube es gibt noch eine Dritte, wo dies auch geht. Müsst es vorher noch mal überprüfen.

Zur Klarstellung: Labels oder andere Komponenten auf einen Button drauf zu packen wird nur von GTK 2 (evtl. auch GTK 1) unterstützt. Daher wirst du nicht darum herum kommen, dir das GTK 2-Handle des Buttons zu holen und die entsprechenden Komponenten manuell mit den GTK 2-Funktionen zu erstellen. Lazarus bzw. die LCL unterstützt diese Möglichkeit selbst nicht, da sie nur unter GTK 2 funktioniert.

Den Text in grafischen Anwendungen zu unterstreichen ist keine Frage der Programmier- oder Scriptsprache. Vielmehr muss dies von der Grafikengine - also diejenige Bibliothek, die den Text rendert - unterstützt werden. Unter GTK 2 ist das die libpango und unter Windows müsste das die gdi sein. Die andere Frage ist die, ob die entsprechenden Funktionen zum ändern der Textausgabe auch genutzt werden (siehe Bug in der LCL). Solange du eine Turing-fähige Sprache benutzt, kannst du damit jedes Problem lösen; egal ob unterstrichenen Text ausgeben oder ein Betriebssystem programmieren...
Erwin hat geschrieben:Beim Kompilieren tauchte dann diese Meldung auf: Warning. Local variable 'Keys' does not seem to be initialized (LCL beendet)
Mach ich mir da wiederum lediglich um einen Hinweis sorgen?

Die Meldung besagt nur, dass der Variablen "Keys" vor dem ersten Lesen kein Wert zu gewiesen wurde (Schreiben). Daher hat sie einen undefinierten Inhalt (d.h. das Programm kann nicht davon ausgehen, dass ein bestimmter Wert darin enthalten ist). Je nachdem, wie sie genutzt wird, stellt das kein Problem dar. Du hast aber die wichtigen Angaben über Datei, Zeile und Spalte vergessen, daher kann keiner genaueres sagen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Underline: Wie lässt sich das realisieren?

Beitrag von Erwin »

Socke hat geschrieben:Den Text in grafischen Anwendungen zu unterstreichen ist keine Frage der Programmier- oder Scriptsprache. Vielmehr muss dies von der Grafikengine - also diejenige Bibliothek, die den Text rendert - unterstützt werden. Unter GTK 2 ist das die libpango und unter Windows müsste das die gdi sein. Die andere Frage ist die, ob die entsprechenden Funktionen zum ändern der Textausgabe auch genutzt werden (siehe Bug in der LCL). Solange du eine Turing-fähige Sprache benutzt, kannst du damit jedes Problem lösen; egal ob unterstrichenen Text ausgeben oder ein Betriebssystem programmieren...

Na toll, da schwirrt mir wieder mal der Kopf. Damals, mit Basic unter Amstrad. war dies viel einfacher. Was ging, das ging, und der Rest ... Heute gibt es zu viele Möglichkeiten, und bin dennoch nicht zufrieden? Muss wohl was damit zu tun haben, weil ich vieles erst gesehene unter Win als neues Standard betrachte. Also wenn ich das richtig verstehe, obwohl er also auf GTK2 eingestellt ist, nutzt er dennoch in erster Linie LCL? LCL ist, glaube ich, so etwas wie eine Art Grund-Grafik für alle Linux-Systeme, oder? Demzufolge könnten bestimmten Darstellung (unterstreichen von Buttons) dazu führen, dass dies auf anderen Linux-Distri-Versionen nicht funktioniert? Je mehr ich also nur dies nutzte, was derzeit ohnehin machbar ist, um auf so mehren BS läuft dies dann vermutlich? Aber das unterstreichen von Label selbst zählt wohl nicht dazu, weil es ja ein Fehler ist? Aber das nicht unterstreichen von anderen (Buttons etc.) ist wiederum so gewollt, und könnte unter anderem Schwester-BS ärger machen?

Edit: Danke für die tieferen Einblicke in all dies umfangreiche Zeug.

Antworten