OK, ich will mal nicht so sein.
Aber ich habs euch schwer gemacht - ihr müsst mich suchen! :hammer:
Ich versichere euch: auf dem Bild bin ich auch. ![]()
[/IMG]
Beiträge von BugFix
-
-
Zum Status-Ändern deines Threads:
- gaaanz unten auf der Seite deines Threads findest du eine kleine ComboBox: "weitere Optionen"
- wähle hier: "Thema bearbeiten"
- jetzt kannst du den Status ändernFalls du einen letzen Kommentar hinzufügen willst, erstelle erst deine Antwort UND speichere sie. Gehe dann nochmal in den Thread und setze den Status, wie vorab beschrieben.
Wenn du deinen Text schreibst und gleichzeitig den Status setzt, wird deine Antwort nicht erstellt - nur die Statusänderung erfolgt.
(Sollte das inzwischen anders sein, ziehe ich diese Aussage zurück
, zumindest war es bei mir so und darum gehe ich diesen Weg)Zum Thema "Active Window Info":
Es kann durchaus sein, dass nicht alle Fenster ihre Infos preisgeben. Vermute, das ist hier der Fall. -
Viel kann ich dir nicht helfen.
Über kommunikationsmöglichkeiten Autoit - Com-Port findest du hier viel Interessantes:
http://www.autoitscript.com/forum/index.php?showtopic=19769&st=15Hier die übliche Beschaltung für RS232:
Pin Funktion
1 DCD (Data Carrier Detected - Gerät signalisiert Datenerkennung)
2 RxD (Receive Data - Ltg. f. eingehende Daten)
3 TxD (Transmit Data - Ltg. f. ausgehende Daten)
4 DTR (Data Terminal Ready)
5 GND (Ground - Signalmasse)
6 DSR (Dataset Ready - logische 1 von externem Gerät f. Einsatzbereitschaft)
7 RTS (Ready To Send)
8 CTS (Clear to Send - wenn auf logisch 1, kann Gerät Daten entgegennehmen)
9 RI (Ring Indicator - signalisiert Anruf) -
Willst du, dass zu den bestehenden Werten neue DAZUgeschrieben werden?
[autoit]
MitIniWrite ( "filename", "section", "key", "value" )
[/autoit]schreibst du in die gewählte Datei: "filename", in der Sektion: "section" für den Schlüssel: "key" den Wert: "value".
Existiert bereits ein Wert, wird dieser überschrieben. Ich vermute, du wolltest ein Ergebnis etwa so:
[autoit]
Es ist fraglich, inwieweit es Sinn macht, eine INI-Datei zur Datenbank zu verbiegen. Aber es geht natürlich:$name_alt = IniRead('daten.ini',$anzahl,'$name','') ; vorhandene(r) Wert(e)
[/autoit]
;;
;;
$name = GUICtrlRead($input[$anzahl][1])
;;
;;
IniWrite('daten.ini',$anzahl,'$name',$name_alt & "," & $name)
;; -
So läßt sich kontinuierlich prüfen, ob der Wert sich geändert hat.
[autoit]Dim $x, $last_x
[/autoit][autoit][/autoit][autoit]
$x = ControlGetText ( "title", "text", controlID )
$last_x = $xWhile 1
[/autoit]
Sleep(100)
$x = ControlGetText ( "title", "text", controlID )
If $x <> $last_x Then ; Text hat sich geändert
; was du tun willst
$last_x = $x
EndIf
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case
;;;;
EndSelect
WEndDen ausgelesenen Text findest du ja in der Variablen $x und kannst ihn nach Lust und Laune bearbeiten.
Ich verstehe aber nicht, warum du die Info aktualisieren möchtest. Wenn du nicht mit:
[autoit]ControlSetText ( "title", "text", controlID, "new text")
[/autoit]aktiv eingreifst bleibt doch der Wert unverändert ?
Vielleicht stellst du mal ein bischen von deinem Code ein - dann ist besser ersichtlich, was du eigentlich tun möchtest.
Edit:
Da war wohl doch eine von den Geburtstagsbrausen gestern schlecht
, jedenfalls hat sich in den Mustercode ein Fehler eingeschlichen. Habs hiermit korrigiert. -
Mit diesem Code separierst du ID und Device in ein Array. Beide Elemente sind mit dem Doppelpunkt getrennt.
[autoit]
Zur weiteren Verarbeitung kannst du dann mitStringSplit($arID_Dev, ":")
[/autoit]ID und Device getrennt auswerten.
Viel Spaß!
[autoit]#include <array.au3>
[/autoit][autoit][/autoit][autoit]
#include <file.au3>Dim $arID_Dev[1]
[/autoit][autoit][/autoit][autoit]
$arID_Dev[0] = 0
Dim $fileArray
$Pfad = @ScriptDir & "\hwids.txt"If Not _FileReadToArray($Pfad, $fileArray) Then
[/autoit][autoit][/autoit][autoit]
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Exit
EndIf
For $i = 1 To $fileArray[0]
$posBackSlash = StringInStr($fileArray[$i], "\", 1, 2) ; 2.te Übereinstimmung
If $posBackSlash <> 0 Then
$ID_Dev = StringRight($fileArray[$i], StringLen($fileArray[$i])-$posBackSlash)
_ArrayAdd($arID_Dev, $ID_Dev)
$arID_Dev[0] += 1 ; Anzahl der Elemente in $arID_Dev[0] führen
EndIf
Next_ArrayDisplay($arID_Dev, "ID's + Geräte")
[/autoit][autoit][/autoit][autoit]; mit StringSplit() kannst du die einzelnen Einträge in ID und Device trennen
[/autoit] -
...diese jene ? [Blockierte Grafik: http://img122.imageshack.us/img122/7605/danielskirschece5.png]
*mir-durchaus-vorstell-kann* *very-big-grins*
-
Also Daniel !!!!
Um an meinem Bauch rumzupinseln, bist du wahrscheinlich vieeeeel zu wenig weiblich.
-
Fühle mich gebauchpinselt... :party4: :party3: :stolz_bin:
-
Vielen Dank, liebe Leute.

Aber jonk - was zum Teufel ist eine "pottingmaschine" ?
Möchte schon wissen, was ich bin (sein soll).
-
Du mußt den Status des Radio-Controls auslesen
[autoit];
[/autoit]
Case $msg = $button_ok AND (GUICtrlRead($radio_1) = $GUI_Checked)
run ('programm1')
; -
Zitat
peethebee
- dass könnte immer durch "welches" ersetzt werden, ohne dass sich der Sinn ändert; bei das ist das nicht möglich
Hier hast du es versehentlich genau verkehrt herum dargestellt.
"das" wird immer dann geschrieben, wenn es mit "dieses", "jenes" oder "welches" ersetzt werden kann
"dass", (früher "daß") für alle anderen Fälle.Mein Deutschlehrer hatte dafür einen schönen Mustersatz parat:
Dass das das dass mit "s" geschrieben wird, anders geschrieben wird als das dass, das mit "ss" geschrieben wird, das ist doch jedem klar.
Edit peethebee: Ist geädert, man sollte doch kurz nachdneken
Danke. -
Zitat
BasicOs:
am schnellesten waere einfach an stelle vom ein file direkt zu benutzen, lieber per Array?? - Schau in den Code, die Files werden in Array's geladen. Zur Laufzeit werden nur die Array's bedient. Erst mit Beenden werden die Daten zurück ins File geschrieben.
Dies ist sowieso nur eine "Notversion" - deshalb Small Edition, die nur funktionieren muss (und das tut sie
).
Das Endprodukt ist ein komplettes Warenwirtschaftssystem. Datenbank ist SQLite. Dieses ist beleggesteuert und hat: Beleg~, Kunden~, Artikel~, Seriennummer~ und Parameterverwaltung (SerNum-Geräte).ZitatBasicOs:
Ich wuerde personlich dieses Programm nicht per Gui machen sonder lieber Per Html-autoitIch weiß ja, dass du eine Vorliebe für deine Autoit-html Entwicklung hast.

Ob das nun "moderner" aussieht, darüber ließe sich streiten. Aber über Geschmack soll man bekanntlich nicht streiten.
-
Das Beispiel hab ich mal irgendwo entdeckt - Dank an den unbekannten Erzeuger.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("listview items",220,250, 100,200,-1,$WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor (0x00E0FFFF)$listview = GUICtrlCreateListView ("col1 |col2|col3 ", 10, 10, 200, 150)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor(-1, 0x0000A0)
GUICtrlSetBkColor(-1, 0xBBCCEE)
$button = GUICtrlCreateButton ("Value?", 75, 170, 70, 20)
$item1=GUICtrlCreateListViewItem("item1|col12|col13", $listview)
;GUICtrlSetColor(-1, 0x007000)
GUICtrlSetBkColor(-1, 0xEE9999)
$item2=GUICtrlCreateListViewItem("item3|col22|col23", $listview)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetColor(-1, 0xC00000)
GUICtrlSetBkColor(-1, 0xCCEECC)
$item3=GUICtrlCreateListViewItem("item3|col32|col33", $listview)
GUICtrlSetColor(-1, 0x007000)
GUICtrlSetBkColor(-1, 0xEE9999)
$item4=GUICtrlCreateListViewItem("item4|col42|col43", $listview)
GUICtrlSetColor(-1, 0xC00000)
GUICtrlSetBkColor(-1, 0xCCEECC)GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit]
$msg = GUIGetMsg ()
Select
Case $msg = $button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $msg = $listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSelect
Until $msg = $GUI_EVENT_CLOSE -
Aber trotzdem falsch. Erst definieren, dann ausführen.
[autoit]
So ists sauber:
Edit: hab den gewünschten Style noch eingesetzt#include <GUIConstants.au3>
[/autoit]
$gui = GUICreate("Test",300,350,-1,-1, BitOR($WS_SIZEBOX, $WS_SYSMENU))
GuiCtrlCreateLabel("Progress:", 65, 230)
$progress = GuiCtrlCreateProgress(65, 250, 150, 20)
GUICtrlCreatePic("setup.bmp",65,50, 169,150)
GUISetState ()
For $i = 0 To 100 Step 10
GuiCtrlSetData($progress, $i)
Sleep(500)
Next
GUIDelete($gui)
;~ Send("{ALT down}{F4}") ; wozu?
Run('C:\test.exe'); -
Hi,
da ich mit meinem Warenwirtschaftsprogramm für unsere Außendienstler noch nicht fertig bin, mein Chef aber nach einer einheitlichen und regelmäßigen Inventur verlangt, habe ich mal schnell eine reine Artikelbestandsverwaltung zusammengezimmert.
Typische Datenbankfunktionalität fehlt natürlich.
Aber immerhin kann man hiermit:
- Artikel erfassen, getrennt nach Massen- und Seriennummer-Artikeln
- Massenartikel Bestand führen (absoluter Lagerwert)
- Seriennummer-Artikeln führen, bei Lagerausgang (z.B. kurzfristig wg. Leihgabe) wird per Checkbox (* s. Kommentar) Status "Out" gesetzt und für Inventurwert nicht berücksichtigt
- Lagerbestand ausdrucken oder
- Lagerbestand (Inventur) per Mail versenden (Konfiguration in INI-Datei)
Für kleine Anzahl von unterschiedlichen Artikeln ist das ganz praktikabel.* - Kommentar zu Checkbox
Mir ist aufgefallen, dass die Checkboxen beim Sortieren ignoriert werden.
Darum mußte ich hier etwas umständlich erst für alle Einträge den Checkbox-Status prüfen. Falls markiert wird eine 1 in die Spalte geschrieben. Dann wird sortiert und anschließend der Checkbox-Status neu gesetzt und die 1 bzw. 0 aus der Spalte gelöscht.
Das dauert leider mit zunehmender Anzahl der Einträge.
Kennt hier vielleicht jemand einen Weg, die Checkboxen mit in die Sortierung einzubeziehen?Und hier das Ergebnis meiner sonntäglichen "Erholung"

(zum Test braucht ihr die angehängten Dateien)EDIT
Hab nun doch noch eine Suche eingebaut, war sonst zu spartanisch. Den Dateianhang habe ich aber NICHT geändert. Also wer mag, das Script per Copy & Paste holen.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>
#include <GuiTab.au3>
#include <file.au3>
#include <GuiCombo.au3>
#Include <GuiStatusBar.au3>
Global $lvArtikel, $lvSerien
Global Const $WM_NOTIFY = 0x004E
Global Const $NM_FIRST = 0
Global Const $NM_LAST = (-99)
Global Const $NM_OUTOFMEMORY = ($NM_FIRST - 1)
Global Const $NM_CLICK = ($NM_FIRST - 2)
Global Const $NM_DBLCLK = ($NM_FIRST - 3)
Global $hWndGUI
Global $MsgID
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Dim $new = 0, $changed = 0, $inputA = 0, $inputS = 0, $CurrIndex = 0, $ArtUnit = "", $MengeNr = 0, $Comment, $iArtBez, $iArtNr, $mNotiz
Dim $Fehler = 0, $massArt, $serArt, $cbLoadedA = 0,$cbLoadedS = 0, $INIchangedA = 0, $INIchangedS = 0
Dim $text1_1 = " Artikelbezeichnung:", $text2_1 = " SN-Gerät:", $text1_2 = " Anzahl:", $text2_2 = " Seriennummer:"
Local $a_PartsRightEdge[4] = [186, 447, 648, -1]
Local $a_PartsText[4] = [$text1_1, "", $text1_2, ""]
Dim $Required_Files[3]
$Required_Files[0]= "VerwSmall.INI"
$Required_Files[1] = "ser_art.vwg"
$Required_Files[2] = "mass_art.vwg"
For $i = 0 To 2
If Not FileExists($Required_Files[$i]) Then
MsgBox(262160, 'Fehler',"Datei: " & $Required_Files[$i] & " nicht im Anwendungspfad!"& @LF & @LF & _
"Ohne diese Datei kann das Programm nicht ausgeführt werden!")
$Fehler = 1
EndIf
Next
If $Fehler = 1 Then Exit
$INImail = IniReadSection("VerwSmall.INI", "mail")
$INIgeraete = IniReadSection("VerwSmall.INI", "geraete")
$INIartikel = IniReadSection("VerwSmall.INI", "artikel")
Dim $smtpServer = $INImail[1][1], $AbsName = $INImail[2][1], $AbsAdress = $INImail[3][1], $ToAdress = $INImail[4][1]
Dim $Betreff = $INImail[5][1], $Body = "", $UserName = $INImail[6][1], $UserPW = $INImail[7][1], $Port = $INImail[8][1]$ArtikelGUI = GUICreate("Artikel", 867, 551, -1, -1, BitOr($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
$StatusBar = _GUICtrlStatusBarCreate ($ArtikelGUI, $a_PartsRightEdge, $a_PartsText)
_GUICtrlStatusBarSetBKColor ($StatusBar, 0xEEE8AA)
$TabArtikel = GUICtrlCreateTab(0, 120, 866, 429)
$TabMassArt = GUICtrlCreateTabItem("Mengen - Artikel")
$lvArtikel = GUICtrlCreateListView("Artikel-Bez.|Menge", 8, 144, 849, 385)
GUICtrlSetTip(-1, "Sortieren mit Klick auf den Spaltenkopf")
GUICtrlSendMsg($lvArtikel, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
_GUICtrlListViewSetColumnWidth(-1,0,250)
_GUICtrlListViewSetColumnWidth(-1,1,80)
_GUICtrlListViewJustifyColumn (-1, 1, 1)
GUICtrlCreateTabItem("")
$TabSNArt = GUICtrlCreateTabItem("Serien-Nr - Artikel")
$lvSerien = GUICtrlCreateListView("Out|Gerätename|Herst.-SN|Info", 7, 144, 849, 385, -1,$LVS_EX_CHECKBOXES)
GUICtrlSetTip(-1, "Sortieren mit Klick auf den Spaltenkopf")
GUICtrlSendMsg($lvSerien, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($lvSerien, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
_GUICtrlListViewSetColumnWidth(-1,0,40)
_GUICtrlListViewSetColumnWidth(-1,1,150)
_GUICtrlListViewSetColumnWidth(-1,2,150)
_GUICtrlListViewSetColumnWidth(-1,3,500)
_GUICtrlListViewJustifyColumn (-1, 0, 2)
_GUICtrlListViewJustifyColumn (-1, 2, 1)
GUICtrlCreateTabItem("")
$Group1 = GUICtrlCreateGroup("", 0, 0, 866, 118)
$lArtBez = GUICtrlCreateLabel("Artikelbezeichnung", 8, 20, 90, 21)
$lArtNrAnz = GUICtrlCreateLabel("Anzahl", 8, 56, 90)
$iArtBez = GUICtrlCreateCombo("", 116, 17, 230, 21, BitOR($CBS_SORT, $CBS_DROPDOWN, $WS_TABSTOP))
$iArtNr = GUICtrlCreateInput("", 116, 53, 230, 21, BitOR($ES_RIGHT, $ES_AUTOHSCROLL, $ES_READONLY, $WS_TABSTOP), $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("Mengenartikel:", 8, 89, 80)
$bPrintA = GUICtrlCreateButton("Drucken", 90, 86, 60, 21)
GUICtrlSetTip(-1, "Ausdruck Lager-Bestand Mengenartikel")
GUICtrlCreateLabel("SN-Artikel:", 185, 89, 60)
$bPrintS = GUICtrlCreateButton("Drucken", 245, 86, 60, 21)
GUICtrlSetTip(-1, "Ausdruck Lager-Bestand SN-Artikel")
$bMail = GUICtrlCreateButton("Mailen", 375, 86, 60, 21)
GUICtrlSetTip(-1, "Mailversand Lager-Bestand" & @LF & "Mengenartikel und SN-Artikel"& @LF & @LF _
& "Zuerst SMTP-Server einrichten" & @LF & "in 'VerwSmall.INI'")
$bFirstA = GUICtrlCreateButton("", 728, 16, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\first30x29.bmp")
GUICtrlSetTip(-1,"Erster"& @LF &"Eintrag")
$bLastA = GUICtrlCreateButton("", 760, 16, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\last30x29.bmp")
GUICtrlSetTip(-1,"Letzter"& @LF &"Eintrag")
$bPrevA = GUICtrlCreateButton("", 728, 48, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\prev30x29.bmp")
GUICtrlSetTip(-1,"Voriger"& @LF &"Eintrag")
$bNextA = GUICtrlCreateButton("", 760, 48, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\next30x29.bmp")
GUICtrlSetTip(-1,"Nächster"& @LF &"Eintrag")
$bNewA = GUICtrlCreateButton("", 728, 80, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\new30x29.bmp")
GUICtrlSetTip(-1,"Neuer"& @LF &"Eintrag oder"& @LF & "Eintrag ändern")
$bDelA = GUICtrlCreateButton("", 760, 80, 30, 29,$BS_BITMAP)
GUICtrlSetImage(-1,@ScriptDir&"\button\del30x29.bmp")
GUICtrlSetTip(-1,"Eintrag"& @LF &"Löschen")
$bSaveA = GUICtrlCreateButton("&Speichern", 792, 16, 65, 45)
GUICtrlSetState(-1, $GUI_DISABLE)
$bEscapeA = GUICtrlCreateButton("&Abbrechen", 792, 64, 65, 45)
$bSuchAufruf = GUICtrlCreateButton("", 613, 86, 100, 21)
GUICtrlSetTip(-1, "Suche nach Artikel bzw. Seriennummer."& @LF & "Eingabe wird automatisch in Kleinbuchstaben gewandelt -" _
& @LF & "Schreiben von Großbuchstaben also nicht nötig.")
GUICtrlCreateLabel("Notiz", 440, 20)
$mNotiz = GUICtrlCreateEdit("", 478, 17, 235, 60, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY), $WS_EX_CLIENTEDGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)If Not _FileReadToArray("mass_art.vwg",$massArt) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Exit
EndIf
If Not _FileReadToArray("ser_art.vwg",$serArt) Then
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Exit
EndIf
For $i = 1 To $massArt[0]-1
If StringLen($massArt[0]) > 1 Then _
GUICtrlCreateListViewItem($massArt[$i], $lvArtikel)
Next
For $i = 1 To $serArt[0]
$tmp = StringLeft($serArt[$i], 1)
$item = StringTrimLeft($serArt[$i],1)
If StringLeft($item, 1) = "|" Then _
GUICtrlCreateListViewItem($item, $lvSerien)
If $tmp = 1 Then GUICtrlSetState(-1, $GUI_CHECKED)
Next;GUI Suche
[/autoit] [autoit][/autoit] [autoit]
$SucheGUI = GUICreate("Suche", 250, 92, -1, -1, BitOr($WS_CAPTION, $WS_POPUP), $WS_EX_TOPMOST)
$lSuche = GUICtrlCreateLabel("Suchbegriff:", 10, 18)
$iSuche = GUICtrlCreateInput("", 80, 15, 160, 21, $ES_LOWERCASE)
$bSuche = GUICtrlCreateButton("Suche", 10, 56, 80, 21, $BS_DEFPUSHBUTTON )
GUICtrlSetTip(-1, "Button kann auch mit <ENTER> betätigt werden.")
$bEscSuche = GUICtrlCreateButton("Abbrechen", 160, 56, 80, 21)GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($bSuchAufruf, $GUI_FOCUS)
GUISetState(@SW_SHOW, $ArtikelGUI)Dim $A_DESCENDING[_GUICtrlListViewGetSubItemsCount ($lvArtikel) ]
[/autoit] [autoit][/autoit] [autoit]
Dim $S_DESCENDING[_GUICtrlListViewGetSubItemsCount ($lvSerien) ]
$AnzItemA = _GUICtrlListViewGetItemCount($lvArtikel)
$AnzItemS = _GUICtrlListViewGetItemCount($lvSerien)
_GUICtrlListViewSetItemSelState($lvArtikel, 0, 1, 1)
_GUICtrlListViewSetItemSelState($lvSerien, 0, 1, 1)
_AktuellDS_Serien()
_AktuellDS_Artikel()While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
$statTab = _GUICtrlTabGetCurSel($TabArtikel)
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $statTab = 0 ; Mengen-Artikel
If $cbLoadedA = 0 Then ; Aktionen, die einmalig bei Tab-Aktivierung ausgeführt werden
_AktuellDS_Artikel()
_SetComboArtikel()
$cbLoadedA = 1
$cbLoadedS = 0
GUICtrlSetData($lArtBez, "Artikelbezeichnung")
GUICtrlSetData($lArtNrAnz, "Anzahl")
GUICtrlSetData($bSuchAufruf, "Suche Artikel")
EndIf
Select
Case $msg = $bPrintA
_PrintA()
Case $msg = $bPrintS
_PrintS()
Case $msg = $bMail
_PrintA(1)
_PrintS(1)
$Body = ""
Case $msg = $bSuchAufruf
GUISetState(@SW_SHOW, $SucheGUI)
ControlFocus($SucheGUI, "", $iSuche)
Case $msg = $lvArtikel
_GUICtrlListViewSort($lvArtikel, $A_DESCENDING, GUICtrlGetState($lvArtikel))
Case $msg = $bFirstA
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
_GUICtrlListViewSetItemSelState($lvArtikel, 0, 1, 1)
If $CurrIndex > 12 Then _ScrollA(-1 * $CurrIndex)
_AktuellDS_Artikel()
Case $msg = $bLastA
_GUICtrlListViewSetItemSelState($lvArtikel, $AnzItemA-1, 1, 1)
If $AnzItemA > 12 Then _ScrollA($AnzItemA)
_AktuellDS_Artikel()
Case $msg = $bPrevA
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
If $CurrIndex > 0 Then _GUICtrlListViewSetItemSelState($lvArtikel, $CurrIndex-1, 1, 1)
_AktuellDS_Artikel()
Case $msg = $bNextA
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
If $CurrIndex < $AnzItemA -1 Then _GUICtrlListViewSetItemSelState($lvArtikel, $CurrIndex+1, 1, 1)
_AktuellDS_Artikel()
Case $msg = $bNewA
$tmp = MsgBox(262179, "Datensatz anlegen / ändern", 'JA - für "Neuen Datensatz"' _
& @LF & @LF & 'NEIN - für "Ändern"')
Switch $tmp
Case 6 ; JA - neuer DS
$new = 1
$inputA = 1
_ActivInput()
GUICtrlSetState($lvSerien, $GUI_DISABLE)
GUICtrlSetState($iArtBez, $GUI_FOCUS)
$changed = 1
Case 7 ; NEIN - DS ändern
$new = 0
$inputA = 1
_ActivInput()
GUICtrlSetState($lvSerien, $GUI_DISABLE)
ControlSetText("Artikel", "", $iArtBez, $ArtUnit)
GUICtrlSetData($iArtNr, $MengeNr)
GUICtrlSetState($iArtNr, $GUI_FOCUS)
$changed = 1
EndSwitch
Case $msg = $bDelA
If MsgBox(262164, "Achtung - Löschvorgang !", "Soll der markierte Datensatz" _
& @CR & "wirklich gelöscht werden?") = 6 Then
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
_GUICtrlListViewDeleteItem($lvArtikel, $CurrIndex)
_GUICtrlListViewSetItemSelState($lvArtikel, $CurrIndex-1, 1, 1)
$AnzItemA -= 1
$changed = 1
EndIf
_AktuellDS_Artikel()
Case $msg = $bSaveA
$MengeNr = GUICtrlRead($iArtNr)
$ArtUnit = GUICtrlRead($iArtBez)
If $MengeNr = "" Or $ArtUnit = "" Then
MsgBox(262160, 'Fehler', "Angaben nicht komplett!")
Else
If _GUICtrlComboFindString($iArtBez, $ArtUnit, 1) = $CB_ERR Then ; neuer Artikel
$INIchangedA = 1
$INIartikel[0][0] += 1
$anz = $INIartikel[0][0]
ReDim $INIartikel[$anz+1][2]
$INIartikel[$anz][0] = "item" & $anz
$INIartikel[$anz][1] = $ArtUnit
EndIf
If $new = 1 Then
GUICtrlCreateListViewItem($ArtUnit&"|"&$MengeNr, $lvArtikel)
$AnzItemA += 1
$new = 0
_GUICtrlListViewSetItemSelState($lvArtikel, $AnzItemA-1, 1, 1)
Else
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
_GUICtrlListViewSetItemText($lvArtikel, $CurrIndex, 0, $ArtUnit)
_GUICtrlListViewSetItemText($lvArtikel, $CurrIndex, 1, $MengeNr)
_GUICtrlListViewSetItemSelState($lvArtikel, $CurrIndex, 1, 1)
EndIf
_Back()
EndIf
_AktuellDS_Artikel()
Case $msg = $bEscapeA
If $inputA = 1 Then
GUICtrlSetState($lvSerien, $GUI_ENABLE)
$inputA = 0
_DeActivInput()
ControlSetText("Artikel", "", $iArtBez, "")
GUICtrlSetData($iArtNr, "")
Else
ExitLoop
EndIf
Case $msg = $bEscSuche
GUISetState(@SW_HIDE, $SucheGUI)
Case $msg = $bSuche
_GUICtrlListViewSetItemSelState($lvSerien, 0, 1, 1) ; geh erstmal zum 1.DS
If $CurrIndex > 12 Then _ScrollA(-1 * $CurrIndex)
$CurrIndex = 0
$index = _SucheA()
If $index < 0 Then
MsgBox(262144, "Achtung", "Keine Übereinstimmung mit Suchbegriff.")
Else
_GUICtrlListViewSetItemSelState($lvArtikel, $index, 1, 1)
If $index > 0 Then
If $index > 12 Then _ScrollA($index)
EndIf
_AktuellDS_Artikel()
GUISetState(@SW_HIDE, $SucheGUI)
GUICtrlSetData($iSuche, "")
EndIf
EndSelect
Case $statTab = 1 ; Serien-Artikel
If $cbLoadedS = 0 Then ; Aktionen, die einmalig bei Tab-Aktivierung ausgeführt werden
_AktuellDS_Serien()
_SetComboGeraete()
$cbLoadedS = 1
$cbLoadedA = 0
GUICtrlSetData($lArtBez, "Gerätename")
GUICtrlSetData($lArtNrAnz, "Hersteller SN")
GUICtrlSetData($bSuchAufruf, "Suche Serien-Nr")
EndIf
Select
Case $msg = $bPrintA
_PrintA()
Case $msg = $bPrintS
_PrintS()
Case $msg = $bMail
_PrintA(1)
_PrintS(1)
$Body = ""
Case $msg = $bSuchAufruf
GUISetState(@SW_SHOW, $SucheGUI)
ControlFocus($SucheGUI, "", $iSuche)
Case $msg = $lvSerien
For $i = 0 To $AnzItemS -1
If _GUICtrlListViewGetCheckedState($lvSerien, $i) Then
_GUICtrlListViewSetItemText($lvSerien, $i, 0, 1)
_GUICtrlListViewSetCheckState($lvSerien, $i, 0)
EndIf
Next
_GUICtrlListViewSort($lvSerien, $S_DESCENDING, GUICtrlGetState($lvSerien))
For $i = 0 To $AnzItemS -1
If _GUICtrlListViewGetItemText($lvSerien, $i, 0) = 1 Then
_GUICtrlListViewSetCheckState($lvSerien, $i, 1)
_GUICtrlListViewSetItemText($lvSerien, $i, 0, "")
EndIf
Next
Case $msg = $bFirstA
_GUICtrlListViewSetItemSelState($lvSerien, 0, 1, 1)
If $CurrIndex > 12 Then _ScrollS(-1 * $CurrIndex)
_AktuellDS_Serien()
Case $msg = $bLastA
_GUICtrlListViewSetItemSelState($lvSerien, $AnzItemS-1, 1, 1)
If $AnzItemS > 12 Then _ScrollS($AnzItemS)
_AktuellDS_Serien()
Case $msg = $bPrevA
$CurrIndex = _GUICtrlListViewGetCurSel($lvSerien)
If $CurrIndex > 0 Then _GUICtrlListViewSetItemSelState($lvSerien, $CurrIndex-1, 1, 1)
_AktuellDS_Serien()
Case $msg = $bNextA
$CurrIndex = _GUICtrlListViewGetCurSel($lvSerien)
If $CurrIndex < $AnzItemS -1 Then _GUICtrlListViewSetItemSelState($lvSerien, $CurrIndex+1, 1, 1)
_AktuellDS_Serien()
Case $msg = $bNewA
$tmp = MsgBox(262179, "Datensatz anlegen / ändern", 'JA - für "Neuen Datensatz"' _
& @LF & @LF & 'NEIN - für "Ändern"')
Switch $tmp
Case 6 ; JA - neuer DS
$new = 1
$inputS = 1
_ActivInput()
GUICtrlSetState($lvArtikel, $GUI_DISABLE)
GUICtrlSetData($mNotiz, "")
GUICtrlSetState($iArtBez, $GUI_FOCUS)
Case 7 ; NEIN - DS ändern
$new = 0
$inputS = 1
_ActivInput()
GUICtrlSetState($lvArtikel, $GUI_DISABLE)
ControlSetText("Artikel", "", $iArtBez, $ArtUnit)
GUICtrlSetData($iArtNr, $MengeNr)
GUICtrlSetState($iArtNr, $GUI_FOCUS)
EndSwitch
Case $msg = $bDelA
If MsgBox(262164, "Achtung - Löschvorgang !", "Soll der markierte Datensatz" _
& @CR & "wirklich gelöscht werden?") = 6 Then
$CurrIndex = _GUICtrlListViewGetCurSel($lvSerien)
_GUICtrlListViewDeleteItem($lvSerien, $CurrIndex)
_GUICtrlListViewSetItemSelState($lvSerien, $CurrIndex-1, 1, 1)
$AnzItemS -= 1
EndIf
_AktuellDS_Serien()
Case $msg = $bSaveA
$MengeNr = GUICtrlRead($iArtNr)
$ArtUnit = GUICtrlRead($iArtBez)
$Comment = GUICtrlRead($mNotiz)
If $MengeNr = "" Or $ArtUnit = "" Then
MsgBox(262160, 'Fehler', "Angaben nicht komplett!")
Else
If _GUICtrlComboFindString($iArtBez, $ArtUnit, 1) = $CB_ERR Then ; neuer Gerätetyp
$INIchangedS = 1
$INIgeraete[0][0] += 1
$anz = $INIgeraete[0][0]
ReDim $INIgeraete[$anz+1][2]
$INIgeraete[$anz][0] = "item" & $anz
$INIgeraete[$anz][1] = $ArtUnit
EndIf
If $new = 1 Then
GUICtrlCreateListViewItem("|"&$ArtUnit&"|"&$MengeNr&"|"&$Comment, $lvSerien)
$AnzItemS += 1
$new = 0
_GUICtrlListViewSetItemSelState($lvSerien, $AnzItemS-1, 1, 1)
Else
$CurrIndex = _GUICtrlListViewGetCurSel($lvSerien)
_GUICtrlListViewSetItemText($lvSerien, $CurrIndex, 1, $ArtUnit)
_GUICtrlListViewSetItemText($lvSerien, $CurrIndex, 2, $MengeNr)
_GUICtrlListViewSetItemText($lvSerien, $CurrIndex, 3, $Comment)
_GUICtrlListViewSetItemSelState($lvSerien, $CurrIndex, 1, 1)
EndIf
_Back()
EndIf
_AktuellDS_Serien()
Case $msg = $bEscapeA
If $inputS = 1 Then
GUICtrlSetState($lvArtikel, $GUI_ENABLE)
$inputS = 0
_DeActivInput()
ControlSetText("Artikel", "", $iArtBez, "")
GUICtrlSetData($iArtNr, "")
Else
ExitLoop
EndIf
Case $msg = $bEscSuche
GUISetState(@SW_HIDE, $SucheGUI)
Case $msg = $bSuche
_GUICtrlListViewSetItemSelState($lvSerien, 0, 1, 1) ; geh erstmal zum 1.DS
If $CurrIndex > 12 Then _ScrollS(-1 * $CurrIndex)
$CurrIndex = 0
$index = _SucheSN()
If $index < 0 Then
MsgBox(262144, "Achtung", "Keine Übereinstimmung mit Suchbegriff.")
Else
_GUICtrlListViewSetItemSelState($lvSerien, $index, 1, 1)
If $index > 12 Then _ScrollS($index)
_AktuellDS_Serien()
GUISetState(@SW_HIDE, $SucheGUI)
GUICtrlSetData($iSuche, "")
EndIf
EndSelect
EndSelect
WEnd
_WriteMassArt()
_WriteSerArt()
_INIWrite()
ExitFunc _SetComboGeraete()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlComboResetContent($iArtBez)
For $i = 1 To $INIgeraete[0][0]
_GUICtrlComboAddString($iArtBez,$INIgeraete[$i][1])
Next
EndFuncFunc _SetComboArtikel()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlComboResetContent($iArtBez)
For $i = 1 To $INIartikel[0][0]
_GUICtrlComboAddString($iArtBez,$INIartikel[$i][1])
Next
EndFuncFunc _ActivInput()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetStyle($iArtNr, BitOR($ES_RIGHT, $ES_AUTOHSCROLL), $WS_EX_CLIENTEDGE)
If $statTab = 1 Then GUICtrlSetStyle($mNotiz, BitOR($ES_LEFT, $ES_AUTOHSCROLL), $WS_EX_CLIENTEDGE)
GUICtrlSetState($bFirstA, $GUI_DISABLE)
GUICtrlSetState($bLastA, $GUI_DISABLE)
GUICtrlSetState($bPrevA, $GUI_DISABLE)
GUICtrlSetState($bNextA, $GUI_DISABLE)
GUICtrlSetState($bNewA, $GUI_DISABLE)
GUICtrlSetState($bDelA, $GUI_DISABLE)
GUICtrlSetState($bSaveA, $GUI_ENABLE)
GUICtrlSetState($bSuchAufruf, $GUI_DISABLE)
EndFuncFunc _DeActivInput()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetStyle($iArtNr, BitOR($ES_RIGHT, $ES_AUTOHSCROLL, $ES_READONLY), $WS_EX_CLIENTEDGE)
GUICtrlSetStyle($mNotiz, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY), $WS_EX_CLIENTEDGE)
GUICtrlSetState($bSaveA, $GUI_DISABLE)
GUICtrlSetState($bFirstA, $GUI_ENABLE)
GUICtrlSetState($bLastA, $GUI_ENABLE)
GUICtrlSetState($bPrevA, $GUI_ENABLE)
GUICtrlSetState($bNextA, $GUI_ENABLE)
GUICtrlSetState($bNewA, $GUI_ENABLE)
GUICtrlSetState($bDelA, $GUI_ENABLE)
GUICtrlSetState($bSaveA, $GUI_DISABLE)
GUICtrlSetState($bSuchAufruf, $GUI_ENABLE)
EndFuncFunc _Back()
[/autoit] [autoit][/autoit] [autoit]
If $inputS = 1 Then
GUICtrlSetState($lvArtikel, $GUI_ENABLE)
$inputS = 0
ElseIf $inputA = 1 Then
GUICtrlSetState($lvSerien, $GUI_ENABLE)
$inputA = 0
EndIf
_DeActivInput()
ControlSetText("Artikel", "", $iArtBez, "")
GUICtrlSetData($iArtNr, "")
EndFuncFunc _ScrollA($index)
[/autoit] [autoit][/autoit] [autoit]
$x = $index * 10
_GUICtrlListViewScroll($lvArtikel,0,$x)
EndFuncFunc _ScrollS($index)
[/autoit] [autoit][/autoit] [autoit]
$x = $index * 10
_GUICtrlListViewScroll($lvSerien,0,$x)
EndFuncFunc _SucheA()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $AnzItemA -1
$item = StringLower(_GUICtrlListViewGetItemText($lvArtikel, $i, 0))
$vergleich = StringLower(GUICtrlRead($iSuche))
If $item = $vergleich Then Return $i
Next
Return -1
EndFuncFunc _SucheSN()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $AnzItemS -1
$item = StringLower(_GUICtrlListViewGetItemText($lvSerien, $i, 2))
$vergleich = StringLower(GUICtrlRead($iSuche))
If $item = $vergleich Then Return $i
Next
Return -1
EndFuncFunc _AktuellDS_Serien()
[/autoit] [autoit][/autoit] [autoit]
$CurrIndex = _GUICtrlListViewGetCurSel($lvSerien)
$ArtUnit = _GUICtrlListViewGetItemText($lvSerien, $CurrIndex, 1)
$MengeNr = _GUICtrlListViewGetItemText($lvSerien, $CurrIndex, 2)
$Comment = _GUICtrlListViewGetItemText($lvSerien, $CurrIndex, 3)
_GUICtrlStatusBarSetText($StatusBar, $text2_1, 0)
_GUICtrlStatusBarSetText($StatusBar, " " & $ArtUnit, 1)
_GUICtrlStatusBarSetText($StatusBar, $text2_2, 2)
_GUICtrlStatusBarSetText($StatusBar, " " & $MengeNr, 3)
GUICtrlSetData($mNotiz, $Comment)
EndFuncFunc _AktuellDS_Artikel()
[/autoit] [autoit][/autoit] [autoit]
$CurrIndex = _GUICtrlListViewGetCurSel($lvArtikel)
$ArtUnit = _GUICtrlListViewGetItemText($lvArtikel, $CurrIndex, 0)
$MengeNr = _GUICtrlListViewGetItemText($lvArtikel, $CurrIndex, 1)
_GUICtrlStatusBarSetText($StatusBar, $text1_1, 0)
_GUICtrlStatusBarSetText($StatusBar, " " & $ArtUnit, 1)
_GUICtrlStatusBarSetText($StatusBar, $text1_2, 2)
_GUICtrlStatusBarSetText($StatusBar, " " & $MengeNr, 3)
EndFuncFunc _WriteMassArt()
[/autoit] [autoit][/autoit] [autoit]
If $changed = 1 Then
$file = FileOpen("mass_art.vwg",2)
For $i = 0 To $AnzItemA -1
FileWriteLine($file, _GUICtrlListViewGetItemText($lvArtikel, $i))
Next
FileClose($file)
EndIf
EndFuncFunc _WriteSerArt()
[/autoit] [autoit][/autoit] [autoit]
$file = FileOpen("ser_art.vwg",2)
For $i = 0 To $AnzItemS -1
If _GUICtrlListViewGetCheckedState($lvSerien, $i) Then
_GUICtrlListViewSetItemText($lvSerien, $i, 0, 1)
Else
_GUICtrlListViewSetItemText($lvSerien, $i, 0, 0)
EndIf
If _GUICtrlListViewGetItemText($lvSerien, $i, 1) <> "" Then _
FileWriteLine($file, _GUICtrlListViewGetItemText($lvSerien, $i))
Next
FileClose($file)
EndFuncFunc _PrintA($type = 0)
[/autoit] [autoit][/autoit] [autoit]
_WriteMassArt()
If Not _FileReadToArray("mass_art.vwg",$massArt) Then
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Return 0
EndIf
$file = FileOpen("Massenartikel.txt", 2)
For $i = 1 To $massArt[0]
$var = StringSplit($massArt[$i], "|")
If $var[2] > 0 Then
$text = StringReplace($massArt[$i], "|", ": ")
FileWriteLine($file, $text)
EndIf
Next
FileClose($file)
If $type = 0 Then
_FilePrintCom("Massenartikel.txt")
Else
If Not _FileReadToArray("Massenartikel.txt",$massArt) Then
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Return 0
EndIf
$Body = "Massenartikel" & @LF & @LF
For $i = 1 To $massArt[0]
$Body &= $massArt[$i] & @LF
Next
EndIf
EndFuncFunc _PrintS($type = 0)
[/autoit] [autoit][/autoit] [autoit]
$file = FileOpen("SN-Geräte.txt",2)
For $i = 0 To $AnzItemS -1
If Not _GUICtrlListViewGetCheckedState($lvSerien, $i) Then
If _GUICtrlListViewGetItemText($lvSerien, $i, 1) <> "" Then
$text = _GUICtrlListViewGetItemText($lvSerien, $i)
$text = StringReplace($text, "|", ": ", 1)
$text = StringTrimRight($text, 1)
FileWriteLine($file, $text)
EndIf
EndIf
Next
FileClose($file)
If $type = 0 Then
_FilePrintCom("SN-Geräte.txt")
Else
If Not _FileReadToArray("SN-Geräte.txt",$serArt) Then
MsgBox(262144,"Fehler", " Fehler beim Lesen der Datei Fehler-Nr" & @error)
Return 0
EndIf
$Body &= @LF & "SN-Geräte" & @LF & @LF
For $i = 1 To $serArt[0]
$Body &= $serArt[$i] & @LF
Next
_INetSmtpMailCom($smtpServer, $AbsName, $AbsAdress, $ToAdress, $Betreff, _
$Body,"","","", $UserName, $UserPW, $Port)
MsgBox(262144, "", "Mail versendet")
EndIf
EndFuncFunc _INIWrite()
[/autoit] [autoit][/autoit] [autoit]
If $INIchangedA = 1 Then
IniDelete("VerwSmall.INI", "artikel")
For $i = 1 To $INIartikel[0][0]
IniWrite("VerwSmall.INI", "artikel", "item" & $i, $INIartikel[$i][1])
Next
ElseIf $INIchangedS = 1 Then
IniDelete("VerwSmall.INI", "geraete")
For $i = 1 To $INIgeraete[0][0]
IniWrite("VerwSmall.INI", "geraete", "item" & $i, $INIgeraete[$i][1])
Next
EndIf
EndFuncFunc MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Funktion von SmOke_N
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWndGUI, $MsgID
Local $tagNMHDR, $event
Switch $wParam
Case $lvArtikel
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3)
Switch $event
Case $NM_CLICK
_AktuellDS_Artikel()
EndSwitch
Case $lvSerien
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3)
Switch $event
Case $NM_CLICK
_AktuellDS_Serien()
EndSwitch
EndSwitch
$tagNMHDR = 0
EndFuncFunc _FilePrintCom($iFile) ; Funktion von Jos
[/autoit]
If Not FileExists($iFile) Then Return SetError(1,0,0)
$objShellApp = ObjCreate("Shell.Application")
$objShellApp.ShellExecute($iFile,0,0,"PRINT",0)
EndFunc
; auch von Jos
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", _
$s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
$objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
$i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
SetError(1)
return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $Ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Sent the Message
$objEmail.Send
if @error then
SetError(2)
return $oMyRet[1]
EndIf
EndFunc ;==>_INetSmtpMailCom
; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number,
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description,3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFunc -
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
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]#Include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
$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
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bEscBestell
Exit
;;
EndSwitch
WEndEDIT:
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
[autoit]#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)
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
[/autoit]
$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
[autoit]#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)
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
[/autoit]
$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 -
Es kann natürlich sein, dass der Ordner aufgrund seines Versteckt-Attributes von einigen Funktionen nicht erkannt wird - weiß ich aber nicht.
Vielleicht hat ja schon jemand mit versteckten Files/Ordnern seine Erfahrungen.
Gib die Hoffnung nicht auf - aber hier muß ich erstmal passen. -
Zitat
das er die die ich Suche deshalb nicht findet wil Sie versteckt sind.
[autoit]
Da liegt mit Sicherheit der Hund begraben.
Die Funktion _GetFileList( ) selektiert Ordner mit dem Attribut "D". Ist der Ordner aber versteckt sind die Attribute "D,H,S" oder ähnlich.
Prüfe also zuerst mitMsgBox(0, '', FileGetAttrib($StartPfad & "\" & $SuchOrdner) )
[/autoit]
[autoit]
welche Attribute dein gesuchter Ordner hat. Dann mußt du in der Funktion die beiden IF-Abfragen mitIf StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 ; bzw.
[/autoit]
If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0
ergänzen mit:- entsprechend deinen Attributen.
-
Füge mal hinter dieser Zeile:
[autoit]$Daten = _GetFileList($StartPfad, "n",1)
[/autoit]
[autoit]
zur Kontrolle eine MsgBox ein:MsgBox(0,'', "Anzahl Ordner in $Daten : " & $Daten[0])
[/autoit]
Dann erfährst du, ob überhaupt Ordner ausgelesen wurden.
Eigentlich kann nur ein Fehler im Pfad liegen. Check nochmal genau die Schreibweise.
Bei mir funktioniert es tadellos.EDIT:
Vielleicht ist bei Copy&Paste was schiefgegangen ?
Ich hänge jetzt mal meine, funktionierende Version an.