Hänger bei ListIconGadget mit TileView

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

Hänger bei ListIconGadget mit TileView

Beitrag von jacdelad »

Hallo,
ich versuche gerade einen Code, den ich in XProfan geschrieben habe, nach PureBasic zu übersetzen. Mit dem ist es per Windows API möglich ein ListIconGadget in TileView umzuschalten.
Allerdings habe ich einen totalen Hänger, sicher nur ein Verständnisproblem. Mit dem folgenden Code kann ich TileView aktivieren, festlegen, dass noch 2 Zeilen angezeigt werden, aber der dritte Aufruf, der für ein Element festlegt, welche weiteren Zeilen angezeigt werden sollen, schlägt fehlt. Kann mir da jemand weiterhelfen?

Code: Alles auswählen

EnableExplicit

Structure LVTILEVIEWINFO
  cbSize.l
  dwMask.l
  dwFlags.l
  sizeTile.SIZE
  cLines.l
  rcLabelMargins.RECT
EndStructure
Structure LVTILEINFO
  cbSize.l
  iItem.l
  cColumns.l
  puColumns.l
EndStructure

Define window_0, listicon_0
Define lvti.LVTILEINFO,lvtvi.LVTILEVIEWINFO,*Tiles

window_0=OpenWindow(#PB_Any,0,0,400,300,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
listicon_0=ListIconGadget(#PB_Any,0,0,400,300,"Maschine",120)
AddGadgetColumn(listicon_0,1,"Typ",100)
AddGadgetColumn(listicon_0,2,"Modell",100)
Debug SendMessage_(GadgetID(listicon_0),#LVM_SETVIEW,#LV_VIEW_TILE,0)
lvtvi\cbSize=SizeOf(lvtvi)
lvtvi\dwMask=2;#LVTVIM_COLUMNS
lvtvi\cLines=2
Debug SendMessage_(GadgetID(listicon_0),#LVM_SETTILEVIEWINFO,0,@lvtvi)
Debug SendMessage_(GadgetID(listicon_0),#LVM_ARRANGE,0,0)

AddGadgetItem(listicon_0,-1,"Test"+Chr(10)+"Test2"+Chr(10)+"Test3")
AddGadgetItem(listicon_0,-1,"Test"+Chr(10)+"Test2"+Chr(10)+"Test3")
AddGadgetItem(listicon_0,-1,"Test"+Chr(10)+"Test2"+Chr(10)+"Test3")
lvti\cbSize=SizeOf(lvti)
*Tiles=AllocateMemory(8)
PokeL(*Tiles,1)
PokeL(*Tiles+4,2)
lvti\iItem=0
lvti\cColumns=2
lvti\puColumns=*Tiles
;Fehlschlag:
Debug SendMessage_(GadgetID(listicon_0),#LVM_SETTILEINFO,0,@lvti)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case window_0;Hauptfenster
          Break
          
      EndSelect
  EndSelect
ForEver
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Benutzeravatar
jacdelad
Beiträge: 341
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Hänger bei ListIconGadget mit TileView

Beitrag von jacdelad »

...Fehler gefunden, es funktioniert nur unter 32 Bit. Jetzt muss ich es nur noch unter 64 Bit zum Laufen kriegen.

Nachtrag:
puColumns.l durch puColumns.i ersetzen, ok, aber es klappt trotzdem nicht. Weiß jemand Rat? Ich glaube es liegt am *Tiles-Speicherbereich.
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Benutzeravatar
jacdelad
Beiträge: 341
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Hänger bei ListIconGadget mit TileView

Beitrag von jacdelad »

Fehler gefunden: cColumns.l muss auch cColumns.i sein. Jetzt geht alles.
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Antworten