1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Userpics von euch :)

    • BugFix
    • 29. November 2006 um 20:14

    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. :rofl:
    [/IMG]

  • StatusbarGetText-Abfrage unvollständig?

    • BugFix
    • 29. November 2006 um 18:42

    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 ändern

    Falls 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.

  • Game-Port abfragen über AutoIt?

    • BugFix
    • 29. November 2006 um 18:29

    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=15

    Hier 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)

  • Ini-write überschreibt

    • BugFix
    • 29. November 2006 um 17:52

    Willst du, dass zu den bestehenden Werten neue DAZUgeschrieben werden?
    Mit

    [autoit]

    IniWrite ( "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:

    Code
    [section]
    schlüssel1=A,B,C
    schlüssel2=1,2,3
    ...


    Es ist fraglich, inwieweit es Sinn macht, eine INI-Datei zur Datenbank zu verbiegen. Aber es geht natürlich:

    [autoit]

    $name_alt = IniRead('daten.ini',$anzahl,'$name','') ; vorhandene(r) Wert(e)
    ;;
    ;;
    $name = GUICtrlRead($input[$anzahl][1])
    ;;
    ;;
    IniWrite('daten.ini',$anzahl,'$name',$name_alt & "," & $name)
    ;;

    [/autoit]
  • Visible Window Text auslesen, auto. aktualisieren, bearbeiten...

    • BugFix
    • 29. November 2006 um 10:33

    So läßt sich kontinuierlich prüfen, ob der Wert sich geändert hat.

    [autoit]

    Dim $x, $last_x
    $x = ControlGetText ( "title", "text", controlID )
    $last_x = $x

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

    While 1
    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
    WEnd

    [/autoit]

    Den 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 :rofl: , jedenfalls hat sich in den Mustercode ein Fehler eingeschlichen. Habs hiermit korrigiert.

  • TXT Datei nach VEN_ID auswerten

    • BugFix
    • 29. November 2006 um 10:12

    Mit diesem Code separierst du ID und Device in ein Array. Beide Elemente sind mit dem Doppelpunkt getrennt.
    Zur weiteren Verarbeitung kannst du dann mit

    [autoit]

    StringSplit($arID_Dev, ":")

    [/autoit]

    ID und Device getrennt auswerten.

    Viel Spaß!

    [autoit]

    #include <array.au3>
    #include <file.au3>

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

    Dim $arID_Dev[1]
    $arID_Dev[0] = 0
    Dim $fileArray
    $Pfad = @ScriptDir & "\hwids.txt"

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

    If Not _FileReadToArray($Pfad, $fileArray) Then
    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

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

    _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]
  • Happy Birthday BugFix

    • BugFix
    • 28. November 2006 um 21:57

    ...diese jene ? [Blockierte Grafik: http://img122.imageshack.us/img122/7605/danielskirschece5.png]

    *mir-durchaus-vorstell-kann* *very-big-grins*

  • Happy Birthday BugFix

    • BugFix
    • 28. November 2006 um 21:34

    Also Daniel !!!!
    Um an meinem Bauch rumzupinseln, bist du wahrscheinlich vieeeeel zu wenig weiblich. :rofl:

  • Happy Birthday BugFix

    • BugFix
    • 28. November 2006 um 21:17

    Fühle mich gebauchpinselt... :party4: :party3: :stolz_bin:

  • Happy Birthday BugFix

    • BugFix
    • 28. November 2006 um 20:27

    Vielen Dank, liebe Leute. :klatschen:

    Aber jonk - was zum Teufel ist eine "pottingmaschine" ?
    Möchte schon wissen, was ich bin (sein soll). ;)

  • Noob-Frage - Switchcase & AND-Bedingung

    • BugFix
    • 24. November 2006 um 14:46

    Du mußt den Status des Radio-Controls auslesen

    [autoit]

    ;
    Case $msg = $button_ok AND (GUICtrlRead($radio_1) = $GUI_Checked)
    run ('programm1')
    ;

    [/autoit]
  • Neue 3.2.0.0-Hilfe übersetzen

    • BugFix
    • 24. November 2006 um 14:34
    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.

  • Artikelverwaltung (Small Edition)

    • BugFix
    • 22. November 2006 um 08:17
    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).

    Zitat

    BasicOs:
    Ich wuerde personlich dieses Programm nicht per Gui machen sonder lieber Per Html-autoit

    Ich 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. ;)

  • Zeilen bei ListView von anderen absetzen

    • BugFix
    • 21. November 2006 um 14:57

    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)
    GUISetBkColor (0x00E0FFFF)

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

    $listview = GUICtrlCreateListView ("col1 |col2|col3 ", 10, 10, 200, 150)
    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)

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

    GUISetState()

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

    Do
    $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

    [/autoit]
  • Problem beim schliessen von einem Fenster.

    • BugFix
    • 21. November 2006 um 13:49

    Aber trotzdem falsch. Erst definieren, dann ausführen.
    So ists sauber:
    Edit: hab den gewünschten Style noch eingesetzt

    [autoit]

    #include <GUIConstants.au3>
    $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');

    [/autoit]
  • Artikelverwaltung (Small Edition)

    • BugFix
    • 20. November 2006 um 17:38

    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" :rofl:
    (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>
    #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]

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

    $ArtikelGUI = GUICreate("Artikel", 867, 551, -1, -1, BitOr($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
    $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)

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

    If Not _FileReadToArray("mass_art.vwg",$massArt) Then
    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

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

    ;GUI Suche
    $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)

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

    GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")
    GUICtrlSetState($bSuchAufruf, $GUI_FOCUS)
    GUISetState(@SW_SHOW, $ArtikelGUI)

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

    Dim $A_DESCENDING[_GUICtrlListViewGetSubItemsCount ($lvArtikel) ]
    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()

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

    While 1
    $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()
    Exit

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

    Func _SetComboGeraete()
    _GUICtrlComboResetContent($iArtBez)
    For $i = 1 To $INIgeraete[0][0]
    _GUICtrlComboAddString($iArtBez,$INIgeraete[$i][1])
    Next
    EndFunc

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

    Func _SetComboArtikel()
    _GUICtrlComboResetContent($iArtBez)
    For $i = 1 To $INIartikel[0][0]
    _GUICtrlComboAddString($iArtBez,$INIartikel[$i][1])
    Next
    EndFunc

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

    Func _ActivInput()
    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)
    EndFunc

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

    Func _DeActivInput()
    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)
    EndFunc

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

    Func _Back()
    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, "")
    EndFunc

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

    Func _ScrollA($index)
    $x = $index * 10
    _GUICtrlListViewScroll($lvArtikel,0,$x)
    EndFunc

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

    Func _ScrollS($index)
    $x = $index * 10
    _GUICtrlListViewScroll($lvSerien,0,$x)
    EndFunc

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

    Func _SucheA()
    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
    EndFunc

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

    Func _SucheSN()
    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
    EndFunc

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

    Func _AktuellDS_Serien()
    $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)
    EndFunc

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

    Func _AktuellDS_Artikel()
    $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)
    EndFunc

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

    Func _WriteMassArt()
    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
    EndFunc

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

    Func _WriteSerArt()
    $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)
    EndFunc

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

    Func _PrintA($type = 0)
    _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
    EndFunc

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

    Func _PrintS($type = 0)
    $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
    EndFunc

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

    Func _INIWrite()
    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
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam) ; Funktion von SmOke_N
    #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
    EndFunc

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

    Func _FilePrintCom($iFile) ; Funktion von Jos
    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, 8)
    $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

    [/autoit]

    Dateien

    VerwSmall.zip 21,47 kB – 428 Downloads
  • ListView - Problem

    • BugFix
    • 17. November 2006 um 19:54

    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>
    $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)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $bEscBestell
    Exit
    ;;
    EndSwitch
    WEnd

    [/autoit]

    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
    [autoit]

    #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)

    [/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)
    $MengeNeu = InputBox("Bestellmenge","Bestellvorschlag:",$CurrMenge)
    _GUICtrlListViewSetItemText($lvBestell, $CurrIndex, 5, $MengeNeu)
    ;;
    EndSwitch
    WEnd

    [/autoit]


    EDIT 2:
    Habs nun mit eigener InputBox gelöst. Aber Danke für euren moralischen Beistand :rofl:
    So sieht das Endprodukt aus:

    Spoiler anzeigen
    [autoit]

    #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)

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

    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

    [/autoit]
  • Such- und Löschfunktion

    • BugFix
    • 17. November 2006 um 15:28

    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.

  • Such- und Löschfunktion

    • BugFix
    • 17. November 2006 um 12:56
    Zitat

    das er die die ich Suche deshalb nicht findet wil Sie versteckt sind.


    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 mit

    [autoit]

    MsgBox(0, '', FileGetAttrib($StartPfad & "\" & $SuchOrdner) )

    [/autoit]


    welche Attribute dein gesuchter Ordner hat. Dann mußt du in der Funktion die beiden IF-Abfragen mit

    [autoit]

    If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 ; bzw.
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0

    [/autoit]


    ergänzen mit:

    Code
    ... Or StringInStr(FileGetAttrib( $N_TFILE ),"D,H,S")

    - entsprechend deinen Attributen.

  • Such- und Löschfunktion

    • BugFix
    • 17. November 2006 um 11:25

    Füge mal hinter dieser Zeile:

    [autoit]

    $Daten = _GetFileList($StartPfad, "n",1)

    [/autoit]


    zur Kontrolle eine MsgBox ein:

    [autoit]

    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.

    Dateien

    RekursivFolderSearch.au3 3,78 kB – 292 Downloads

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™