- Offizieller Beitrag
Hi,
Ich habe eine GUI (Bestellung), dort wird mit dem Button "Bestellvorschlag" aus der Artikeldatei ermittelt welche Artikel unterhalb des Meldebestands (oder kurz davor) liegen und diese werden mit vorgeschlagener Bestellmenge in die ListView eingetragen.
Die Liste hat den CheckboxStyle, damit der User die Artikel, die nicht bestellt werden sollen abwählen kann.
Nun mein Problem:
Ich möchte eigentlich, dass der User die vorgeschlagene Bestellmenge in der ListView korrigieren kann.
Aufgrund des Checkboxstyles scheint da aber kein Zugriff möglich. Hat irgendwer 'ne Idee wie ich da weiterkomme?
GUI:
Spoiler anzeigen
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]#Include <GuiListView.au3>
$BestellGUI = GUICreate("Bestellung", 870, 554, 110, 128, BitOr($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
$lvBestell = GUICtrlCreateListView("|Artikel-Nr|Bezeichnung|Lagerbestand|Mindestbestand|Bestellmenge", 4, 84, 861, 465, -1,$LVS_EX_CHECKBOXES)
_GUICtrlListViewSetColumnWidth(-1,0,30)
_GUICtrlListViewSetColumnWidth(-1,1,120)
_GUICtrlListViewSetColumnWidth(-1,2,100)
_GUICtrlListViewSetColumnWidth(-1,3,90)
_GUICtrlListViewSetColumnWidth(-1,4,90)
_GUICtrlListViewSetColumnWidth(-1,5,90)
$item1=GUICtrlCreateListViewItem("|0815|Muster1|3|5|4",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item2=GUICtrlCreateListViewItem("|x2341|Muster2|24|15",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item3=GUICtrlCreateListViewItem("|A-65 673|Muster3|11|10|5",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$bVorschlag = GUICtrlCreateButton("Bestell-Vorschlag", 36, 12, 130, 21, 0)
$bClearList = GUICtrlCreateButton("Liste löschen", 206, 48, 130, 21, 0)
$bPrintBestell = GUICtrlCreateButton("Bestellung drucken", 522, 12, 130, 21, 0)
$bMailBestell = GUICtrlCreateButton("Bestellung mailen", 522, 48, 130, 21, 0)
$bEscBestell = GUICtrlCreateButton("&Abbrechen", 782, 12, 69, 41, 0)
$bAddArtikel = GUICtrlCreateButton("Artikel hinzufügen", 36, 48, 130, 21, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bEscBestell
Exit
;;
EndSwitch
WEnd
EDIT:
So, das Problem konnte ich lösen :stolz_bin:
dabei ist nur ein kleines, anderes Problem entstanden. Ich ändere den Wert in einer InputBox. Da mein Fenster aber $WS_EX_TOPMOST - Style hat, verschwindet die InputBox dahinter. Bei einer MsgBox kann ich den TOP-Style erzwingen - geht das auch irgendwie für die Inputbox?
Wenn nicht, ist nicht sooo tragisch - bau ich mir halt eine eigene Inputbox mit $WS_EX_TOPMOST-Style.
(Den $WS_EX_TOPMOST-Style der GUI aufzuheben für die Dauer des Erscheinens der InputBox macht keinen Sinn, da mehrere andere Fenster [alle mit $WS_EX_TOPMOST-Style] aktiv sein können).
Hier meine Lösung:
Spoiler anzeigen
#include <GUIConstants.au3>
#Include <GuiListView.au3>
$BestellGUI = GUICreate("Bestellung", 870, 554, 110, 128, BitOr($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
$lvBestell = GUICtrlCreateListView("|Artikel-Nr|Bezeichnung|Lagerbestand|Mindestbestand|Bestellmenge", 4, 84, 861, 465, -1,$LVS_EX_CHECKBOXES)
GUICtrlSendMsg($lvBestell, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($lvBestell, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
_GUICtrlListViewSetColumnWidth(-1,0,30)
_GUICtrlListViewSetColumnWidth(-1,1,120)
_GUICtrlListViewSetColumnWidth(-1,2,100)
_GUICtrlListViewSetColumnWidth(-1,3,90)
_GUICtrlListViewSetColumnWidth(-1,4,90)
_GUICtrlListViewSetColumnWidth(-1,5,90)
$item1=GUICtrlCreateListViewItem("|0815|Muster1|3|5|4",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item2=GUICtrlCreateListViewItem("|x2341|Muster2|24|15",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item3=GUICtrlCreateListViewItem("|A-65 673|Muster3|11|10|5",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$bVorschlag = GUICtrlCreateButton("Bestell-Vorschlag", 36, 12, 130, 21, 0)
$bClearList = GUICtrlCreateButton("Liste löschen", 206, 48, 130, 21, 0)
$bChangeMenge = GUICtrlCreateButton("Bestellmenge ändern", 376, 48, 130, 21, 0)
$bPrintBestell = GUICtrlCreateButton("Bestellung drucken", 546, 12, 130, 21, 0)
$bMailBestell = GUICtrlCreateButton("Bestellung mailen", 546, 48, 130, 21, 0)
$bEscBestell = GUICtrlCreateButton("&Abbrechen", 782, 12, 69, 41, 0)
$bAddArtikel = GUICtrlCreateButton("Artikel hinzufügen", 36, 48, 130, 21, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bEscBestell
Exit
Case $bChangeMenge
$CurrIndex = _GUICtrlListViewGetCurSel($lvBestell)
$CurrMenge = _GUICtrlListViewGetItemText($lvBestell, $CurrIndex, 5)
$MengeNeu = InputBox("Bestellmenge","Bestellvorschlag:",$CurrMenge)
_GUICtrlListViewSetItemText($lvBestell, $CurrIndex, 5, $MengeNeu)
;;
EndSwitch
WEnd
EDIT 2:
Habs nun mit eigener InputBox gelöst. Aber Danke für euren moralischen Beistand
So sieht das Endprodukt aus:
Spoiler anzeigen
#include <GUIConstants.au3>
#Include <GuiListView.au3>
$BestellGUI = GUICreate("Bestellung", 870, 554, 110, 128, BitOr($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
$lvBestell = GUICtrlCreateListView("|Artikel-Nr|Bezeichnung|Lagerbestand|Mindestbestand|Bestellmenge", 4, 84, 861, 465, -1,$LVS_EX_CHECKBOXES)
GUICtrlSendMsg($lvBestell, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($lvBestell, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
_GUICtrlListViewSetColumnWidth(-1,0,30)
_GUICtrlListViewSetColumnWidth(-1,1,120)
_GUICtrlListViewSetColumnWidth(-1,2,100)
_GUICtrlListViewSetColumnWidth(-1,3,90)
_GUICtrlListViewSetColumnWidth(-1,4,90)
_GUICtrlListViewSetColumnWidth(-1,5,90)
$item1=GUICtrlCreateListViewItem("|0815|Muster1|3|5|4",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item2=GUICtrlCreateListViewItem("|x2341|Muster2|24|15",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$item3=GUICtrlCreateListViewItem("|A-65 673|Muster3|11|10|5",$lvBestell)
GUICtrlSetState(-1, $GUI_CHECKED)
$bVorschlag = GUICtrlCreateButton("Bestell-Vorschlag", 36, 12, 130, 21, 0)
$bClearList = GUICtrlCreateButton("Liste löschen", 206, 48, 130, 21, 0)
$bChangeMenge = GUICtrlCreateButton("Bestellmenge ändern", 376, 48, 130, 21, 0)
$bPrintBestell = GUICtrlCreateButton("Bestellung drucken", 546, 12, 130, 21, 0)
$bMailBestell = GUICtrlCreateButton("Bestellung mailen", 546, 48, 130, 21, 0)
$bEscBestell = GUICtrlCreateButton("&Abbrechen", 782, 12, 69, 41, 0)
$bAddArtikel = GUICtrlCreateButton("Artikel hinzufügen", 36, 48, 130, 21, 0)
; GUI InBox
$InBoxMenge = GUICreate("Änderung Bestell-Menge", 253, 102, -1, -1, BitOR($WS_CAPTION, _
$WS_BORDER,$WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
$InMenge = GUICtrlCreateInput("", 116, 22, 121, 21)
$updown = GUICtrlCreateUpdown($InMenge)
$bOKMenge = GUICtrlCreateButton("&OK", 81, 63, 75, 25, 0)
$bEscMenge = GUICtrlCreateButton("&Cancel", 162, 63, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("Bestellvorschlag", 18, 25, 81, 17)
GUISetState(@SW_SHOW, $BestellGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bEscBestell
Exit
Case $bChangeMenge
$CurrIndex = _GUICtrlListViewGetCurSel($lvBestell)
$CurrMenge = _GUICtrlListViewGetItemText($lvBestell, $CurrIndex, 5)
GUICtrlSetData($InMenge, $CurrMenge)
GUISetState(@SW_SHOW, $InBoxMenge)
Case $bOKMenge
GUISetState(@SW_HIDE, $InBoxMenge)
_GUICtrlListViewSetItemText($lvBestell, $CurrIndex, 5, GUICtrlRead($InMenge))
Case $bEscMenge
GUISetState(@SW_HIDE, $InBoxMenge)
;;
EndSwitch
WEnd