Seite 2 von 2
Verfasst: 26.01.2006 23:11
von Macros
Hier ein kompletter Code zur Veranschaulichung:
Code: Alles auswählen
OpenWindow(1,200,200,200,200,#PB_Window_SystemMenu,"test")
CreateGadgetList(WindowID())
ListViewGadget(1,0,0,200,200)
For a=1 To 10
AddGadgetItem(1,-1,"test"+Str(a))
Next
AddKeyboardShortcut(1,#PB_Shortcut_Delete,5)
Repeat
event=WaitWindowEvent()
Delay(1)
If event=#PB_Event_Menu
If EventMenuID()=5
RemoveGadgetItem(1, GetGadgetState(1))
EndIf
EndIf
If event=#PB_Event_CloseWindow
End
EndIf
ForEver
Verfasst: 26.01.2006 23:34
von edel
Es ist bewusst einfach gehalten, sollte damit einiges klarer werden.
Code: Alles auswählen
Enumeration
#listview ; = 0
EndEnumeration
Enumeration
#PopupMenu ; = 0
#DeleteEntry ; = 1
#AddEntry ; = 2
EndEnumeration
OpenWindow(0,0,0,300,300,1|#WS_SYSMENU,"")
; rechtsklick aktivieren
AdvancedGadgetEvents(#True)
CreateGadgetList(WindowID())
;listview erstellen und fuellen
ListIconGadget(#listview,0,0,300,300,"blub",100)
For i = 0 To 10
AddGadgetItem(#listview,-1,"blaaaaaaa"+Str(i))
Next
;popup menue erstellen
CreatePopupMenu(#PopupMenu)
MenuItem(#AddEntry ,"Eintrag hinzufuegen")
MenuItem(#DeleteEntry,"Eintrag loeschen")
; entf
AddKeyboardShortcut(0,#PB_Shortcut_Delete,#DeleteEntry) ; sendet das gleice event wie ein klick auf den menue eintrag #DeleteEntry
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu ; Event vom Menu
If EventMenuID() = #DeleteEntry
item = GetGadgetState(#listview)
If item >= 0 ; wenn item -1 ist nichts ausgewaehlt
RemoveGadgetItem(#listview,item) ; item entfernen
SetGadgetState(#listview,item) ; naechste item markieren
EndIf
EndIf
If EventMenuID() = #AddEntry ; m
AddGadgetItem(#listview,-1,"blaaaaaaa") ; neues item
EndIf
Case #PB_Event_Gadget ; Event auf irgendeinem Gadget
If EventGadgetID() = #listview
If EventType() = #PB_EventType_RightClick
DisplayPopupMenu(#PopupMenu,WindowID()) ; popmenu anzeigen
EndIf
EndIf
Case #WM_CLOSE ; Programm beenden
Break
EndSelect
ForEver
End
edit : Warum sagt mir kein Mensch das Threads auch mal 2 Seiten haben koennen :-/
Verfasst: 26.01.2006 23:39
von Macros
Stimmt, wenn bei einem Thread eine neue Seite
hinzukommt, sollte auf der davor ein dickes
rotes Banner mit der Aufschrift
Neue Seite
angezeigt werden.
@dietmar: schau dir am besten zuerst
meinen kleinen Code an und dann Hallodris
(ist auch nicht viel komplizierter und gut auskommentiert)
Verfasst: 28.01.2006 15:08
von dietmar
Da ich eine Sortierfunktion aus dem PurBoard-Archiv verwende, hat das nicht ganz zusammen gepasst. Ohne diese funktioniert es einwandfrei. Jetzt sellt sich die Frage, wie geht beides gleichzeitig?
Verfasst: 28.01.2006 15:09
von Macros
Dazu müsste man natürlich wissen, welche Sortierfunktion.
Verfasst: 28.01.2006 16:02
von roherter
Hier mal ne selbstgeschriebene Sortier - Procedure ist keine dokumentation dabei aber vieleicht steigst du auch so durch:
Code: Alles auswählen
Procedure sortlist1(wert)
listlaenge=CountGadgetItems(#List_1)
listlae=listlaenge
Structure daten
spalte0.s
spalte1.s
spalte2.s
spalte3.s
EndStructure
Dim upe.daten(listlaenge)
For a=0 To listlae
upe(a)\spalte0=GetGadgetItemText(#List_1,a,0)
upe(a)\spalte1=GetGadgetItemText(#List_1,a,1)
upe(a)\spalte2=GetGadgetItemText(#List_1,a,2)
upe(a)\spalte3=GetGadgetItemText(#List_1,a,3)
Next a
SortStructuredArray(upe(),wert,OffsetOf(daten\spalte0),#PB_Sort_String )
If wert=3
For a=0 To listlae
SetGadgetItemText(#List_1,a,upe(a)\spalte0,0)
SetGadgetItemText(#List_1,a,upe(a)\spalte1,1)
SetGadgetItemText(#List_1,a,upe(a)\spalte2,2)
SetGadgetItemText(#List_1,a,upe(a)\spalte3,3)
Next a
Else
For a=0 To listlae
SetGadgetItemText(#List_1,a,upe(a+1)\spalte0,0)
SetGadgetItemText(#List_1,a,upe(a+1)\spalte1,1)
SetGadgetItemText(#List_1,a,upe(a+1)\spalte2,2)
SetGadgetItemText(#List_1,a,upe(a+1)\spalte3,3)
Next a
EndIf
EndProcedure
Verfasst: 30.01.2006 11:00
von dietmar
Seh schon so einfach ist das ganze nicht, werd die ganze Sache nochmal überdenken müssen. Auf jeden Fall war das alles jetzt sehr hilfreich.
Vielen Dank