"Arzt" Programm

  • Spoiler anzeigen

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.2.10.0
    Author: Sirocool

    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------

    ; Script Start - Add your code below here
    Dim $ver = "1.0.0"
    #include <Inet.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Local $INI = @ScriptDir & "\Patienten.ini"

    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.1978|44556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)


    If FileExists("C:\artzt\images\bg.bmp") Then
    _Haupt()
    Else
    DirCreate("C:\artzt\images\")
    FileInstall("images\Close.bmp","C:\artzt\images\close.bmp")
    FileInstall("images\bg.bmp","C:\artzt\images\bg.bmp")
    Sleep(500)
    _Haupt()
    EndIf
    Func _Haupt()
    $Form1 = GUICreate("Artzt v.1.0.0", 900, 600, -1, -1,$WS_POPUP)
    GUISetBkColor("C:\artzt\images\bg.gif")
    $Pic6 = GUICtrlCreatePic("C:\artzt\images\close.bmp", 858, 0, 42, 40, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 0)
    $Pic7 = GUICtrlCreatePic("C:\artzt\images\bg.bmp", 0, 0, 900, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$WS_DISABLED))
    $PageControl1 = GUICtrlCreateTab(8, 56, 900, 600)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr|Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 340, 361, 559, 200)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_del = GUICtrlCreateMenuItem('Patient Löschen', $mnu)
    ; ### Ende Kontextmenü
    $Label1 = GUICtrlCreateLabel("Vorname:", 345, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 600, 105, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 420, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 700, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 345, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 420, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 600, 169, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 700, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 345, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 420, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 700, 233, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    GUICtrlCreateTabItem("")
    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)


    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then

    ElseIf GUICtrlRead($PageControl1) = 1 Then

    ElseIf GUICtrlRead($PageControl1) = 2 Then

    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Pic6
    _AnimButton($Form1, $Pic6)
    _Close()

    EndSwitch
    EndSwitch
    WEnd


    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Spalte wird in GUI gezeigt
    Local $indx_Item = $Info[3], $indx_Sub = $Info[4]
    GUICtrlSetData($lb_Patient, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $indx_Item, $indx_Sub))
    GUISetState(@SW_SHOW, $Form2)
    EndFunc
    Func _Close()
    Exit
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ColumnClick($aInfo)
    Case $LVN_DELETEITEM ; An item is about to be deleted
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ItemDeleted($aInfo)
    Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    Return 0 ; allow the list view to perform its normal track select processing.
    ;Return 1 ; the item will not be selected.
    ;~ _HottTrackItem($aInfo)
    Case $LVN_KEYDOWN ; A key has been pressed
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    Local $aInfo[5] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "VKey"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _KeyDown($aInfo)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _LeftClick($aInfo)
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_KILLFOCUS ; The control has lost the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _LostFocus($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ; Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    ;~ _RightClick($aInfo)
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _RightDblClick($aInfo)
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _InputFocusReturn($aInfo)
    Case $NM_SETFOCUS ; The control has received the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _SetFocus($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY
    Func _AnimButton($IDgui, $IDbtn, $delay=100);Animiert bilder als button, funktion an sich von BugFix
    Local $pos = ControlGetPos($IDgui, '', $IDbtn)
    Local $pWin = WinGetPos($IDgui)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1]+2, $pos[2]-2, $pos[3]-2)
    Sleep($delay)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
    EndFunc ;==> _AnimButton

    • Offizieller Beitrag

    Hm, ich will deine Arbeit nicht niedermachen das mal von Vorneweg. Läuft das Script bei dir überhaut ? Kann mir des nicht vorstellen , bei so viele Fehlern schon bei der compilierung. Habe Autoit 3.2.12.1 und weiß nicht ob dein Script so wie es ist auf Autoit 3.2.10.0 läuft. Nimm mal die aktuelle Version 3.2.12.1 und probier es aus. Ich kann nur soviel sagen, BUG´s finden im Script ist schön und gut ,sollte aber zumindest mal anlaufen .

    Edir habe jetzt des Script das beim Compilieren nur noch 1 Fehlermeldung kommt.
    Zu dem Fehler : Woher hast du die Function _FillListView() ? Du rufst sie im Script auf aber es gibt diese Function nicht in deinem Script .

  • ziehe bild aber sind noch kleine fehler drin

    http://s11b.directupload.net/file/d/1629/5u85o6xf_jpg.htm

    Spoiler anzeigen

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.2.10.0
    Author: Sirocool

    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------

    ; Script Start - Add your code below here
    Dim $ver = "1.0.0"
    #include <Inet.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Local $INI = @ScriptDir & "\Patienten.ini"

    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.1978|44556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)


    If FileExists("C:\artzt\images\bg.bmp") Then
    _Haupt()
    Else
    DirCreate("C:\artzt\images\")
    FileInstall("images\Close.bmp","C:\artzt\images\close.bmp")
    FileInstall("images\bg.bmp","C:\artzt\images\bg.bmp")
    Sleep(500)
    _Haupt()
    EndIf
    Func _Haupt()
    $Form1 = GUICreate("Artzt v.1.0.0", 900, 600, -1, -1,$WS_POPUP)
    GUISetBkColor("C:\artzt\images\bg.gif")
    $Pic6 = GUICtrlCreatePic("C:\artzt\images\close.bmp", 858, 0, 42, 40, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 0)
    $Pic7 = GUICtrlCreatePic("C:\artzt\images\bg.bmp", 0, 0, 900, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$WS_DISABLED))
    $PageControl1 = GUICtrlCreateTab(8, 56, 900, 600)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr|Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 340, 361, 559, 200)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_del = GUICtrlCreateMenuItem('Patient Löschen', $mnu)
    ; ### Ende Kontextmenü
    $Label1 = GUICtrlCreateLabel("Vorname:", 345, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 600, 105, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 420, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 700, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 345, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 420, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 600, 169, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 700, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 345, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 420, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 700, 233, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    GUICtrlCreateTabItem("")
    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)


    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then

    ElseIf GUICtrlRead($PageControl1) = 1 Then

    ElseIf GUICtrlRead($PageControl1) = 2 Then

    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Pic6
    _AnimButton($Form1, $Pic6)
    _Close()

    EndSwitch
    EndSwitch
    WEnd


    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Spalte wird in GUI gezeigt
    Local $indx_Item = $Info[3], $indx_Sub = $Info[4]
    GUICtrlSetData($lb_Patient, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $indx_Item, $indx_Sub))
    GUISetState(@SW_SHOW, $Form2)
    EndFunc
    Func _Close()
    Exit
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ColumnClick($aInfo)
    Case $LVN_DELETEITEM ; An item is about to be deleted
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ItemDeleted($aInfo)
    Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    Return 0 ; allow the list view to perform its normal track select processing.
    ;Return 1 ; the item will not be selected.
    ;~ _HottTrackItem($aInfo)
    Case $LVN_KEYDOWN ; A key has been pressed
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    Local $aInfo[5] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "VKey"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _KeyDown($aInfo)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _LeftClick($aInfo)
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_KILLFOCUS ; The control has lost the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _LostFocus($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ; Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    ;~ _RightClick($aInfo)
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _RightDblClick($aInfo)
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _InputFocusReturn($aInfo)
    Case $NM_SETFOCUS ; The control has received the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _SetFocus($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY
    Func _AnimButton($IDgui, $IDbtn, $delay=100);Animiert bilder als button, funktion an sich von BugFix
    Local $pos = ControlGetPos($IDgui, '', $IDbtn)
    Local $pWin = WinGetPos($IDgui)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1]+2, $pos[2]-2, $pos[3]-2)
    Sleep($delay)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
    EndFunc ;==> _AnimButton

  • Hab es jetzt nochmal untergeladen. ist zwar jetzt nichts gegen dich, aber in der Liste ist glaub ich noch irgendwo ein Fehler.(Ich muss mal schauen ob ich ihn finde)
    P.S.: Die exe funktioniert bei mir. :D
    P.S.S: Ganz schön viele Fehler :cursing:

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

    • Offizieller Beitrag

    Kann es eventuell sein das du die Function _FillListView hierher hast ?http://www.autoitscript.com/forum/index.php?showtopic=67615
    Wenn ja dann solltest du es auch in deinen Scriptcode einbinden .

    EDIT:
    Hab den code mal soweit geändert das des Prog wenigstens Compiliert wird und startet . Die INCLUDES hab ich mit OrganizeInclude angepasst und die Function
    _FillListView von hier http://www.autoitscript.com/forum/index.php?showtopic=67615 eingefügt.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.2.10.0
    Author: Sirocool

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

    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here
    Dim $ver = "1.0.0"
    Local $INI = @ScriptDir & "\Patienten.ini"

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

    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.19744556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

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

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Global $Listview1,$Form2,$lb_Patient
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)

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

    If FileExists("C:\artzt\images\bg.bmp") Then
    _Haupt()
    Else
    DirCreate("C:\artzt\images\")
    FileInstall("images\Close.bmp","C:\artzt\images\close.bmp")
    FileInstall("images\bg.bmp","C:\artzt\images\bg.bmp")
    Sleep(500)
    _Haupt()
    EndIf
    Func _Haupt()
    $Form1 = GUICreate("Artzt v.1.0.0", 900, 600, -1, -1,$WS_POPUP)
    GUISetBkColor("C:\artzt\images\bg.gif")
    $Pic6 = GUICtrlCreatePic("C:\artzt\images\close.bmp", 858, 0, 42, 40, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 0)
    $Pic7 = GUICtrlCreatePic("C:\artzt\images\bg.bmp", 0, 0, 900, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$WS_DISABLED))
    $PageControl1 = GUICtrlCreateTab(8, 56, 900, 600)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr|Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 340, 361, 559, 200)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_del = GUICtrlCreateMenuItem('Patient Löschen', $mnu)
    ; ### Ende Kontextmenü
    $Label1 = GUICtrlCreateLabel("Vorname:", 345, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 600, 105, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 420, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 700, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 345, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 420, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 600, 169, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 700, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 345, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 420, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 700, 233, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    GUICtrlCreateTabItem("")
    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then

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

    ElseIf GUICtrlRead($PageControl1) = 1 Then

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

    ElseIf GUICtrlRead($PageControl1) = 2 Then

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

    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Pic6
    _AnimButton($Form1, $Pic6)
    _Close()

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

    EndSwitch
    EndSwitch
    WEnd

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

    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

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

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Spalte wird in GUI gezeigt
    Local $indx_Item = $Info[3], $indx_Sub = $Info[4]
    GUICtrlSetData($lb_Patient, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $indx_Item, $indx_Sub))
    GUISetState(@SW_SHOW, $Form2)
    EndFunc
    Func _Close()
    Exit
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ColumnClick($aInfo)
    Case $LVN_DELETEITEM ; An item is about to be deleted
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ItemDeleted($aInfo)
    Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    Return 0 ; allow the list view to perform its normal track select processing.
    ;Return 1 ; the item will not be selected.
    ;~ _HottTrackItem($aInfo)
    Case $LVN_KEYDOWN ; A key has been pressed
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    Local $aInfo[5] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "VKey"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _KeyDown($aInfo)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _LeftClick($aInfo)
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_KILLFOCUS ; The control has lost the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _LostFocus($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ; Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    ;~ _RightClick($aInfo)
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _RightDblClick($aInfo)
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _InputFocusReturn($aInfo)
    Case $NM_SETFOCUS ; The control has received the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _SetFocus($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY
    Func _AnimButton($IDgui, $IDbtn, $delay=100);Animiert bilder als button, funktion an sich von BugFix
    Local $pos = ControlGetPos($IDgui, '', $IDbtn)
    Local $pWin = WinGetPos($IDgui)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1]+2, $pos[2]-2, $pos[3]-2)
    Sleep($delay)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
    EndFunc ;==> _AnimButton
    Func _FillListView()
    $GetItems = _FileListToArray(@DesktopDir)
    For $I = 1 To $GetItems[0]
    If StringInStr($GetItems[$I], ".") = 1 Then Beep(8000, 100)
    Next
    EndFunc

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

    Func _FileListToArray($Path, $Filter = "*")
    Local $Search, $File, $FileList[1]
    $Search = FileFindFirstFile($Path & "\" & $Filter)
    While 1
    $File = FileFindNextFile($Search)
    If @error Then ExitLoop
    ReDim $FileList[UBound($FileList) + 1]
    $FileList[0] += 1
    $FileList[UBound($FileList) - 1] = $File
    WEnd
    FileClose($Search)
    Return $FileList
    EndFunc ;==>_

    [/autoit]

    Ich denke des ist ne gute Grundlage um an die BUGSUCHE zu gehen .

  • http://s11b.directupload.net/file/d/1629/n392gks7_jpg.htm

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.2.10.0
    Author: Sirocool

    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------

    ; Script Start - Add your code below here
    Dim $ver = "1.0.0"
    Local $INI = @ScriptDir & "\Patienten.ini"

    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.19744556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Global $Listview1,$Form2,$lb_Patient
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)


    If FileExists("C:\artzt\images\bg.bmp") Then
    _Haupt()
    Else
    DirCreate("C:\artzt\images\")
    FileInstall("images\Close.bmp","C:\artzt\images\close.bmp")
    FileInstall("images\bg.bmp","C:\artzt\images\bg.bmp")
    Sleep(500)
    _Haupt()
    EndIf
    Func _Haupt()
    $Form1 = GUICreate("Artzt v.1.0.0", 900, 600, -1, -1,$WS_POPUP)
    GUISetBkColor("C:\artzt\images\bg.gif")
    $Pic6 = GUICtrlCreatePic("C:\artzt\images\close.bmp", 858, 0, 42, 40, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 0)
    $Pic7 = GUICtrlCreatePic("C:\artzt\images\bg.bmp", 0, 0, 900, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$WS_DISABLED))
    $PageControl1 = GUICtrlCreateTab(8, 56, 900, 600)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr|Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 340, 361, 559, 200)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_del = GUICtrlCreateMenuItem('Patient Löschen', $mnu)
    ; ### Ende Kontextmenü
    $Label1 = GUICtrlCreateLabel("Vorname:", 345, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 600, 105, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 420, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 700, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 345, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 420, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 600, 169, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 700, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 345, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 420, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 700, 233, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    GUICtrlCreateTabItem("")
    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)


    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then

    ElseIf GUICtrlRead($PageControl1) = 1 Then

    ElseIf GUICtrlRead($PageControl1) = 2 Then

    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Pic6
    _AnimButton($Form1, $Pic6)
    _Close()

    EndSwitch
    EndSwitch
    WEnd


    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Spalte wird in GUI gezeigt
    Local $indx_Item = $Info[3], $indx_Sub = $Info[4]
    GUICtrlSetData($lb_Patient, _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $indx_Item, $indx_Sub))
    GUISetState(@SW_SHOW, $Form2)
    EndFunc
    Func _Close()
    Exit
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ColumnClick($aInfo)
    Case $LVN_DELETEITEM ; An item is about to be deleted
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ItemDeleted($aInfo)
    Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    Return 0 ; allow the list view to perform its normal track select processing.
    ;Return 1 ; the item will not be selected.
    ;~ _HottTrackItem($aInfo)
    Case $LVN_KEYDOWN ; A key has been pressed
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    Local $aInfo[5] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "VKey"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _KeyDown($aInfo)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _LeftClick($aInfo)
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_KILLFOCUS ; The control has lost the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _LostFocus($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ; Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    ;~ _RightClick($aInfo)
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _RightDblClick($aInfo)
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _InputFocusReturn($aInfo)
    Case $NM_SETFOCUS ; The control has received the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _SetFocus($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY
    Func _AnimButton($IDgui, $IDbtn, $delay=100);Animiert bilder als button, funktion an sich von BugFix
    Local $pos = ControlGetPos($IDgui, '', $IDbtn)
    Local $pWin = WinGetPos($IDgui)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1]+2, $pos[2]-2, $pos[3]-2)
    Sleep($delay)
    ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
    EndFunc ;==> _AnimButton
    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

    Func _FileListToArray($Path, $Filter = "*")
    Local $Search, $File, $FileList[1]
    $Search = FileFindFirstFile($Path & "\" & $Filter)
    While 1
    $File = FileFindNextFile($Search)
    If @error Then ExitLoop
    ReDim $FileList[UBound($FileList) + 1]
    $FileList[0] += 1
    $FileList[UBound($FileList) - 1] = $File
    WEnd
    FileClose($Search)
    Return $FileList
    EndFunc ;==>_

    Einmal editiert, zuletzt von Sirocool (30. November 2008 um 17:29)

    • Offizieller Beitrag

    Habe nen Fehler gefunden deine Zeile 23 sollte so heißen

    [autoit]

    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.1974|44556 Musterdorf|Mustergasse 17")

    [/autoit]


    Es wäre auch gut wenn die Patienten gleich bei Programstart in der Gui angezeigt werden nicht erst wenn man einen Patienten hinzufügt .
    Edit: Benenne Dein Programm mal um in Arzt. :P
    Edit2: einfach nach deinem Code :

    [autoit]

    GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)

    [/autoit]

    das einfügen :

    [autoit]

    _FillListView()

    [/autoit]

    dann klappt die Patientenanzeige bei Programmstart .

  • Dass hier so viele schreiben hab ich am Anfang garnicht gedacht.
    Ich habs mal weiter überarbeitet. Man kann jetzt neue Einträge machen.
    Schauts euch einfach mal an.
    Das Speichern vom Edit ist noch nicht eingebaut und über das Kontextmenü -> Patient bearbeiten kommt man noch nicht zum bearbeiten (ich wusste nicht wie man das machen soll).
    EDIT: Hab noch ne Sortierungsfunktion eingebaut ;)

    EDIT 2: Kalender hinzugefügt (aber noch keine Funktion eingebaut)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GUIConstants.au3>

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

    ;Global Const $LVFI_PARAM = 0x0001
    ;Global Const $LVIF_TEXT = 0x0001
    ;Global Const $LVM_FIRST = 0x1000
    Global Const $LVM_GETITEM = $LVM_FIRST + 5
    ;Global Const $LVM_FINDITEM = $LVM_FIRST + 13
    ;Global Const $LVM_SETSELECTEDCOLUMN= $LVM_FIRST + 140

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

    Dim $nCurCol = -1
    Dim $nSortDir = 1
    Dim $bSet = 0
    Dim $nCol = -1

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

    Local $INI = @ScriptDir & "\Patienten.ini"
    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.1978|44556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

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

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)
    Dim $date = @YEAR & "/" & @MON & "/" & @MDAY

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Arzt", 1017, 736,0,0)
    $PageControl1 = GUICtrlCreateTab(8, 56, 1007, 707)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr |Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 24, 152, 969, 552)
    GUICtrlRegisterListViewSort(-1, "LVSort")
    GUICtrlSetFont($Listview1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_edit = GUICtrlCreateMenuItem('Patient bearbeiten', $mnu)
    $mnu_del = GUICtrlCreateMenuItem('Patient löschen', $mnu)
    ; ### Ende Kontextmenü
    $TabSheet2 = GUICtrlCreateTabItem("Neuer Patient")
    $Label1 = GUICtrlCreateLabel("Vorname:", 28, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 28, 137, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 110, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 110, 137, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 28, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 110, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 28, 201, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 110, 201, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 28, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 110, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 110, 272, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    $MonthCal1 = GUICtrlCreateMonthCal($date, 24, 88, 977, 630)
    GUICtrlCreateTabItem("")
    #EndRegion ### START Koda GUI section ### Form=

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Patient bearbeiten", 1017, 736,0,0)
    $Edit1 = GUICtrlCreateEdit("", 16, 80, 985, 569,0x1000)
    $Label6 = GUICtrlCreateLabel("Nr.:", 16, 32, 21, 17)
    $Label7 = GUICtrlCreateLabel("Vorname:", 88, 32, 49, 17)
    $Label8 = GUICtrlCreateLabel("Nachname:", 272, 32, 59, 17)
    $Label9 = GUICtrlCreateLabel("Geburtsdatum:", 464, 32, 73, 17)
    $Label10 = GUICtrlCreateLabel("PLZ / Wohnort:", 616, 32, 79, 17)
    $Label11 = GUICtrlCreateLabel("Straße:", 840, 32, 38, 17)
    $Input6 = GUICtrlCreateInput("", 40, 32, 41, 21)
    $Input7 = GUICtrlCreateInput("", 144, 32, 121, 21)
    $Input8 = GUICtrlCreateInput("", 336, 32, 121, 21)
    $Input9 = GUICtrlCreateInput("", 544, 32, 65, 21)
    $Input10 = GUICtrlCreateInput("", 696, 32, 137, 21)
    $Input11 = GUICtrlCreateInput("", 880, 32, 121, 21)
    $Button2 = GUICtrlCreateButton("Neuer Eintrag", 16, 664, 121, 57, 0)
    $Button3 = GUICtrlCreateButton("Daten speichern", 144, 664, 121, 57, 0)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    _FillListView()
    GUISetState(@SW_SHOW, $Form1)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then
       
    ElseIf GUICtrlRead($PageControl1) = 1 Then
       
    ElseIf GUICtrlRead($PageControl1) = 2 Then
    GUICtrlSetData($MonthCal1,$date)
    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Listview1
    $bSet = 0
    $nCurCol = $nCol
    GUICtrlSendMsg($Listview1, $LVM_SETSELECTEDCOLUMN, GUICtrlGetState($Listview1), 0)
    DllCall("user32.dll", "int", "InvalidateRect", "hwnd", GUICtrlGetHandle($Listview1), "int", 0, "int", 1)
    ;~ Case $mnu_edit
    ;~ was muss hier rein???
    EndSwitch
    Case $Form2
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form2)
    Case $Button2 ; Neuer Eintrag
    $edit = GUICtrlRead($edit1)
    If $edit = "" Then
    $edit = "[" & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & "] :"
    Else
    $edit = $edit & @CRLF & @CRLF & @CRLF & "[" & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & "] :"
    EndIf
    GUICtrlSetData($edit1,$edit)
    EndSwitch
    EndSwitch
    WEnd

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

    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

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

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Zeile (alle Spalten) wird in GUI gezeigt
    GUICtrlSetData($Input6 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 0))
    GUICtrlSetData($Input7 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 1))
    GUICtrlSetData($Input8 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 2))
    GUICtrlSetData($Input9 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 3))
    GUICtrlSetData($Input10 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 4))
    GUICtrlSetData($Input11 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 5))
    GUISetState(@SW_SHOW, $Form2)
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Return $GUI_RUNDEFMSG ; allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    ; Unsere Sortier-Callback-Funktionen
    Func LVSort($hWnd, $nItem1, $nItem2, $nColumn)
    Local $nSort
       
    ; Schalte die Sortierrichtung um
    If $nColumn = $nCurCol Then
    If Not $bSet Then
    $nSortDir = $nSortDir * -1
    $bSet = 1
    EndIf
    Else
    $nSortDir = 1
    EndIf
    $nCol = $nColumn
       
    $val1 = GetSubItemText($Listview1, $nItem1, $nColumn)
    $val2 = GetSubItemText($Listview1, $nItem2, $nColumn)
       
    ; Wenn es die dritte Spalte ist (startet bei 0) dann vergleiche die Daten
    If $nColumn = 2 Then
    $val1 = StringRight($val1, 4) & StringMid($val1, 4, 2) & StringLeft($val1, 2)
    $val2 = StringRight($val2, 4) & StringMid($val2, 4, 2) & StringLeft($val2, 2)
    EndIf
       
    $nResult = 0 ; Keine Änderung in item1 und item2 Positionen
       
    If $val1 < $val2 Then
    $nResult = -1 ; Setze item2 vor item1
    ElseIf $val1 > $val2 Then
    $nResult = 1 ; Setze item2 hinter item1
    EndIf

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

    $nResult = $nResult * $nSortDir
       
    Return $nResult
    EndFunc

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

    ; Text eines Baumansicht-Elements in einer bestimmten Spalte abrufen
    Func GetSubItemText($nCtrlID, $nItemID, $nColumn)
    Local $stLvfi = DllStructCreate("uint;ptr;int;int[2];int")
    DllStructSetData($stLvfi, 1, $LVFI_PARAM)
    DllStructSetData($stLvfi, 3, $nItemID)

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

    Local $stBuffer = DllStructCreate("char[260]")
       
    $nIndex = GUICtrlSendMsg($nCtrlID, $LVM_FINDITEM, -1, DllStructGetPtr($stLvfi));
       
    Local $stLvi = DllStructCreate("uint;int;int;uint;uint;ptr;int;int;int;int")
       
    DllStructSetData($stLvi, 1, $LVIF_TEXT)
    DllStructSetData($stLvi, 2, $nIndex)
    DllStructSetData($stLvi, 3, $nColumn)
    DllStructSetData($stLvi, 6, DllStructGetPtr($stBuffer))
    DllStructSetData($stLvi, 7, 260)

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

    GUICtrlSendMsg($nCtrlID, $LVM_GETITEM, 0, DllStructGetPtr($stLvi));

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

    $sItemText = DllStructGetData($stBuffer, 1)

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

    $stLvi = 0
    $stLvfi = 0
    $stBuffer = 0
       
    Return $sItemText
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von MOZ (30. November 2008 um 21:07)

  • Wenn ich das Progg mir so ansehe fallen mir zwei Sachen auf.

    1.) Wichtig wäre die Erfassung der Versicherungsnummer und weiterhin dort zu beachten, das man auch "Privatpat." eintragen kann.

    2.) Es fehlt ein Berichtsfenster. Ich denke mal, wenn ein Bereitschaftsarzt Daten beim Patienten zuhause erfassen würde und das z. B. in der Nachtbereitschaft, wäre es sehr gut, wenn er auch Info's eingeben kann, was er für Untersuchungen gemacht hat oder welche weiteren Wege er eingeleitet hat.

    Aber ansonsten istd as Projekt doch ordentlich in Gange und eine gute Idee, wo man auch was lernen kann.

    LG,
    Alina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Wenn ich das Progg mir so ansehe fallen mir zwei Sachen auf.

    1.) Wichtig wäre die Erfassung der Versicherungsnummer und weiterhin dort zu beachten, das man auch "Privatpat." eintragen kann.

    2.) Es fehlt ein Berichtsfenster. Ich denke mal, wenn ein Bereitschaftsarzt Daten beim Patienten zuhause erfassen würde und das z. B. in der Nachtbereitschaft, wäre es sehr gut, wenn er auch Info's eingeben kann, was er für Untersuchungen gemacht hat oder welche weiteren Wege er eingeleitet hat.

    Aber ansonsten istd as Projekt doch ordentlich in Gange und eine gute Idee, wo man auch was lernen kann.

    LG,
    Alina.


    1.) Ich weiß nicht ob du es im ersten Beitrag gelesen hast, aber dort habe ich geschrieben es geht um die Verwaltung von Kuscheltieren als Patienten. Die haben eher weniger eine Versicherungsnummer . Aber um es "normal" anzuwenden, wäre das sicher sinnvoll.
    2.) Also bei meiner Version* ist so ein Berichtsfenster eingebaut. Lediglich die speicherfunktion fehlt noch.

    * [ offen ] "Arzt" Programm

  • So ich hab die Speicherfunktion für das Edit gemacht. Wenn man bei einem Patienten drin ist kann man auch dort die Daten( Vorname,Nachname,...) noch ändern. Gespeichert wird bei drunk auf den "Daten speichern" Button oder durch das "X" zum Fenster schließen.

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GUIConstants.au3>

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

    ;Global Const $LVFI_PARAM = 0x0001
    ;Global Const $LVIF_TEXT = 0x0001
    ;Global Const $LVM_FIRST = 0x1000
    Global Const $LVM_GETITEM = $LVM_FIRST + 5
    ;Global Const $LVM_FINDITEM = $LVM_FIRST + 13
    ;Global Const $LVM_SETSELECTEDCOLUMN= $LVM_FIRST + 140

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

    Dim $nCurCol = -1
    Dim $nSortDir = 1
    Dim $bSet = 0
    Dim $nCol = -1
    Dim $nr, $patientendaten

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

    Local $INI = @ScriptDir & "\Patienten.ini"
    ; nur zum Testen:
    If Not FileExists($INI) Then
    IniWrite($INI, "Patienten", 10000, "Peter|Lustig|11.11.1956|12345 Grüner-Wald|Bauwagen 1")
    IniWrite($INI, "edit", 10000, "")
    IniWrite($INI, "Patienten", 10001, "Marion|Rosenbaum|08.12.1987|33445 Irgendwo|Am Feld 35")
    IniWrite($INI, "edit", 10001, "")
    IniWrite($INI, "Patienten", 10002, "Max|Mustermann|12.12.1978|44556 Musterdorf|Mustergasse 17")
    IniWrite($INI, "edit", 10002, "")
    IniWrite($INI, "Numbers", "last", 10002)
    EndIf
    ; Ende Test-INI

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

    Global $aPatienten = IniReadSection($INI, "Patienten")
    Local $lastNum = IniRead($INI, "Numbers", "last", 9999)
    Dim $date = @YEAR & "/" & @MON & "/" & @MDAY

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Arzt", 1017, 736,0,0)
    $PageControl1 = GUICtrlCreateTab(8, 56, 1007, 707)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Patienten")
    $Listview1 = GUICtrlCreateListView("Nr |Vorname|Nachname|Geburtsdatum|PLZ / Wohnort| Straße", 24, 152, 969, 552)
    GUICtrlRegisterListViewSort(-1, "LVSort")
    GUICtrlSetFont($Listview1, 8, 400, 0, "MS Sans Serif")
    ; ### hier Kontextmenü für ListView einfügen:
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_edit = GUICtrlCreateMenuItem('Patient bearbeiten', $mnu)
    $mnu_del = GUICtrlCreateMenuItem('Patient löschen', $mnu)
    ; ### Ende Kontextmenü
    $TabSheet2 = GUICtrlCreateTabItem("Neuer Patient")
    $Label1 = GUICtrlCreateLabel("Vorname:", 28, 105, 73, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Nachname:", 28, 137, 85, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 110, 105, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("", 110, 137, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Geburtsdatum:", 28, 169, 111, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input3 = GUICtrlCreateInput("DD.MM.YYYY", 110, 169, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("PLZ / Wohnort:", 28, 201, 106, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input4 = GUICtrlCreateInput("", 110, 201, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Straße:", 28, 233, 57, 24)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Input5 = GUICtrlCreateInput("", 110, 233, 161, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Neuen Patienten speichern", 110, 272, 161, 30, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
    $TabSheet3 = GUICtrlCreateTabItem("Termine")
    $MonthCal1 = GUICtrlCreateMonthCal($date, 24, 88, 977, 630)
    GUICtrlCreateTabItem("")
    #EndRegion ### START Koda GUI section ### Form=

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Patient bearbeiten", 1017, 736,0,0)
    $Edit1 = GUICtrlCreateEdit("", 16, 80, 985, 569,0x1000)
    $Label6 = GUICtrlCreateLabel("Nr.:", 16, 32, 21, 17)
    $Label7 = GUICtrlCreateLabel("Vorname:", 88, 32, 49, 17)
    $Label8 = GUICtrlCreateLabel("Nachname:", 272, 32, 59, 17)
    $Label9 = GUICtrlCreateLabel("Geburtsdatum:", 464, 32, 73, 17)
    $Label10 = GUICtrlCreateLabel("PLZ / Wohnort:", 616, 32, 79, 17)
    $Label11 = GUICtrlCreateLabel("Straße:", 840, 32, 38, 17)
    $Input6 = GUICtrlCreateInput("", 40, 32, 41, 21)
    $Input7 = GUICtrlCreateInput("", 144, 32, 121, 21)
    $Input8 = GUICtrlCreateInput("", 336, 32, 121, 21)
    $Input9 = GUICtrlCreateInput("", 544, 32, 65, 21)
    $Input10 = GUICtrlCreateInput("", 696, 32, 137, 21)
    $Input11 = GUICtrlCreateInput("", 880, 32, 121, 21)
    $Button2 = GUICtrlCreateButton("Neuer Eintrag", 16, 664, 121, 57, 0)
    $Button3 = GUICtrlCreateButton("Daten speichern", 144, 664, 121, 57, 0)
    $Button4 = GUICtrlCreateButton("Alle Berichte löschen", 272, 664, 121, 57, 0)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    _FillListView()
    GUISetState(@SW_SHOW, $Form1)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1] ; Window-Handle
    Case $Form1
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $PageControl1
    If GUICtrlRead($PageControl1) = 0 Then
       
    ElseIf GUICtrlRead($PageControl1) = 1 Then
       
    ElseIf GUICtrlRead($PageControl1) = 2 Then
    GUICtrlSetData($MonthCal1,$date)
    EndIf
    Case $Button1
    $lastNum += 1
    $Vorname = GUICtrlRead($Input1)
    $Nachname = GUICtrlRead($Input2)
    $Geburtsdatum = GUICtrlRead($Input3)
    $PLZWohnort = GUICtrlRead($Input4)
    $Strasse = GUICtrlRead($Input5)
    IniWrite($INI, "Numbers", "last", $lastNum)
    IniWrite($INI, "Patienten", $lastNum, $Vorname & '|' & $Nachname & '|' & $Geburtsdatum & '|' & $PLZWohnort & '|' & $Strasse)
    IniWrite($INI, "edit",$lastNum,"")
    GUICtrlSetData($Input1, "")
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "DD.MM.YYYY")
    GUICtrlSetData($Input4, "")
    GUICtrlSetData($Input5, "")
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    _FillListView()
    Case $mnu_del
    ; Eintrag aus INI löschen:
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($INI, "Patienten", $del_key)
    ; Array mit Patienten-Daten neu einlesen
    $aPatienten = IniReadSection($INI, "Patienten")
    ; entfernt Eintrag aus Liste:
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    Case $Listview1
    $bSet = 0
    $nCurCol = $nCol
    GUICtrlSendMsg($Listview1, $LVM_SETSELECTEDCOLUMN, GUICtrlGetState($Listview1), 0)
    DllCall("user32.dll", "int", "InvalidateRect", "hwnd", GUICtrlGetHandle($Listview1), "int", 0, "int", 1)
    ;~ Case $mnu_edit
    ;~ was muss hier rein???
    EndSwitch
    Case $Form2
    Switch $nMsg[0] ; Event
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form2)
    $edit = GUICtrlRead($edit1)
    IniWrite($INI,"edit",$nr,$edit)
    Case $Button2 ; Neuer Eintrag
    $edit = GUICtrlRead($edit1)
    If $edit = "" Then
    $edit = "[" & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & "] :"
    Else
    $edit = $edit & @CRLF & @CRLF & @CRLF & "[" & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & "] :"
    EndIf
    GUICtrlSetData($edit1,$edit)
    Case $Button3
    $edit = GUICtrlRead($edit1)
    IniWrite($INI,"edit",$nr,$edit)
    $nr = GUICtrlRead($Input6)
    $patientendaten = GUICtrlRead($Input7) & "|" & GUICtrlRead($Input8) & "|" & GUICtrlRead($Input9) & "|" & GUICtrlRead($Input10) & "|" & GUICtrlRead($Input11)
    IniWrite($INI,"Patienten",$nr,$patientendaten)
    Case $Button4
    GUICtrlSetData($edit1,"")
    $nr = GUICtrlRead($Input6)
    IniWrite($INI,"edit",$nr,"")
    EndSwitch
    EndSwitch
    WEnd

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

    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aPatienten) -1
    GUICtrlCreateListViewItem($aPatienten[$i][0] & '|' & $aPatienten[$i][1], $Listview1)
    Next
    EndFunc

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

    Func _LeftDblClick($Info) ; Inhalt der angeklickten Zeile (alle Spalten) wird in GUI gezeigt
    GUICtrlSetData($Input6 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 0))
    GUICtrlSetData($Input7 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 1))
    GUICtrlSetData($Input8 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 2))
    GUICtrlSetData($Input9 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 3))
    GUICtrlSetData($Input10 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 4))
    GUICtrlSetData($Input11 , _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $Info[3], 5))
    $nr = GUICtrlRead($Input6)
    $edit= IniRead($INI,"edit",$nr,"")
    GUICtrlSetData($Edit1,$edit)
    GUISetState(@SW_SHOW, $Form2)
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $ListView1
    If Not IsHWnd($ListView1) Then $hWndListView = GUICtrlGetHandle($ListView1)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftDblClick($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Return $GUI_RUNDEFMSG ; allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    ; Unsere Sortier-Callback-Funktionen
    Func LVSort($hWnd, $nItem1, $nItem2, $nColumn)
    Local $nSort
       
    ; Schalte die Sortierrichtung um
    If $nColumn = $nCurCol Then
    If Not $bSet Then
    $nSortDir = $nSortDir * -1
    $bSet = 1
    EndIf
    Else
    $nSortDir = 1
    EndIf
    $nCol = $nColumn
       
    $val1 = GetSubItemText($Listview1, $nItem1, $nColumn)
    $val2 = GetSubItemText($Listview1, $nItem2, $nColumn)
       
    ; Wenn es die dritte Spalte ist (startet bei 0) dann vergleiche die Daten
    If $nColumn = 2 Then
    $val1 = StringRight($val1, 4) & StringMid($val1, 4, 2) & StringLeft($val1, 2)
    $val2 = StringRight($val2, 4) & StringMid($val2, 4, 2) & StringLeft($val2, 2)
    EndIf
       
    $nResult = 0 ; Keine Änderung in item1 und item2 Positionen
       
    If $val1 < $val2 Then
    $nResult = -1 ; Setze item2 vor item1
    ElseIf $val1 > $val2 Then
    $nResult = 1 ; Setze item2 hinter item1
    EndIf

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

    $nResult = $nResult * $nSortDir
       
    Return $nResult
    EndFunc

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

    ; Text eines Baumansicht-Elements in einer bestimmten Spalte abrufen
    Func GetSubItemText($nCtrlID, $nItemID, $nColumn)
    Local $stLvfi = DllStructCreate("uint;ptr;int;int[2];int")
    DllStructSetData($stLvfi, 1, $LVFI_PARAM)
    DllStructSetData($stLvfi, 3, $nItemID)

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

    Local $stBuffer = DllStructCreate("char[260]")
       
    $nIndex = GUICtrlSendMsg($nCtrlID, $LVM_FINDITEM, -1, DllStructGetPtr($stLvfi));
       
    Local $stLvi = DllStructCreate("uint;int;int;uint;uint;ptr;int;int;int;int")
       
    DllStructSetData($stLvi, 1, $LVIF_TEXT)
    DllStructSetData($stLvi, 2, $nIndex)
    DllStructSetData($stLvi, 3, $nColumn)
    DllStructSetData($stLvi, 6, DllStructGetPtr($stBuffer))
    DllStructSetData($stLvi, 7, 260)

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

    GUICtrlSendMsg($nCtrlID, $LVM_GETITEM, 0, DllStructGetPtr($stLvi));

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

    $sItemText = DllStructGetData($stBuffer, 1)

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

    $stLvi = 0
    $stLvfi = 0
    $stBuffer = 0
       
    Return $sItemText
    EndFunc

    [/autoit]