ListIconGadget - Eintrag mehrzeilig ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

ListIconGadget - Eintrag mehrzeilig ?

Beitrag von IronEagle »

Hallo Leute,

kennt jemand eine Möglichkeit, Einträge in einem ListIconGadget mehrzeilig zu erstellen?
Oder ist es nur möglich, wenn ich ein eigenes Gadget bastel um dieses zu verwirklichen ?

Viele Grüße, Robert
PureBasic 5.71 | Windows 10 Home (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von NicTheQuick »

Offensichtlich geht das nur ab der 2. Spalte:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 300, "ListIcon Multiline", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	ListIconGadget(0, 5, 5, 490, 290, "Name", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
	AddGadgetColumn(0, 1, "Info", 150)
	AddGadgetColumn(0, 2, "Sonstiges", 100)
	AddGadgetItem(0, -1, "Eintrag 1")
	AddGadgetItem(0, -1, "Eintrag 2")
	SetGadgetItemText(0, 1, "1. Zeile" + #LF$ + "2. Zeile", 1)
	Repeat
		Event = WaitWindowEvent()
	Until Event = #PB_Event_CloseWindow
EndIf
Bild
Wahrscheinlich geht mit API noch mehr.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von RSBasic »

@NicTheQuick
Das geht bei Linux? Nicht schlecht, bei Windows ist es so ohne WinAPI nicht möglich.
Mit WinAPI: http://www.rsbasic.de/aktualisierung/wi ... C3%A4ge.pb
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von NicTheQuick »

Geht das bei Windows nicht? 8)
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von Shardik »

NicTheQuick hat geschrieben:Geht das bei Windows nicht? 8)
Nein, denn Du hast einen Fehler in der Linux-Version von PB entdeckt... :lol:
(Mit der PB-Version für MacOS X funktioniert Dein Beispiel übrigens auch nicht...:wink:)

Einen Fehler in der Linux-Version hast Du entdeckt, weil Chr(10) (=#LF$) eigentlich als Trennzeichen verwendet wird, um mit AddGadgetItem() und SetGadgetItemText() die Texte in mehrere aufeinander folgende Spalten in einer Zeile gleichzeitig eintragen zu können:
PB-Hilfe zu AddGadgetItem() hat geschrieben:Text$
Der Text für den neuen Eintrag.

Beim Hinzufügen eines Eintrags zu einem ListIconGadget() kann dieser Parameter den Text für mehrere Spalten enthalten - jeweils getrennt von einem Chr(10) Zeichen.
In der PB-Hilfe für Windows ist diese Eigenschaft übrigens auch für SetGadgetItemText() erwähnt.

Aber es wird noch interessanter: tausche unter Linux einmal bei SetGadgetItemText() die Spalte 1 gegen 0 aus!
Dann (und nur dann) funktioniert #LF$ als Trennzeichen, um "1.Zeile" und "2.Zeile" in die Spalten 0 und 1 zu schreiben! Wenn Du aber #CR$ statt #LF$ benutzt, funktioniert in Linux wieder die Auftrennung in zwei Zeilen auch für Spalte 0!

Ein genereller Fehler bei SetGadgetItemText() unter Linux, MacOS und Windows besteht darin, dass #LF$ als Trennzeichen nur funktioniert, wenn Spalte 0 verwendet wird!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von NicTheQuick »

Also ich finde es gut, wenn man es mehrzeilig machen kann. Damals in Version 3.x oder tiefer, als ich noch Windows aktiv nutzte, wusste ich, dass man es nicht mehrzeilig machen kann. Aber ich sehe es als einen Fortschritt, wenn das geht.
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von IronEagle »

Ihr seid einfach die Besten !!!

Danke, Danke, Danke :bounce:
PureBasic 5.71 | Windows 10 Home (x64)
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von IronEagle »

Mir ist jetzt doch noch etwas aufgefallen was ich nicht ganz verstehe.

Wenn ich das Beispiel von RSBasic nehme und nur zusätzlich den Image-Parameter verwende. Funktioniert der Code nicht mehr.
Ich bin schon alles durchgegangen und komme einfach nicht dahinter warum dieser mit einem Image nicht mehr läuft.

Habt Ihr vlt. eine Idee ?

Hier mal der Testcode.

Das Image ist findet ihr hier.
http://metaebene.me/wp-content/uploads/ ... -16x16.png

Code: Alles auswählen

;Autor: RASHAD

EnableExplicit

Define EventID
Define x
Define Texth
Define imageList

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListIconGadget(1,10,10,WindowWidth(0),WindowHeight(0),"Spalte",250,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
  AddGadgetColumn(1,1,"Spalte 2",200)
  
  Texth = SendMessage_(GadgetID(1), #LVM_GETITEMSPACING, 1, 0) >> 16 - 4
  imageList = ImageList_Create_(1, 5*Texth, #ILC_COLOR32 | #ILC_MASK, 0, 0) ;for 5 lines
  SendMessage_(GadgetID(1), #LVM_SETIMAGELIST, #LVSIL_SMALL, imageList)
  
  UsePNGImageDecoder()
  
  For x=1 To 4
    AddGadgetItem(1,-1, "This is a wordwrap text demonstration in a ListIcon Gadget  " + Chr(13) + "This is a separate line" + Chr(10) + "Line 1" + Chr(13) + "Line 2" + Chr(13) + "Line 3" + Chr(13) + "Line 4" + Chr(13), ImageID(LoadImage(#PB_Any, "home.png")))
  Next
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
PureBasic 5.71 | Windows 10 Home (x64)
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: ListIconGadget - Eintrag mehrzeilig ?

Beitrag von Vera »

IronEagle hat geschrieben:Habt Ihr vlt. eine Idee ?
Idee - ja.
Kommentier doch mal die beiden unteren WinApi Zeilen aus, da diese doch mit einer 'imageList' zu tun haben und vermutlich Bilder in die 5 Zeilen setzen. Damit wären diese Plätze aber besetzt und akzeptieren dann keine neuen Icons mehr.

Versuch macht Kluch ;-) ~ Gruß Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten