Seite 1 von 1

ListIconGadget-Abstand ändern

Verfasst: 29.01.2011 15:35
von RSBasic
Hallo,


man erstellt ein ListIconGadget mit der Einstellung "#PB_ListIcon_LargeIcon".
Wenn man ein paar Icon-Einträge erstellt hat, dann sieht es etwa so aus:
Bild

Ich finde, man könne den Abstand (horizontal) verringern, aber die Frage ist nur, wie man das realisieren kann, ohne es ownerdrawen zu müssen.
Hat jemand eine Idee?

Re: ListIconGadget-Abstand ändern

Verfasst: 29.01.2011 15:48
von STARGÅTE
Das ist der "normale" Symbolabstand von Windows:

Eigenschaften von Anzeige > Darstellung > Erweitert > Element > Symbolabstand (Horizontal) > 82
Bild

ich weiß halt nicht, ob man den nur fürs ListIconGadget privat ändern kann, sonst könnten die Nutzer zimlich sauer werden wenn ihre Symbole alle änger zusammen sind ^^

Re: ListIconGadget-Abstand ändern

Verfasst: 29.01.2011 15:53
von RSBasic
Hi STARGÅTE,


vielen Dank erstmal für deine Hilfe, aber die globale Einstellung zu ändern, ist nicht mein Ziel, sorry.
Trotzdem danke nochmal ;)


@ALL: Ich habe die Lösung gefunden!
Die richtige API-Konstante, die ich gesucht habe, ist: #LVM_SETICONSPACING

Beispielcode:

Code: Alles auswählen

EnableExplicit

UsePNGImageDecoder()
  
LoadImage(1,"bildpfad....")

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListIconGadget(1,10,10,480,230,"Überschrift",0,0)
  SetGadgetAttribute(1,#PB_ListIcon_DisplayMode,#PB_ListIcon_LargeIcon)
  
  AddGadgetItem(1,-1,"Item 1",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 2",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 3",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 4",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 5",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 6",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 7",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 8",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 9",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 10",ImageID(1),0)
  
  SendMessage_(GadgetID(1), #LVM_SETICONSPACING, 0, 50)
  
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Screenshot:
Bild

Ich habs einfach mal zufällig mit verschiedenen API-Konstanten ausprobiert und hat sogar geklappt. :) :allright:

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 13:30
von Christian H
RSBasic hat geschrieben:

Code: Alles auswählen

  
  SendMessage_(GadgetID(1), #LVM_SETICONSPACING, 0, 50)
Ich denke so ist es besser:

Code: Alles auswählen

  x = 50 
  y = 50
  SendMessage_(GadgetID(1), #LVM_SETICONSPACING, 0, x * 65536 + y)
Gruß Christian

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 14:44
von RSBasic
Hallo Christian H,


ah vielen Dank für die Richtigkeit für die Verwendung der WinAPI :allright:
So kann man genau einstellen, ob horizontal, vertikal oder beides.
Aber du hast x und y vertauscht.
Es muss also um genau zu sein so lauten:

Code: Alles auswählen

x = 100
y = 50
SendMessage_(GadgetID(1), #LVM_SETICONSPACING, 0, y * 65536 + x)
Dann ist es perfekt :)

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 15:10
von ts-soft
RSBasic hat geschrieben:Dann ist es perfekt :)
Sehr schön :twisted:

Code: Alles auswählen

SendMessage_(GadgetID(1), #LVM_SETICONSPACING, y, x)

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 16:01
von RSBasic
ts-soft hat geschrieben:
RSBasic hat geschrieben:Dann ist es perfekt :)
Sehr schön :twisted:

Code: Alles auswählen

SendMessage_(GadgetID(1), #LVM_SETICONSPACING, y, x)
Da gibt es bei mir keine Änderung.
Es wird nur der letzte Parameter akzeptiert und "y" wird ignoriert. :P

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 16:09
von Christian H
ts-soft hat geschrieben:

Code: Alles auswählen

SendMessage_(GadgetID(1), #LVM_SETICONSPACING, y, x)
Hab' ich auch vergeblich versucht.

Code: Alles auswählen

LoadImage(1, #PB_Compiler_Home +"\Examples\Sources\Data\CdPlayer.ico")

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListIconGadget(1,10,10,480,230,"Überschrift",0,0)
  SetGadgetAttribute(1,#PB_ListIcon_DisplayMode,#PB_ListIcon_LargeIcon)
 
  AddGadgetItem(1,-1,"Item 1",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 2",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 3",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 4",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 5",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 6",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 7",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 8",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 9",ImageID(1),0)
  AddGadgetItem(1,-1,"Item 10",ImageID(1),0)
 
  x = 450
  y = 500
  SendMessage_(GadgetID(1), #LVM_SETICONSPACING, y, x)
 
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: ListIconGadget-Abstand ändern

Verfasst: 30.01.2011 16:47
von ts-soft
So stehts in der MSDN: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
und vorhin ging es auch, jetzt aber nicht mehr?