ListIconGadget Problem mit Header + lParam

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

ListIconGadget Problem mit Header + lParam

Beitrag von hjbremer »

Wenn ich nach erstellen des Listicongadgets den Headerwert lparam auslese, dann steht dort schon etwas.
Anscheinend die Column Nummer. Ich hätte erwartet, das nix drinsteht.

Laut MSDN ist das ein 'Application-defined item data.'

Aber meine Application hat da nix reingeschrieben. (Noch nicht)

Nur wer dann ? Windows oder Purebasic ? Welchen Sinn hat das ?

BUG oder nicht BUG ?

Code: Alles auswählen

Enumeration 
   #window
   #liste
   #info
EndEnumeration



OpenWindow(#window, 0, 0, 850, 550, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

flags = #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect
flags | #PB_ListIcon_HeaderDragDrop

ListIconGadget(#liste, 10, 10, 830, 490, "COL 0", 150, flags)
AddGadgetColumn(#liste, 1, "COL 1", 100)
AddGadgetColumn(#liste, 2, "COL 2", 100)
AddGadgetColumn(#liste, 3, "COL 3", 100)
AddGadgetColumn(#liste, 4, "COL 4", 100)
AddGadgetColumn(#liste, 5, "COL 5", 100)
AddGadgetColumn(#liste, 6, "COL 6", 100)

hdi.HD_ITEM
header = SendMessage_(GadgetID(#liste), #LVM_GETHEADER, 0, 0)

hdi\mask = #HDI_LPARAM

SendMessage_(header, #HDM_GETITEM, 0, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 1, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 2, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 3, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 4, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 5, hdi): Debug hdi\lParam
SendMessage_(header, #HDM_GETITEM, 6, hdi): Debug hdi\lParam

AddGadgetColumn(#liste, 7, "COL 7", 50)

SendMessage_(header, #HDM_GETITEM, 7, hdi): Debug hdi\lParam

Repeat      
   event = WaitWindowEvent()      
Until event = #PB_Event_CloseWindow 
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ListIconGadget Problem mit Header + lParam

Beitrag von mk-soft »

Hi,

Wird wohl von Purebasic gesetzt... wofür weis ich nicht

Code: Alles auswählen

Procedure MyAddGadgetColumn(gadget, nr, Text.s, width)
  
  Protected col.HD_ITEM, header, result
  
  With col
    \mask = #HDI_TEXT | #HDI_FORMAT | #HDI_WIDTH
    \cxy = width
    \pszText = @text
    \hbm = 0
    \cchTextMax = Len(text)
    \fmt = #HDF_RIGHT
    \lParam = 0
  EndWith
  header = SendMessage_(GadgetID(gadget), #LVM_GETHEADER, 0, 0)
  result = SendMessage_(header, #HDM_INSERTITEM, nr, @col)
  
  ProcedureReturn result
  
EndProcedure
FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ListIconGadget Problem mit Header + lParam

Beitrag von mk-soft »

Kleine zugabe

Code: Alles auswählen

Enumeration
   #window
   #liste
   #info
EndEnumeration

Procedure SetGadgetColumnState(gadget, nr, mask, value, text.s = "")
  
  Protected col.HD_ITEM, header, result
  
  header = SendMessage_(GadgetID(gadget), #LVM_GETHEADER, 0, 0)
  With col
    \mask = mask
    Select mask
      Case #HDI_BITMAP : \hbm = value
      Case #HDI_FORMAT : \fmt = value
      Case #HDI_LPARAM : \lParam = value
      Case #HDI_WIDTH  : \cxy = value
      Case #HDI_TEXT
        \pszText = @text
        \cchTextMax = Len(text)
    EndSelect
  EndWith
  result = SendMessage_(header, #HDM_SETITEM, nr, @col)
  
  ProcedureReturn result
  
EndProcedure

OpenWindow(#window, 0, 0, 850, 550, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

flags = #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect
flags | #PB_ListIcon_HeaderDragDrop

ListIconGadget(#liste, 10, 10, 830, 490, "COL 0", 150, flags)
AddGadgetColumn(#liste, 1, "COL 1", 100)
AddGadgetColumn(#liste, 2, "COL 2", 100)
AddGadgetColumn(#liste, 3, "COL 3", 100)
AddGadgetColumn(#liste, 4, "COL 4", 100)
AddGadgetColumn(#liste, 5, "COL 5", 100)
AddGadgetColumn(#liste, 6, "COL 6", 100)

format = #HDF_STRING | #HDF_CENTER | #HDF_SORTDOWN
SetGadgetColumnState(#liste, 0, #HDI_FORMAT, format)
SetGadgetColumnState(#liste, 0, #HDI_TEXT, 0, "COLUMN 0")
SetGadgetColumnState(#liste, 0, #HDI_WIDTH, 80)
Repeat     
   event = WaitWindowEvent()     
Until event = #PB_Event_CloseWindow

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten