Hey,
ich habe hier ein Programm bei dem Daten von Hand (Orginal in Papierform, eintippen ist also immer erfoderlich) eingegeben werden.
Es handelt sich dabei ausschließlich um Zahlen, deshalb wird der Nummernblock verwendet.
Zwischen den Inputfeldern soll mit der Num-Enter Taste gewechselt werden (nicht verhandelbar, da angelehnt an eine andere Software).
Jedes Input soll nach der Eingabe geprüft werden, manche Inputs wieder geleert werden manche nicht.
Hier das Beispiel zum Ausprobieren:
Spoiler anzeigen
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <Guilistview.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 438, 192, 132)
$ListView1 = GUICtrlCreateListView("Input1|Input2|Input3|Input4", 16, 16, 601, 265)
Global $hLVHandle = GUICtrlGetHandle($ListView1)
_GUICtrlListView_SetColumn($hLVHandle, 0, "Input1", 130, 0)
_GUICtrlListView_SetColumn($hLVHandle, 1, "Input2", 130, 0)
_GUICtrlListView_SetColumn($hLVHandle, 2, "Input3", 130, 0)
_GUICtrlListView_SetColumn($hLVHandle, 3, "Input4", 130, 0)
$Input1 = GUICtrlCreateInput("", 16, 320, 129, 24)
$Input2 = GUICtrlCreateInput("", 168, 320, 129, 24)
$Input3 = GUICtrlCreateInput("", 328, 320, 137, 24)
$Input4 = GUICtrlCreateInput("", 496, 320, 121, 24)
$button = GUICtrlCreateButton("ADD", 250, 350, 100, 50)
[/autoit] [autoit][/autoit] [autoit]Global $hCM = GUICtrlCreateContextMenu($ListView1) ; ein Kontextmenü für das Listview erstellen
Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeint
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button
_NewItem()
Case $hCMDel
_GUICtrlListView_DeleteItemsSelected($hLVHandle)
EndSwitch
WEnd
Func _TestInput1()
Local $read = GUICtrlRead($Input1)
If StringLen($read) > 1 Then
MsgBox(1, "", "Ungültige Eingabe")
GUICtrlSetState($Input1, $GUI_FOCUS)
Else
GUICtrlSetData($Input1, "")
GUICtrlSetState($Input2, $GUI_FOCUS)
EndIf
EndFunc ;==>_TestInput1
Func _TestInput2()
Local $read = GUICtrlRead($Input2)
If StringLen($read) > 2 Then
MsgBox(1, "", "Ungültige Eingabe")
GUICtrlSetState($Input2, $GUI_FOCUS)
Else
GUICtrlSetData($Input2, "")
GUICtrlSetState($Input3, $GUI_FOCUS)
EndIf
EndFunc ;==>_TestInput2
Func _TestInput3()
Local $read = GUICtrlRead($Input3)
If StringLen($read) > 3 Then
MsgBox(1, "", "Ungültige Eingabe")
GUICtrlSetState($Input3, $GUI_FOCUS)
Else
GUICtrlSetState($Input4, $GUI_FOCUS)
EndIf
EndFunc ;==>_TestInput3
Func _TestInput4()
_NewItem()
GUICtrlSetState($Input1, $GUI_FOCUS)
EndFunc ;==>_TestInput4
Func _NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
GUICtrlCreateListViewItem(GUICtrlRead($Input1) & "|" & GUICtrlRead($Input2) & "|" & GUICtrlRead($Input3) & "|" & GUICtrlRead($Input4), $ListView1)
EndFunc ;==>_NewItem
Möglichkeiten gib es viele, ich möchte hier jetzt mal keine eigenen Versuche posten um den kreativen Denkprozess nicht zu verhindern. Bis jetzt hatte jede Variante so ihre Nachteile und daher möchte ich noch weitere Meinungen zu diesem Problem einholen.
Also, wie würdet ihr es machen?
Danke schonmal für die Anregungen.
Gruß Nuts