Problem mit #LF$ und ListiconGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Problem mit #LF$ und ListiconGadget

Beitrag von ProgOldie »

Ich habe in einem 2000-Zeilen Programm u.a. in einem Formular mehrere Gadgets, darunter ein Editorgadget. Die Inhalte aller Gadgets des Formulars lasse ich der Übersichtlichkeit wegen in ein ListiconGadget übertragen. Dazu hänge ich bei der Übertragung an den Inhalt jedes Gadgets ein #LF$ an, so dass ich mit SetgadgetitemText() eine komplette Zeile ins ListiconGadget übertragen kann.

Dabei gibt es ein Problem: Enthält nämlich das Editorgadget selbst ein oder mehrere #LF$, verschieben sich deswegen natürlich die Spalteninhalte unerwünschterweise um die entsprechende Zahl von Spalten nach rechts.

Wie kann man diesen Effekt umgehen? (Die Zeilenumbrüche selbst muss ich im Editorgadget beibehalten)
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem mit #LF$ und ListiconGadget

Beitrag von Kiffi »

entferne vor dem Einfügen in das ListIconGadget alle #LF$ (oder ersetze sie durch ein beliebiges anderes Zeichen).

Grüße ... Peter
a²+b²=mc²
Benutzeravatar
xXRobo_CubeXx
Beiträge: 120
Registriert: 12.06.2015 16:08
Computerausstattung: Version 5.41 LTS
Wohnort: Wohnort
Kontaktdaten:

Re: Problem mit #LF$ und ListiconGadget

Beitrag von xXRobo_CubeXx »

Da musst du die #LF$ durch Leerzeichen oder anderes Zeichen ersetzen dann hast du keine Spaltenausbrecher. :)
Version 5.41 LTS :)
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: Problem mit #LF$ und ListiconGadget

Beitrag von ProgOldie »

Danke für die Lösungsvorschläge, die so funktionieren. Allerdings verändert man dadurch den jeweilgen Wert, was für mich wegen einer Datenbankanbindung unschön ist.

Ich habe inzwischen eine einfachere Lösung gefunden, indem ich nicht die ganze Zeile des Listicongadgets auf einmal übertrage, sondern jede einzelne Zelle für sich.

Code: Alles auswählen

EnableExplicit

OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0,  10,  25, 400, 90, "Spalte 0", 100)
AddGadgetColumn(0,1,"Spalte 1",90)
AddGadgetColumn(0,2,"Spalte 2",90)
AddGadgetColumn(0,3,"Spalte 3",90)
AddGadgetItem(0,-1,"Inhalt Sp0")
AddGadgetItem(0,-1,"Inhalt Sp0")

SetGadgetItemText(0,1, "a "+#LF$+"b"+#LF$,1)  ;#LF$ hier nicht sichtbar
SetGadgetItemText(0,1, "c",2)

EditorGadget(1,100,150,100,50)
SetGadgetText(1,GetGadgetItemText(0,1,1))  ;Text aus der LIcGadget-Zelle übernehmen
                                           ; jetzt wird #LF$ berücksichtigt

;auch das Umgekehrte klappt
; SetGadgetText(1, "c "+#LF$+"d"+#LF$)  ; etwas ins Editorgadget mit #LF$
; SetGadgetItemText(0,1,GetGadgetText(1),1) ; und ins LIconGadget übernehmen 

Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Antworten