Seite 1 von 1

GetListIconIcon

Verfasst: 21.04.2009 08:34
von ts-soft
Nachdem ich nirgends fündig wurde, hab ichs mir selbst gemacht :mrgreen:

Sieht einfach aus, aber bevor man es aus der MSDN quälen muß, denke ich,
ist es für den einen oder anderen nützlich.
(ich habs dringend benötigt)

Code: Alles auswählen

; Procedure um ein bestimmtes Icon eines ListIcongadgets zu ermitteln
; nützlich um zum Beispiel diese umzusortieren
; ermitteltes Icon ist am Ende oder nach Zuweisung zu einem ListIconGadget zu destroyen, siehe Beispiel

; PB 4.xx
; Beispielcode benötigt 4.30
; Windows Only
; Autor: Thomas <ts-soft> Schulz
; 21.04.2009

EnableExplicit

; ID ist die Gadgetnummer/konstante, item ist der eintrag, beginnend mit 0
Procedure GetListIconIcon(ID, item)
  Protected LVITEM.LV_ITEM
  Protected index, hIML, hIcon
  
  LVITEM\Mask   = #LVIF_IMAGE
  LVITEM\iItem  = item
  
  SendMessage_(GadgetID(ID), #LVM_GETITEM, 0, @LVITEM)
  
  index         = LVITEM\iImage
  hIML          = SendMessage_(GadgetID(ID), #LVM_GETIMAGELIST, #LVSIL_SMALL, 0)
  hIcon         = ImageList_GetIcon_(hIML, index, #ILD_TRANSPARENT)
  
  ProcedureReturn hIcon
EndProcedure

; Beispiel
Define hIcon

OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 190, "bla", #PB_Window_SystemMenu)
ListIconGadget(0, 0, 0, 200, 150, "test", 190)
AddGadgetItem(0, -1, "CDIcon", LoadImage(0, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico"))
ImageGadget(1, 92, 160, 16, 16, 0)

hIcon = GetListIconIcon(0, 0)
SetGadgetState(1, hIcon)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

DestroyIcon_(hIcon)

Verfasst: 21.04.2009 16:31
von Andesdaf
sehr nützlich :allright:

Verfasst: 22.04.2009 19:05
von Batze
Allgemein wären ein par weitere PB-Befehle (auch wenn sie dann vielleicht teilweise nur auf einem OS laufen) nützlich, gibt noch so ein par Sachen die irgendwie fehlen. Z.B. Text ausrichten im Listicongadget (die api-lösung kenne ich, braucht ihr mich also nicht drauf hinweisen).

Verfasst: 23.04.2009 17:17
von Andesdaf
> Text ausrichten im Listicongadget
Ja, das wäre durchaus praktisch.

Ich hätte gerne eine funktion, die das Listicon doppelzeilig macht und in der
man dann die obere Zeile fett drucken kann
(für ersteres kenne ich auch den Code)