Blättern in LinkedList

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Bayernhans
Beiträge: 20
Registriert: 09.04.2006 15:56
Wohnort: Bayern

Blättern in LinkedList

Beitrag von Bayernhans »

Möchte die Daten einer LinkedList in einem Gadget (Text?) anzeigen. Der Anwender soll darin blättern können (auf/ab).
Hat jemand ein Prozedur o. Codeschnipsel die mir weiterhelfen ?
Vielen DANK.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Blättern in LinkedList

Beitrag von Kiffi »

Bayernhans hat geschrieben:Möchte die Daten einer LinkedList in einem Gadget (Text?) anzeigen. Der Anwender soll darin blättern können (auf/ab).
Du kannst folgende Befehle verwenden:

Code: Alles auswählen

- NextElement(DeineLinkedList())
- PreviousElement(DeineLinkedList())
- SelectElement(DeineLinkedList())
Grüße ... Kiffi

P.S.: Falsches Forum. @Mod: bitte verschieben
a²+b²=mc²
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@Bayernhans
meinst du das so in etwa?

Code: Alles auswählen

Structure TestStruc
  Name.s
  Alter.l
EndStructure

Global NewList TestList.TestStruc()

If AddElement(TestList())
  TestList()\Name = "Hans"
  TestList()\Alter = 31
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter)
EndIf

If AddElement(TestList())
  TestList()\Name = "Dieter"
  TestList()\Alter = 26
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter)
EndIf

If AddElement(TestList())
  TestList()\Name = "Klaus"
  TestList()\Alter = 42
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter)
EndIf

If AddElement(TestList())
  TestList()\Name = "Heidi"
  TestList()\Alter = 19
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter)
EndIf

Debug "Es befinden sich "+Str(CountList(TestList()))+" Elemente in der Linked List"

If OpenWindow(0, 0, 0, 200, 30, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If CreateGadgetList(WindowID(0))
    
    ButtonGadget(0, 5, 5, 25, 20, "<")
    
    SelectElement(TestList(), 0)
    TextGadget(1, 35, 5, 130, 20, TestList()\Name+" - "+Str(TestList()\Alter), #PB_Text_Border | #PB_Text_Center)
    
    ButtonGadget(2, 170, 5, 25, 20, ">")
    
    Repeat
      WinEvent = WaitWindowEvent()
      Select WinEvent
        Case #PB_Event_Gadget
          Select EventGadget()
            Case 0
              
              If ListIndex(TestList()) = 0
                LastElement(TestList())
              Else
                PreviousElement(TestList())
              EndIf
              SetGadgetText(1, TestList()\Name+" - "+Str(TestList()\Alter))
              
            Case 2
              
              If ListIndex(TestList()) = CountList(TestList()) - 1
                FirstElement(TestList())
              Else
                NextElement(TestList())
              EndIf
              SetGadgetText(1, TestList()\Name+" - "+Str(TestList()\Alter))
              
          EndSelect
      EndSelect
    Until WinEvent = #PB_Event_CloseWindow
    
  EndIf
  
EndIf

End
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Bayernhans
Beiträge: 20
Registriert: 09.04.2006 15:56
Wohnort: Bayern

Danke nco2k, für die schnelle Reaktion.

Beitrag von Bayernhans »

ein paar kleine Änderungen, z. B. EventGadgetID(), und schon fliegt ide Kiste.
Vielleicht liegts an verschiedenen Versionen, ich progr. mit PB 3.94
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

Code: Alles auswählen

Structure TestStruc 
  Name.s 
  Alter.l 
EndStructure 

NewList TestList.TestStruc() 

If AddElement(TestList()) 
  TestList()\Name = "Hans" 
  TestList()\Alter = 31 
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter) 
EndIf 

If AddElement(TestList()) 
  TestList()\Name = "Dieter" 
  TestList()\Alter = 26 
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter) 
EndIf 

If AddElement(TestList()) 
  TestList()\Name = "Klaus" 
  TestList()\Alter = 42 
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter) 
EndIf 

If AddElement(TestList()) 
  TestList()\Name = "Heidi" 
  TestList()\Alter = 19 
  Debug "Position: "+Str(ListIndex(TestList()))+" - Name: "+TestList()\Name+" - Alter: "+Str(TestList()\Alter) 
EndIf 

Debug "Es befinden sich "+Str(CountList(TestList()))+" Elemente in der Linked List" 

If OpenWindow(0, 0, 0, 200, 30, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test") 
  
  If CreateGadgetList(WindowID(0)) 
    
    ButtonGadget(0, 5, 5, 25, 20, "<") 
    
    SelectElement(TestList(), 0) 
    TextGadget(1, 35, 5, 130, 20, TestList()\Name+" - "+Str(TestList()\Alter), #PB_Text_Border | #PB_Text_Center) 
    
    ButtonGadget(2, 170, 5, 25, 20, ">") 
    
    Repeat 
      WinEvent = WaitWindowEvent() 
      Select WinEvent 
        Case #PB_Event_Gadget 
          Select EventGadgetID() 
            Case 0 
              
              If ListIndex(TestList()) = 0 
                LastElement(TestList()) 
              Else 
                PreviousElement(TestList()) 
              EndIf 
              SetGadgetText(1, TestList()\Name+" - "+Str(TestList()\Alter)) 
              
            Case 2 
              
              If ListIndex(TestList()) = CountList(TestList()) - 1 
                FirstElement(TestList()) 
              Else 
                NextElement(TestList()) 
              EndIf 
              SetGadgetText(1, TestList()\Name+" - "+Str(TestList()\Alter)) 
              
          EndSelect 
      EndSelect 
    Until WinEvent = #PB_Event_CloseWindow 
    
  EndIf 
  
EndIf 

End
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Danke nco2k, für die schnelle Reaktion.

Beitrag von Kiffi »

> und schon fliegt ide Kiste.

wie meinen?

> Vielleicht liegts an verschiedenen Versionen, ich progr. mit PB 3.94

dann tu uns doch den Gefallen und schreib das in Deine Signatur.

Grüße ... Kiffi
a²+b²=mc²
Bayernhans
Beiträge: 20
Registriert: 09.04.2006 15:56
Wohnort: Bayern

Beitrag von Bayernhans »

Perfekt nco2k - Dankeschön!

Kiffi, was meinst du zu meiner Signatur ?
vitamine, Vitamine, VITAMINE, ...
Vitamin PB - the best
PB 4.x
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Kiffi, was meinst du zu meiner Signatur ?

schon besser :allright:

Grüße ... Kiffi
a²+b²=mc²
Antworten