Textarea - Spalten

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
Melsmann
Foriker
Beiträge: 22
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Textarea - Spalten

Beitrag von Melsmann » Do 28. Nov 2019, 21:59

Hallo zusammen,
Im Gambas-Buch findet sich der Screenshot einer Textarea mit einer sauberen Formatierung (16.14.0 TextArea)
Leider finde ich nirgends den Code zu dem Beispiel.

Kann jemand helfen

Gruß Jürgen

gambasso
Foriker
Beiträge: 1050
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von gambasso » Sa 30. Nov 2019, 10:41

moin,

suche ich auch noch, deshalb nehme ich dann meistens ein 'TableView', evtl. noch ein 'TextEditor'.
Gruss

Melsmann
Foriker
Beiträge: 22
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von Melsmann » Sa 30. Nov 2019, 12:21

Moin
Ich habe mir die Formatierung der Spalten so bauen wollen:
Bei den linksbündigen Spalten hänge ich 20 Leerzeichen an und nehme dann den den linken Teil des Strings (left(String,20)). Bei den rechtsbündigen Spalten nehme ich 20 Leerzeichen, hänge den String an und nehme den rechten Teil davon (right(String,20)). Als Schrift nehme ich Monotype 10, dann sind alle Abstände gleich...
Das funktioniert solange gut, solange in den Strings kein Umlaut (ÄäÖöÜü...) auftaucht. Passiert dies, scheint der String eine größere Länge zu haben. Soll heißen:
Hans (4 Zeichen) + 16 Leerzeichen
Jürgen (6 Zeichen) + 14 Leerzeichen (So sollte es sein)
Jürgen (7 Zeichen) + 13 Leerzeichen (so wird es dargestellt)

Eine Lösung wäre die Überprüfung des Strings auf Umlaute. Wenn nein dann (Left ( String+ 20 Leerzeichen), 20), wenn ja dann (Left ( String+ 20 Leerzeichen), 20-Anzahl(Umlaute))

Hat vielleicht jemand sonst noch eine Idee?

Gruß Jürgen

Benutzeravatar
tionov
Site Admin
Beiträge: 319
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von tionov » Sa 30. Nov 2019, 12:30

Melsmann hat geschrieben:
Sa 30. Nov 2019, 12:21
Eine Lösung wäre die Überprüfung des Strings auf Umlaute. Wenn nein dann (Left ( String+ 20 Leerzeichen), 20), wenn ja dann (Left ( String+ 20 Leerzeichen), 20-Anzahl(Umlaute))

Hat vielleicht jemand sonst noch eine Idee?
Du musst die UTF8-Verträglichen Methoden der String-Klasse verwenden, wie es in der Dokumentation steht http://gambaswiki.org/wiki/cat/string steht:
Most of these functions only deal with ASCII strings. To manipulate UTF-8 strings, use the UTF-8 equivalent method of the String class indicated in the third column.

If no UTF-8 equivalent function is indicated, then the ASCII function also works with UTF-8 strings.
Also nicht Left(...) sondern String.Left(...) usw. Die String Klasse ist hier beschrieben: http://gambaswiki.org/wiki/comp/gb/string
Alles Gute,

tionov

Benutzeravatar
tionov
Site Admin
Beiträge: 319
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von tionov » Sa 30. Nov 2019, 19:40

Beispiel, Text tabellenartig formatieren:
gambas code
' Gambas module file

Public Sub Main()

    Dim sBuffer, sLeft, sMid, sRight As String
    Dim iStart, iLength As Integer

    sBuffer = Space(80)
    
    iStart = 5
    sLeft = "links"
    iLength = String.Len(sLeft)
    sBuffer = String.Left(sBuffer, iStart - 1) & sLeft & String.Mid(sBuffer, iStart + iLength)

    iStart = 35
    sMid = "mitte"
    iLength = String.Len(sMid)
    sBuffer = String.Left(sBuffer, iStart - 1) & sMid & String.Mid(sBuffer, iStart + iLength)

    iStart = 70
    sRight = "rechts"
    iLength = String.Len(sRight)
    sBuffer = String.Left(sBuffer, iStart - 1) & sRight & String.Mid(sBuffer, iStart + iLength)

    Print "<" & sBuffer & ">"

End

Alles Gute,

tionov

Benutzeravatar
tionov
Site Admin
Beiträge: 319
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von tionov » Sa 30. Nov 2019, 20:44

Es geht sogar noch einfacher, mit der Zuweisung zu Mid:
gambas code
' Gambas module file

Public Sub Main()

    Dim sBuffer, sLeft, sMid, sRight As String
    Dim iStart, iLength As Integer

    sBuffer = Space(80)
    iStart = 5
    sLeft = "links"
    Mid(sBuffer, iStart, String.Len(sLeft)) = sLeft

    iStart = 35
    sMid = "mitte"
    Mid(sBuffer, iStart, String.Len(sLeft)) = sMid

    iStart = 70
    sRight = "rechts"
    Mid(sBuffer, iStart, String.Len(sLeft)) = sRight

    Print "<" & sBuffer & ">"

End
Alles Gute,

tionov

Melsmann
Foriker
Beiträge: 22
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Re: Textarea - Spalten

Beitrag von Melsmann » Sa 30. Nov 2019, 22:28

Vielen Dank für die Hilfe...

Viele Grüße
Melsmann

Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 2 Gäste