danke für deine Tips, hab die Sache mal eingearbeitet. Probleme noch beim Neuen Datensatz, ansonsten läufts.
Code: Alles auswählen
;- Ver.Forum 005
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
Enumeration
#ListIcon_0
#NewDelete
#S_Work_Data
#NewInsert
#NewFocus
#NewErster
#NewMinus
#NewPlus
#NewEnde
#New_Text
#New_ID
#New_Stichwort
#New_Genre
#New_DB
#Refresh
EndEnumeration
;- Gadget Variablen
Global MaxIndex=30 ;<<<<<<<<<<<< hier die Anzahl der Einträge eintragen
Global Index
Global Index = 0
Global DatenSatzZiel$
Global MessageRequesterDatenString$
Global Index
Global IndexEnde
;-
;{ Structure Newlist
;-Structure
Structure sData
ID.s
Stichwort.s
Genre.s
DB.s
EndStructure
Global NewList MyDataList.sData()
;}
Procedure DatensatzEinlesen()
For a = 0 To MaxIndex
ID$= Str(MaxIndex-a)
Stichwort$= "ListIconEintrag "+Str(a)
Genre$= "NEU"
AddGadgetItem(#ListIcon_0,-1, Str(Index)+Chr(10)+Stichwort$+Chr(10)+Genre$+Chr(10)+ID$)
SetGadgetItemData(#ListIcon_0, CountGadgetItems(#ListIcon_0) - 1, Index)
AddElement(MyDataList())
MyDataList()\ID = Str(Index)
MyDataList()\Stichwort = Stichwort$
MyDataList()\Genre = Genre$
MyDataList()\DB = ID$
IndexEnde=Index
Index=Index+1
Next
EndProcedure
Procedure SetFocusLetztenDatensatz()
Index=IndexEnde
SetGadgetText(#S_Work_Data, Str(Index))
SetActiveGadget(#ListIcon_0)
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
EndProcedure
Procedure SetFocusNachIndexZeiger()
SetGadgetText(#S_Work_Data, Str(Index))
SetActiveGadget(#ListIcon_0)
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
EndProcedure
Procedure NewListAuslesen()
;NewList Lesen und Anzeigen
If SelectElement(MyDataList(), Index) <> 0
SetGadgetText(#New_ID, MyDataList()\ID)
SetGadgetText(#New_Stichwort, MyDataList()\Stichwort)
SetGadgetText(#New_Genre, MyDataList()\Genre)
SetGadgetText(#New_DB, MyDataList()\DB)
EndIf
EndProcedure
Procedure NewListRefresh()
Index=0
ClearGadgetItems(#ListIcon_0)
ForEach MyDataList()
AddGadgetItem(#ListIcon_0,-1, MyDataList()\ID+Chr(10)+MyDataList()\Stichwort+Chr(10)+MyDataList()\Genre +Chr(10)+MyDataList()\DB)
SetGadgetItemData(#ListIcon_0, CountGadgetItems(#ListIcon_0) - 1, Index)
Next
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 724, 115, 487, 579, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ListIconGadget(#ListIcon_0, 20, 15, 420, 415, "IDX", 30,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn(#ListIcon_0, 1, "Stichwort", 310)
AddGadgetColumn(#ListIcon_0, 2, "GX", 20)
AddGadgetColumn(#ListIcon_0, 3, "DDX", 40)
ButtonGadget(#NewDelete, 20, 435, 38, 28, "Delete")
ButtonGadget(#NewErster, 60, 435, 55, 28, "|<")
ButtonGadget(#NewMinus, 120, 435, 59, 28, "<")
StringGadget(#S_Work_Data, 185, 435, 82, 28, "Data",#ES_CENTER)
ButtonGadget(#NewPlus, 280, 435, 61, 28, ">")
ButtonGadget(#NewEnde, 340, 435, 48, 28, ">|")
ButtonGadget(#NewInsert, 390, 435, 43, 28, "Insert")
ButtonGadget(#NewFocus, 442, 435, 43, 28, "Focus")
ButtonGadget(#Refresh, 442, 405, 43, 28, "'Ref")
;NEWLIST Einträge Anzeigen
TextGadget(#New_Text,20, 480, 430, 28,"NEWLIST Einträge Anzeigen")
StringGadget(#New_ID,20, 500, 30, 28, "")
StringGadget(#New_Stichwort, 51, 500, 310, 28, "")
StringGadget(#New_Genre,370, 500, 60, 28, "")
StringGadget(#New_DB, 440, 500, 40, 28, "")
EndIf
EndProcedure
;-START
Open_Window_0()
DatensatzEinlesen()
SetFocusLetztenDatensatz()
;-EVENT
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
GadgetID = EventGadget()
Select GadgetID
Case #ListIcon_0
Select EventType()
Case #PB_EventType_LeftDoubleClick;>>>>>>>>>>>>>Bei leeren Gadget ist ein Absturz
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, -1,-1);Letzen ColorFocus löschen
Index = GetGadgetState(#ListIcon_0);Index lesen
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
Index = GetGadgetState(#ListIcon_0)
DatenSatzZiel$= (GetGadgetItemText(#ListIcon_0,GetGadgetState(#ListIcon_0),3))
MessageRequesterDatenString$ = "Index= "+ Str(Index)+" Datensatzziel= "+ DatenSatzZiel$
MessageRequester("DB Info",MessageRequesterDatenString$ , #PB_MessageRequester_Ok )
SetGadgetText(#S_Work_Data, Str(Index))
EndSelect
Case #NewDelete
RemoveGadgetItem(#ListIcon_0, Index)
IndexEnde=CountGadgetItems(#ListIcon_0)-1
SetGadgetText(#S_Work_Data, Str(Index))
SetFocusNachIndexZeiger()
SetActiveGadget(#ListIcon_0)
If SelectElement(MyDataList(), Index) <> 0
If DeleteElement(MyDataList(), 1) <> 0; Löscht aktuelles Element.
EndIf
EndIf
Case #NewInsert
;Insert Element
If LastElement(MyDataList()) <> 0
If AddElement(MyDataList()) <> 0
MyDataList()\ID = Str(IndexEnde+1)
MyDataList()\Stichwort = "Neuer Eintrag"
MyDataList()\Genre = "INSERT"
MyDataList()\DB = "xx"
EndIf
EndIf
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, -1,-1);Letzen ColorFocus löschen
IndexEnde = IndexEnde + 1
Index = IndexEnde+1
;listicon mit neuer Zeile füllen
AddGadgetItem(#ListIcon_0,-1, MyDataList()\ID+Chr(10)+MyDataList()\Stichwort+Chr(10)+MyDataList()\Genre +Chr(10)+MyDataList()\DB)
SetGadgetItemData(#ListIcon_0, CountGadgetItems(#ListIcon_0) - 1, Index)
Debug index
SetGadgetText(#S_Work_Data, Str(Index))
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
Case #NewFocus
Debug IndexEnde
Ergebnis = CountGadgetItems(#ListIcon_0)-1
SetGadgetText(#S_Work_Data, "Focus "+Str(Ergebnis))
Case #NewErster
Index=0
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
SetGadgetText(#S_Work_Data, Str(Index))
;NewList Lesen und Anzeigen
NewListAuslesen()
Case #NewMinus
If Index>0
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, -1,-1);Letzen ColorFocus löschen
Index=Index-1
EndIf
SetFocusNachIndexZeiger()
;NewList Lesen und Anzeigen
NewListAuslesen()
Case #NewPlus
If Index<IndexEnde
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, -1,-1);Letzen ColorFocus löschen
Index=Index+1
EndIf
SetFocusNachIndexZeiger()
;NewList Lesen und Anzeigen
NewListAuslesen()
Case #NewEnde
Index=IndexEnde
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
SetGadgetText(#S_Work_Data, Str(Index))
SetGadgetText(#S_Work_Data, Str(Index))
;NewList Lesen und Anzeigen
NewListAuslesen()
Case #Refresh
NewListRefresh()
Debug index
Index = IndexEnde
SetGadgetText(#S_Work_Data, Str(Index))
SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, Index, 1);Focus auf neue Zeile
SetGadgetItemColor(#ListIcon_0,Index, #PB_Gadget_BackColor, $DCDCDC,-1);Zeile färben
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
; Purebasic 4.6 x64
Gruss ... Velindos