Listview mit Kacheln aber unterschiedlichen Icons krieg ich nicht hin :(

    • Listview mit Kacheln aber unterschiedlichen Icons krieg ich nicht hin :(

      Hallo,
      ich hab den Quellcode für Listviews mit TileView (Kacheln) von Uwe "Pascal" Niemeyer genommen und etwas gepimpt. Im Großen und Ganzen die Vorbereitung daraus eine INC zu machen:

      Quellcode

      1. window 100,10-500,550
      2. usefont "MS Sans Serif",15,7,0,0,0
      3. setdialogfont 1
      4. usermessages 16
      5. $H D:\XProfan\XProfan\Include\Windows.ph
      6. $H D:\XProfan\XProfan\Include\commctrl.ph
      7. declare Tiles#,TileInfo#,TileView#,icolist&,lv&
      8. struct Tiles=x1&,x2&,x3&,x4&,x5&'Array: 5 mögliche Spalten / Extra-Zeilen
      9. struct LVTILEINFO=Size&,Item&,Columns&,puColumns&
      10. struct TILEVIEW=Size&,Mask&,Flags&,x&,y&,Lines&,xa&,ya&,xb&,yb&
      11. proc PrepareTileView
      12. dim Tiles#,Tiles
      13. dim TileInfo#,LVTILEINFO
      14. dim TileView#,TILEVIEW
      15. TileInfo#.Size&=sizeof(TileInfo#)
      16. TileInfo#.puColumns&=Tiles#
      17. TileView#.Size&=sizeof(TileView#)
      18. TileView#.Mask& =2'LVTVIM_COLUMNS
      19. TileView#.Lines&=5'Max. Anzahl Zeilen (nicht verwendete leer)
      20. 'IcoList&=~ImageList_Create(48,48,1,1,0)
      21. IcoList&=Create("Imagelist",48,48)
      22. external("comctl32","ImageList_AddIcon",IcoList&,~LoadIcon(%hinstance,"Profan"))
      23. sendmessage(Lv&,~LVM_SETIMAGELIST,~LVSIL_NORMAL,IcoList&)
      24. sendmessage(Lv&,(~LVM_FIRST+142),4,0)'LVM_SETVIEW,LV_VIEW_TILE
      25. sendmessage(Lv&,(~LVM_FIRST+162),0,TileView#)'LVM_SETTILEVIEWINFO
      26. TileInfo#.Columns&=4'Anzahl Spalten als Extra-Zeilen
      27. Tiles#.x1& =1
      28. Tiles#.x2& =2
      29. Tiles#.x3& =3
      30. Tiles#.x4& =4
      31. endproc
      32. proc AddIcoString
      33. Parameters l&,a$
      34. addstring(L&,a$)
      35. TileInfo#.Item& =GetCount(l&)-1'Zeile 0
      36. sendmessage(L&,(~LVM_FIRST+164),0,TileInfo#)'LVM_SETTILEINFO
      37. endproc
      38. Lv&=create("gridbox",%hwnd,"a;0;0;b;0;0;c;0;0;d;0;0;e;0;0",0,10,10,300,420)'5 Spalten
      39. PrepareTileView
      40. AddIcoString lv&,"Text1|Sub11|Sub12|Sub13|Sub14"
      41. AddIcoString lv&,"Text2|Sub21|Sub22|Sub23|Sub24"
      42. AddIcoString lv&,"Text3|Sub31|Sub32|Sub33|Sub34"
      43. while 1
      44. waitinput
      45. case %umessage=16:break'Ende
      46. endwhile
      47. case IcoList&:~ImageList_Destroy(IcoList&)
      48. dispose Tiles#
      49. dispose TileInfo#
      50. dispose TileView#
      Alles anzeigen

      Der Quellcode läuft einwandfrei, aber wie zum Henker kriege ich ihn dazu, dass ein Item ein anderes Icon außer dem ersten bekommt? Ich kann via

      Quellcode

      1. external("comctl32","ImageList_AddIcon",IcoList&,~LoadIcon(%hinstance,"A"))
      zum Beispiel ein weiteres Icon hinzufügen, aber alle Items haben das erste.

      Nachtrag:
      Ich habe jetzt folgendes probiert:

      Quellcode

      1. Struct LVI=MASK&,ITEM&,SUBITEM&,STATE&,STATEMASK&,TEXT&,TEXTMAX&,IMAGE&,PARAM&,Ident&,GroupId&,cColumns&,puColumns&,piColFmt&,iGroup&
      2. proc LVSetImage
      3. Parameters listview&,index&,image&
      4. declare lv#
      5. Dim lv#,LVI
      6. Lv#.Item&=index&
      7. 'sendmessage(Listview&,~LVM_GETITEM,0,Lv#)
      8. Lv#.Mask&=~LVIF_IMAGE
      9. Lv#.Image&=image&
      10. sendmessage(Listview&,~LVM_SETITEM,0,Lv#)
      11. Dispose lv#
      12. endproc
      Alles anzeigen

      Laut MSDN kann ich das Item mit LVM_SETITEM verändern, benötige eine LVITEM-Struktur und muss MASK den Wert LVIF_IMAGE zuweisen. Das habe ich getan, aber der Mist geht trotzdem nicht.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Ah f**k, ich war schon wieder voreilig. In meinem Code gab's ne Interferenz mit der Gruppenansicht.
      Soll ich das Ergebnis als Inc posten, wenn Gruppen und Kacheln funktionieren?
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net
    • Bis jetzt geht immer nur eins von beiden und nicht beides. :-(
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net
    • Jetzt geht beides, ich muss nur noch ne Inc draus basteln.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net
    • Bin noch am Basteln, ist aber bald fertig.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net