Beispiel von RSBasic zu Gruppen in ListIconGadgets geht net

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Beispiel von RSBasic zu Gruppen in ListIconGadgets geht net

Beitrag von jacdelad »

Hallo,
vielleicht kann mir jemand helfen: Das Beispiel von RSBasic's Seite funktioniert nicht. EnableGroupView geht, aber beim Erstellen von Gruppen oder einfügen von Items liefert sendmessage immer -1, also Fehler. Ich kann aber nirgendwo einen Fehler finden.

Code: Alles auswählen

;Autor: Stefan 'wayne-c' Christen

EnableExplicit

Define EventID
Define g
Define i

#LVM_ENABLEGROUPVIEW = #LVM_FIRST + 157
#LVM_MOVEITEMTOGROUP = #LVM_FIRST + 154
#LVM_INSERTGROUP = #LVM_FIRST + 145
#LVIF_GROUPID = $0100
#LVGA_HEADER_LEFT = $1
#LVGA_HEADER_CENTER = $2
#LVGA_HEADER_RIGHT = $4
#LVGS_NORMAL = $0
#LVGS_COLLAPSED = $1
#LVGS_HIDDEN = $2
#LVGF_HEADER = $1
#LVGF_FOOTER = $2
#LVGF_STATE = $4
#LVGF_ALIGN = $8
#LVGF_GROUPID = $10

Procedure StringToUnicode(pbstrptr.l, ucstrptr.l)
MultiByteToWideChar_ (#CP_ACP, 0, pbstrptr, Len(PeekS(pbstrptr)), ucstrptr, Len(PeekS(ucstrptr)))
PokeL( ucstrptr + Len(PeekS(pbstrptr))*2, 0)
EndProcedure 

Procedure ListIcon_AddGroup(gadget.l, text.s, groupid.l)
Protected lvg.LVGROUP
Protected text_uc.s

lvg.LVGROUP\cbSize = SizeOf(LVGROUP)
lvg\mask = #LVGF_GROUPID | #LVGF_ALIGN | #LVGF_HEADER
lvg\iGroupId = groupid
lvg\uAlign = #LVGA_HEADER_LEFT
text_uc.s = Space(260) 
StringToUnicode(@text, @text_uc) 
lvg\pszHeader = @text_uc
SendMessage_ (GadgetID(gadget), #LVM_INSERTGROUP, -1, @lvg)
EndProcedure

Procedure ListIcon_EnableGroupView(gadget.l, state.l)
SendMessage_ (GadgetID(gadget), #LVM_ENABLEGROUPVIEW, state, 0)
EndProcedure

Procedure ListIcon_AddItem(gadget.l, text.s, groupid.l)
Protected itm.LVITEM

itm.LVITEM\mask = #LVIF_TEXT | #LVIF_GROUPID
itm\pszText = @text
itm\iGroupId = groupid
SendMessage_ (GadgetID(gadget), #LVM_INSERTITEM, 0, @itm)
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(1,10,10,WindowWidth(0)-20,WindowHeight(0)-20,"Spalte",400,0)

ListIcon_EnableGroupView(1, 1)
For g=1 To 5
ListIcon_AddGroup(1, "This is group "+Str(g), g)
For i=1 To 5
ListIcon_AddItem(1, "Item "+Str((g-1)*5+i)+" belongs to group "+Str(g), g)
Next
Next

Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
ccode_new
Beiträge: 1074
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von ccode_new »

Hallo jacdelad,

dein Beispiel funktioniert unter Windows (auch in der 64bit Version).

Du musst nur in den Compiler-Einstellungen den Hacken bei:
"Moderne Themen-Unterstützung aktivieren (für XP oder höher)"
entfernen.

Oder ein eigenes Manifest (wie hier beschrieben) erstellen:
https://docs.microsoft.com/en-us/window ... k-overview
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Ahhhhh...na da muss man erstmal drauf kommen.
Danke, das probiere ich morgen aus.
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Es hat leider nicht geklappt. Wenn ich das Beispiel einfach so starte kommen keine Einträge. Wenn ich es in mein Projekt einbinden komme Einträge, aber ohne Gruppen.
Jetzt hab ich mir gedacht, dass ich irgendwelche seltsamen Einstellungen in meinem Projekt habe, aber Pustekuchen, egal wie ich es auch drehe und wende, es geht nicht.
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Ohne die "Moderne Themen"-Unterstützung geht der TileView nicht. Es ist zum Verzweifeln.
ccode_new
Beiträge: 1074
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von ccode_new »

jacdelad hat geschrieben:Ohne die "Moderne Themen"-Unterstützung geht der TileView nicht. Es ist zum Verzweifeln.
Brauchst du die moderne Themen-Unterstützung denn unbedingt?
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Ja, für die Tile-Ansicht, die jetzt reibungslos funktioniert.
Aber ist es nicht sonderbar, dass die Gruppierung, die erst nach der Tile-Ansicht eingeführt wurde, nur geht wenn man die moderne Themen Unterstützung abschaltet? Bzw. bei mir geht's immer noch nicht. Auch waren die Beschriftungen der Gruppen abgeschnitten, nur "T".
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Es tut mir leid, dass ich nochmal nachhaken muss:

Bei mir zuhause geht's unabhängig ob die modernen Themen ein- oder ausgeschaltet sind. Allerdings nur mit 32Bit-Compiler und als Gruppenbezeichnung wird immer nur "T" angegeben. Kann es sein, dass die mitgelieferte Struktur (LVGROUP) noch nich an 64Bit angepasst wurde?

Ich bin eigentlich nicht der Typ, der alles vorgekaut haben will, meistens reicht ein Schubs in die richtige Richtung oder ich finde es noch selbst raus (siehe die Kachelansicht für ListIconGadgets in anderen Thread), aber hieran verzweifel ich gerade.
Das "T" liegt sicher an einer Umwandlung des Strings mit MultiByteToWideChar(), ich denke die Anpassung an 64Bit liegt eventuell an der Struktur (ich finde auch im Internet leider keine verwertbaren Infos wie viele Byte jedes Feld haben muss, das würde ja schon helfen). Warum es auf dem anderen Rechner fast nie klappt weiß ich aber nicht. Vielleicht kann noch jemand weiterhelfen.
Benutzeravatar
mk-soft
Beiträge: 3307
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von mk-soft »

Funktionierendes Beispiel ....

Link: viewtopic.php?f=16&t=31424
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
jacdelad
Beiträge: 72
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Beispiel von RSBasic zu Gruppen in ListIconGadgets geht

Beitrag von jacdelad »

Ah, superb. Das funktioniert mit x86 und x64. Und moderner Themenunterstützung.

Vielen, vielen Dank an euch beide!
Antworten