Icons ändern im ListIcon

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Code: Alles auswählen

Enumeration 
  #ListIcon
  #ChangeButton
EndEnumeration

Procedure ChangeIcon(IconID.L, Row.L, IconIndex.L) 
  LVITEM.LV_ITEM
  LVITEM\Mask = #LVIF_IMAGE
  LVITEM\iItem = Row
  LVITEM\iImage = IconIndex
  SendMessage_(GadgetID(IconID), #LVM_SETITEM, 0, @LVITEM)
EndProcedure 

If OpenWindow(1, 0, 0, 270, 110, "Änderung von Icons im ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(1))
  ListIconGadget(#ListIcon, 10, 10, 250, 57, "Icon", 40, #PB_ListIcon_GridLines)
  ButtonGadget(#ChangeButton, 85, 80, 110, 20, "1.Icon austauschen")
  Icon1 = LoadImage(1, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")
  Icon2 = LoadImage(2, #PB_Compiler_Home + "Examples\Sources\Data\Drive.bmp")
  AddGadgetColumn(#ListIcon, 1, "Text", 206)
  AddGadgetItem(#ListIcon, -1, "" + #LF$ + "Icon 1", Icon1)
  AddGadgetItem(#ListIcon, -1, "" + #LF$ + "Icon 2", Icon2)

  CurrentIcon = 1

  Repeat
    WindowEvent = WaitWindowEvent()
 
    If WindowEvent = #PB_Event_Gadget
      If EventGadget() = #ChangeButton
        CurrentIcon = CurrentIcon ! 3
        ChangeIcon(#ListIcon, 0, CurrentIcon) 
      EndIf
    EndIf
  Until WindowEvent = #PB_Event_CloseWindow
EndIf
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Nur ums abzurunden...
iImage ist ein Index (wie man an dem "i" vorm Namen sehen kann) und kein handle (sonst wärs ein "h").
Das "i" steht für den Datentyp "Integer". :wink:
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Danke an alle :)

@Shardik
Dein Code funktioniert einwandfrei :wink:
Genau sowas hab ich gesucht.
[PB4.20]
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Beitrag von pickelrobert »

Hallo,

der Diskussionsfaden ist zwar schon etwas älter, aber mittlerweile sollte diese Funktion in PB eingebaut sein, damit's auch unter den anderen Betriebssystemen läuft. Oder irre ich mich da?
Antworten