Seite 1 von 4

Erweiterte Items [X]

Verfasst: 05.04.2008 18:24
von RSBasic
Hallo Leute,

wie kann man solche Items erstellen?
Bild

Vielen Dank im Vorraus

Verfasst: 05.04.2008 18:39
von milan1612
Ganz einfach: Selber zeichnen oder ListViewGadget subclassen :wink:
Das "Ganz einfach" ist Ironie...

Verfasst: 05.04.2008 19:52
von Fluid Byte
Naja, wenn ein Item zusätzliche Elemente wie Buttons oder Forttschrittsbalken hat kommst du mit einem List-View Control nicht weit. Da würde ich für jedes Item ein separates Fenster benutzen.

Verfasst: 05.04.2008 20:00
von RSBasic
@Fluid Byte
Kann man nicht mit Setparent_() die extra Gadgets einsetzen/einfügen?

Verfasst: 05.04.2008 20:12
von gnasen
Du könntest auch mit einem ScrollAreaGadget arbeiten.
Allerdings könnte es, wenn der Inhalt immer neu aufgebaut werden müsste, etwas schwierig werden.

Bei Sachen API kann ich dir allerdings jetzt nicht helfen. Aber kannst ja trotzdem schauen obs dir was nützt.

Verfasst: 05.04.2008 20:25
von Kaeru Gaman
der ansatz über das Parent scheint mit am vielversprechendsten, also
> ListViewGadget subclassen
weil ja eigentlich jedes Gadget nur ein Window ist, also auch ein element einer Liste.

dürfte dann aber sehr API-spezifisch werden, nix mit PB-Bordmitteln.

Verfasst: 05.04.2008 20:35
von RSBasic
Schade, dass PB sowas noch nicht kann.

Ich versuch' grad' mit API sowas zu ermöglichen, aber hab' natürlich einige Probleme, wie z.B.:

Code: Alles auswählen

If OpenWindow(0,0,0,500,500,"tst",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0)) 
    ListViewGadget(1,10,10,200,200,0)
    ButtonGadget(2,10,0,100,20,"abc",0)
  EndIf
  AddGadgetItem(1,-1,"abc",0,0)
  AddGadgetItem(1,-1,"xyz",0,0)
  CreateStatusBar(0, WindowID(0)) 
  SetParent_(GadgetID(2),GadgetID(1)) 
  
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Es gibt ja ein PB_Befehl: GadgetItemID(), aber dieser gilt nur für TreeGadget.

Frage: Gibt es dafür ne API für GadgetItemID() (natürlich für ViewControl)?

Danke im Vorraus :)

Verfasst: 05.04.2008 21:11
von Andreas_S
So einfach dürfte das nicht werden, denn Windows versteht ja nichts von den PB-IDs.
Also musst du eine eigene Liste per WinAPI aus der Liste kitzeln und dann den Handle suchen...

Mal sehn ob ich einen Code zusammenbringe...

Verfasst: 05.04.2008 21:13
von Fluid Byte
Mit SetParent_() kannst du zwar für alle Gadgets das OwnerWindow ändern aber was bringt das? Das List-View Control von Windows hat ja den Vorteil das nur sichtbare Items angezeigt werden. Was ist wenn du circa 50 items hast aber nur 5 davon ins Fenster passen? Wie soll das z. B. mit den Buttons geregelt werden? Du kannst sie ja nicht für alle 50 items vorher schon erstellen. Das ist absolut nicht performant.

Die einzige Möglichkeit die ich sehe wäre zu ermitteln ob ein Item gerade sichtbar ist oder nicht und dann extra Controls wie Buttons und Ladebalken On-The-Fly zu erstellen / löschen.
Es gibt ja ein PB_Befehl: GadgetItemID(), aber dieser gilt nur für TreeGadget.

Frage: Gibt es dafür ne API für GadgetItemID() (natürlich für ViewControl)?
Nein, aber selbst wenn kannst du damit nix anfangen da es kein Fenster Handle ist.

Verfasst: 28.04.2008 21:19
von RSBasic
gnasen hat geschrieben:Du könntest auch mit einem ScrollAreaGadget arbeiten.
Okay habs mal rasch gemacht.
Das ist eine gute Alternative, aber beim Resizen der Gadgets ist das nicht gut.
Wenn ich viele Gadgets in dem ScrollAreaGadget erstelle und alle gleichzeitig resize, dann flackert das Fenster.

Schade, dass es nicht ne einfache API für sowas gibt :(