Input werte der größe nach ordnen lassen

  • Hallo

    ich habe folgendes script geschrieben, welches folgendermaßen funktioniert:

    Unten im input gibt man einen namen ein. Nachdem man auf Create klickt, erstellt autoit diesen namen als Label und dahinter eine inputbox, welche den wert 0 hat und erstmal "disabled" is. Wichtig dabei ist, das im später sortieren der Input wert auch weiterhin zu diesem Namen gehören soll.

    Nun kann man wenn man auf den button "Edit" klickt die werte in den inputboxen verändern und mit einem weiteren klicken auf "Edit" wird diese inputbox auch wieder verschlossen(disabled)

    Was ich möchte ich folgendes: Wann immer man einen wert in einer inputbox verändert und auf den button "Edit" klickt um diese wieder zu "verschließen", soll autoit alle werte einmal betrachen und sie nach der größe geordnet wie vorher auch ausgeben, nur halt anders geordnet und die namen dazu, dürfen dabei nicht stehen bleiben sondern müssten mit den werten wandern.

    Ich hoffe jemand versteht dies. mein problem ist, das ich nicht weiß wie ich dies mit autoit bewerkstelligen kann, also das mit dem sortieren. Alles andere habe ich ja schon.

    Hier das script:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $versch=0
    $zahler=0
    Dim $dkpchar[100]
    Dim $char[100]

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("DKP Manager",240,335,782,311)

    [/autoit] [autoit][/autoit] [autoit]

    $editbutton=GuiCtrlCreateButton("Edit",180,13,40,19)

    [/autoit] [autoit][/autoit] [autoit]

    $name=GuiCtrlCreateLabel("Name",15,15,90,15)
    $dkp=GuiCtrlCreateLabel("DKP",120,15,50,15)

    [/autoit] [autoit][/autoit] [autoit]

    $neuerchar=GUICtrlCreateInput("", 15, 300, 120, 19)
    $createchar=GUICtrlCreateButton("Create", 145, 300, 80, 19)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then Exit
    If $msg=$editbutton Then button1()
    If $msg=$createchar then button2()
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func button1()
    If $versch = 0 then
    for $i = 1 to 99
    GUICtrlSetState($dkpchar[$i] , $GUI_ENABLE)
    next
    $versch = 1
    elseif $versch = 1 Then
    for $o = 1 to 99
    GUICtrlSetState($dkpchar[$o] , $GUI_DisABLE)
    next
    $versch = 0
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    func button2()
    $zahler = $zahler + 1
    $neuercharread=GUICtrlRead($neuerchar)
    $char[$zahler]=GuiCtrlCreateLabel($neuercharread,15, 15 + $zahler * 25,90,15)
    $dkpchar[$zahler]=GuiCtrlCreateInput("0",119,13 + $zahler * 25,34,19)
    GUICtrlSetState($dkpchar[$zahler] , $GUI_DisABLE)
    GUICtrlDelete($neuerchar)
    $neuerchar=GUICtrlCreateInput("", 15, 300, 120, 19)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Mfg

  • Ich würde hier mit ListView arbeiten, damit du ordenlich sortieren kann. So wie du es angegangen hast, ist es zu umständlich!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • kennt jemand ein gutes tutotrial zum thema listview? alles was ich im inet finde ist iwie keine erklären sondern nur fragen oda halt autoitwiki, wo das aber auch net genau erklärt wird, wie man es macht.
    mfg

  • Beispiel
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $iStatus = 0, $iFound = 0

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("A simple Beispiel", 482, 346, 192, 124)
    $ListView1 = GUICtrlCreateListView("Name|Nummer", 8, 8, 258, 326, -1, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)
    $Label1 = GUICtrlCreateLabel("Name hinzufügen:", 280, 16, 90, 17)
    $Label2 = GUICtrlCreateLabel("Name:", 296, 48, 35, 17)
    $Label3 = GUICtrlCreateLabel("Nummer:", 296, 80, 46, 17)
    $Input1 = GUICtrlCreateInput("", 352, 48, 121, 21)
    $Input2 = GUICtrlCreateInput("", 352, 80, 121, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Edit", 376, 112, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Löschen", 276, 140, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If $iStatus = 0 Then
    GUICtrlSetState($Input2, $GUI_ENABLE)
    $iStatus = 1
    ElseIf $iStatus = 1 Then
    If GUICtrlRead($Input1) = "" Or GUICtrlRead($Input1) = "" Then
    MsgBox(0, "Fehler", "Bitte korigieren Sie ihre Eingaben")
    Else
    GUICtrlSetState($Input2, $GUI_DISABLE)
    $iStatus = 0
    For $i = 0 To _GUICtrlListView_GetItemCount($ListView1) - 1
    $aListViewCheck = _GUICtrlListView_GetItemTextArray($ListView1, $i)
    $aFounds = _ArrayFindAll($aListViewCheck, GUICtrlRead($Input1))
    If Not $aFounds = -1 Then
    $iFound = 1
    ExitLoop
    EndIf
    Next
    If $iFound = 0 Then
    GUICtrlCreateListViewItem(GUICtrlRead($Input1) & "|" & GUICtrlRead($Input2), $ListView1)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    Else
    $iMsg = MsgBox(262144 + 4, "Fehler", "Der angegebene Name besteht bereits. Wollen Sie '" & GUICtrlRead($Input1) & "' den neuen Wert '" & GUICtrlRead($Input2) & "' zuweisen?")
    If $iMsg = 6 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($ListView1) - 1
    $aListViewCheck = _GUICtrlListView_GetItemTextArray($ListView1, $i)
    $aFounds = _ArrayFindAll($aListViewCheck, GUICtrlRead($Input1))
    If IsArray($aFounds) = 1 Then
    $iFound = $i
    ExitLoop
    EndIf
    Next
    _GUICtrlListView_SetItemText($ListView1, $iFound, GUICtrlRead($Input2), 1)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    Else
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    EndIf
    EndIf
    EndIf
    EndIf
    Case $Button2
    If GUICtrlRead($ListView1) <> 0 Then
    _GUICtrlListView_DeleteItemsSelected($ListView1)
    Else
    MsgBox(0, "Fehler", "Es wurde nichts in der ListView markiert.")
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_Notify($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hWndFrom, $code, $aCurrentRow
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $ListView1
    Select
    Case $event = $NM_CLICK
    If GUICtrlRead($ListView1) <> 0 Then
    $aCurrentRow = _GUICtrlListView_GetItemTextArray($ListView1)
    GUICtrlSetData($Input1, $aCurrentRow[1])
    GUICtrlSetData($Input2, $aCurrentRow[2])
    GUICtrlSetState($Input2, $GUI_ENABLE)
    $iStatus = 1
    EndIf
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify

    [/autoit]

    Hier mal ein beispiel wenn ich richtig verstanden habe was du geschrieben hast.

  • Hallo DTex,

    zum sortieren solltest du noch nach dem Einfügen/Ändern einer Zeile dies einfügen:

    [autoit]

    $B_DESCENDING = False ;evtl. auf true setzen dann wird genau umgedreht sortiert
    _GUICtrlListView_SimpleSort($ListView1, $B_DESCENDING, 1)

    [/autoit]

    mfg (Auto)Bert

  • Argh vergessen das in mein skript einzufügen. naja musst du manuell machen

  • ja das meine ich.... das script was du mir gegeben hast, schön und gut, aber z.b
    $LVS_EX_FULLROWSELECT verstehe ich garnet und deswegen suche ichn tut wo das alles nacheinander erklärt wird...

    mfg

    Edit: eig. verstehe ich fast as komplette script net... das is mein problem.

  • Ja dann such mal in der umfangreichen AutoIt-Hilfe:

    Unter GUICtrlCreateListView-->Erweiterte ListView Stile findest du folgendes:

    Code
    $LVS_EX_FULLROWSELECT - Wenn ein Eintrag markiert ist, werden der Eintrag und all seine Untereinträge hervorgehoben.

    Du kannst das FULLROWSELECT auch vom englischen mit allgemeinenglisch übersetzten in:

    Ganze Reihe Auswählen - Kurz und knapp, wenn man das im exStyle hat wird bei einem Klick auf das ListView die ganze reihe ausgewählt

    Ich empfehle dir mit kleinerem anzufangen und dich hochzupushen - so wie es aussieht musst du noch viel lernen.

  • ja sicher muss ich noch viel lernen aber ich kann ja net alles der autoithilfe entnehmen.... damals z.b. für qbasic gabs auch z.b. viele tutorials die haben dir von anfang an alles schirtt für schritt beigebracht... gibt es das für autoit nicht?

    mfg

  • ja das meine ich.... das script was du mir gegeben hast, schön und gut, aber z.b$LVS_EX_FULLROWSELECT verstehe ich garnet und deswegen suche ichn tut wo das alles nacheinander erklärt wird...mfgEdit: eig. verstehe ich fast as komplette script net... das is mein problem.

    Zitat von Hilfe (Konstanten für erweiterte ListView-Stile)

    $LVS_EX_FULLROWSELECT 0x00000020 Wenn ein Eintrag markiert ist, werden der Eintrag und all seine Untereinträge hervorgehoben.

    das heisst es wird immer die ganze Zeile markiert.
    Wenn du eine Funktion nicht kennst/verstehst einfach in Scite auf F1 drücken. Die Beispiele evtl. durcharbeiten, bis du den Sinn und Zweck verstanden hast.
    Hier noch einmal das Beispiel von BurakSZ etwas abgeändert und mit Kommentaren versehen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $iStatus = 0, $bFound, $B_DESCENDING

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("A simple Beispiel", 482, 346, 192, 124)
    $idListView = GUICtrlCreateListView("Name|Nummer", 8, 8, 258, 326, -1, $LVS_EX_FULLROWSELECT)
    ;erstellt eine Listview mit den Spaltenüberschriften

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)
    ;setzt die Spaltenbreiten

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Name hinzufügen:", 280, 16, 90, 17)
    GUICtrlCreateLabel("Name:", 296, 48, 35, 17)
    GUICtrlCreateLabel("Nummer:", 296, 80, 46, 17)
    $idInput_Name = GUICtrlCreateInput("", 352, 48, 121, 21)
    $idInput_Zahl = GUICtrlCreateInput("", 352, 80, 121, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
    GUICtrlSetState(-1, $GUI_DISABLE)
    $idButton_Edit = GUICtrlCreateButton("Edit", 376, 112, 75, 25)
    $idButton_Delete = GUICtrlCreateButton("Löschen", 276, 140, 75, 25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    ;hier wird der Windowsnachrichtencode $WM_Notify der Funktion WM_NOTIFY zugewiesen,
    ;das heisst jedes mal wenn die Anwendung $WM_NOTIFY sendet, wird die func WM_Notify aufgerufen

    [/autoit] [autoit][/autoit] [autoit]

    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idButton_Edit
    If $iStatus = 0 Then
    GUICtrlSetState($idInput_Zahl, $GUI_ENABLE)
    $iStatus = 1
    Else
    If GUICtrlRead($idInput_Name) = "" Or GUICtrlRead($idInput_Name) = "" Then
    MsgBox(0, "Fehler", "Bitte korigieren Sie ihre Eingaben")
    Else
    GUICtrlSetState($idInput_Zahl, $GUI_DISABLE)
    $bFound = False
    ;mit nicht gefunden vorbelegen
    For $i = 0 To _GUICtrlListView_GetItemCount($idListView) - 1
    ;schleife läuft von 0 bis zur Anzahl der Listviewzeilen -1 (da bei 0 angefangen wird zu zählen)
    If _GUICtrlListView_GetItemText($idListView, $i) = GUICtrlRead($idInput_Name) Then ;überprüft ob der Name der aktuelle Zeile mit dem Input übereinstimmt
    ;ja Eintrag besteht bereits
    $bFound = True
    $iMsg = MsgBox(262144 + 4, "Fehler", "Der angegebene Name besteht bereits. Wollen Sie '" & GUICtrlRead($idInput_Name) & "' den neuen Wert '" & GUICtrlRead($idInput_Zahl) & "' zuweisen?")
    If $iMsg = 6 Then _GUICtrlListView_SetItemText($idListView, $i, GUICtrlRead($idInput_Zahl), 1)
    ;Anwender will neuen Wert zuweisen also zuweisen
    ExitLoop
    ;es muss nicht weiter geprüft werden, da bereist gefunden === > Schleife verlassen
    EndIf
    Next
    If Not $bFound Then
    ;neuer Eintrag
    GUICtrlCreateListViewItem(GUICtrlRead($idInput_Name) & "|" & GUICtrlRead($idInput_Zahl), $idListView)
    ;erzeugt ein neues Listview-Item
    EndIf
    $B_DESCENDING = False
    _GUICtrlListView_SimpleSort($idListView, $B_DESCENDING, 1)
    ;Listview sortieren
    GUICtrlSetData($idInput_Name, "")
    GUICtrlSetData($idInput_Zahl, "")
    ;Eingabefleder leeren
    $iStatus = 0
    EndIf
    EndIf
    Case $idButton_Delete
    If GUICtrlRead($idListView) <> 0 Then
    _GUICtrlListView_DeleteItemsSelected($idListView)
    ;ausgewählte(s) LV-Items löschem
    Else
    MsgBox(0, "Fehler", "Es wurde nichts in der ListView markiert.")
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_Notify($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hWndFrom, $code, $aCurrentRow
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $idListView ;prüfen ob die Benacrichtigung vom Listview kommt
    Select
    Case $event = $NM_CLICK ;es war ein einfacher Klick (eventuel auf Doppelklick (= $NM_DBLCLK) ändern)
    If GUICtrlRead($idListView) <> 0 Then
    $aCurrentRow = _GUICtrlListView_GetItemTextArray($idListView)
    ;Inhalt des Items inkl. aller SubItems in Array zwischenspeichern
    GUICtrlSetData($idInput_Name, $aCurrentRow[1])
    GUICtrlSetData($idInput_Zahl, $aCurrentRow[2])
    ;Arraywerte zuweisen
    GUICtrlSetState($idInput_Zahl, $GUI_ENABLE)
    $iStatus = 1
    EndIf
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify

    [/autoit]

    mfg (Auto)Bert

  • ja vielen dank so ist schon etwas verständlicher. aber mit der autoit hilfe die f1. ich kann doch net mit einem anfängerwissen imma wenn ich etwas nicht kenne f1 drücken. das is doch totel beschissen. gibt es nicht tutorials die einen von anfang an imma weiter in die materie hineinfürhren?
    mfg

  • Das ist nicht 'beschissen'. Das macht jeder so. Ich auch, wenn ich mal nicht weiß was als Ruckgabewert zurückgegeben wird guck ich in der Hilfe.

    Jeder macht das so. Irgendwann sitzt es dann auch in deinem Kopf und du musst immer weniger die Taste F1 drücken bzw. die Hilfe aufrufen.

    Ohne die AutoIt Hilfe wäre das lernen der Programmiersprache SEHR schwer.

    P.S. http://wiki.autoit.de/wiki/index.php/Hauptseite

  • na gut ich hab angefangen wir selber das script zu schreiben, so wie ich denke es gehen müsste, vom verständnis her.
    SO weit bin ich gekommen:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit][autoit][/autoit][autoit]

    GuiCreate("DKP Manager",300,500,100,100)

    [/autoit][autoit][/autoit][autoit]

    $input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
    $input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
    $button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)

    [/autoit][autoit][/autoit][autoit]

    $liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)

    [/autoit][autoit][/autoit][autoit]

    $button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)

    [/autoit][autoit][/autoit][autoit]

    GuiSetState()

    [/autoit][autoit][/autoit][autoit]

    $B_DESCENDING = True

    [/autoit][autoit][/autoit][autoit]

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then Exit
    If $msg = $button_create then
    GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    endif
    Wend

    [/autoit]

    mein problem: er sortiert erst ab der 3ten eingabe und dann imma abwechselnd von groß nach klein und von klein nach groß. er soll aber nur von groß nach klein-.-
    need help pls.
    mfg

  • mein problem: er sortiert erst ab der 3ten eingabe und dann imma abwechselnd von groß nach klein und von klein nach groß. er soll aber nur von groß nach klein-.-
    need help pls.


    Die Sortierrichtung wird bei jedem Aufruf von _GUICtrlListView_SimpleSort umgedreht. Du musst sie also unmittelbar vor dem Aufruf setzen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("DKP Manager",300,500,100,100)

    [/autoit] [autoit][/autoit] [autoit]

    $input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
    $input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
    $button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)

    [/autoit] [autoit][/autoit] [autoit]

    $button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then Exit
    If $msg = $button_create then
    GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
    $B_DESCENDING = True
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    endif
    Wend

    [/autoit]

    mfg (Auto)Bert

    • Offizieller Beitrag

    $B_DESCENDING als TRUE zu deklarieren ist nicht korrekt.
    So klappt es richtig:

    [autoit]

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]

    [/autoit]


    Aber so wie ich es verstanden habe, sollen neue Einträge doch automatisch sortiert werden. Dann kannst du dir den Befehl zum sortieren schenken, wenn du das Listview mit dem Style: $LVS_SORTASCENDING / $LVS_SORTDESCENDING erstellst. ;)

  • So bin fertig! *freu* :rock:

    Hab das script nun verstanden, und selber geschrieben. Ka warum aber iwie ist es kürzer als euer script, tut aber das selbe^^.
    (nur halt die fehlermeldungen brauchte ich nicht)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("DKP Manager",300,500,100,100)
    $check = 0

    [/autoit] [autoit][/autoit] [autoit]

    $input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
    $input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
    $button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)

    [/autoit] [autoit][/autoit] [autoit]

    $button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()

    [/autoit] [autoit][/autoit] [autoit]

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($liste)]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then Exit
    If $msg = $button_create then
    $check = 0
    For $i = 0 To _GUICtrlListView_GetItemCount($liste) - 1
    If _GUICtrlListView_GetItemText($liste, $i) = GUICtrlRead($input_name) Then
    _GUICtrlListView_SetItemText($liste, $i, GUICtrlRead($input_dkp), 1)
    $B_DESCENDING = True
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    $check = 1
    ExitLoop
    EndIf
    next
    If $check = 0 then
    GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
    $B_DESCENDING = True
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    EndIf
    endif
    If $msg = $button_delete Then
    If GUICtrlRead($liste) <> 0 Then
    _GUICtrlListView_DeleteItemsSelected($liste)
    endif
    endif
    Wend

    [/autoit]

    Nun noch eine frage: Und zwar möchte ich, das alle namen und punkte in einem textdokument abgespeichert werden, sodass sie, bei erneutem starten des programms schon in der liste vorhanden sind. Wie kann ich dies tun?
    mfg

  • Hallo dtex,

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sLVdat = @ScriptDir & "\LV_Daten.Dat"

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("DKP Manager",300,500,100,100)
    $check = 0

    [/autoit] [autoit][/autoit] [autoit]

    $input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
    $input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
    $button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
    GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)

    [/autoit] [autoit][/autoit] [autoit]

    $button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()

    [/autoit] [autoit][/autoit] [autoit]

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($liste)]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then
    _saveLV()
    Exit
    EndIf
    If $msg = $button_create then
    $check = 0
    For $i = 0 To _GUICtrlListView_GetItemCount($liste) - 1
    If _GUICtrlListView_GetItemText($liste, $i) = GUICtrlRead($input_name) Then
    _GUICtrlListView_SetItemText($liste, $i, GUICtrlRead($input_dkp), 1)
    $B_DESCENDING = True
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    $check = 1
    ExitLoop
    EndIf
    next
    If $check = 0 then
    GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
    $B_DESCENDING = True
    _GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
    GUICtrlSetData($input_name, "")
    GUICtrlSetData($input_dkp, "")
    EndIf
    endif
    If $msg = $button_delete Then
    If GUICtrlRead($liste) <> 0 Then
    _GUICtrlListView_DeleteItemsSelected($liste)
    endif
    endif
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func _saveLV()
    Local $sFile, $aItem, $hFileOut
    $hFileOut = FileOpen($sLVdat, 2)
    For $j = 0 To _GUICtrlListView_GetItemCount($Liste) - 1
    $aItem = _GUICtrlListView_GetItemTextString($Liste, $j)
    FileWriteLine($hFileOut, $aItem)
    Next
    FileClose($hFileOut)
    EndFunc ;==>_saveLVs

    [/autoit] [autoit][/autoit] [autoit]

    Func _LoadLV()
    Local $aItems
    If FileExists($sLVdat) Then
    $aItems = ""
    _FileReadToArray($sLVdat, $aItems)
    If IsArray($aItems) Then
    For $j = 1 To $aItems[0]
    GUICtrlCreateListViewItem($aItems[$j], $Liste)
    Next
    EndIf
    EndIf
    EndFunc ;==>_LoadLVs

    [/autoit]

    so sollte es funktionieren, kann es aber im Moment nicht testen

    mfg (Auto)Bert