Performance

  • Hi liebe Leute!


    Ich habe vor einiger Zeit ein Skript erstellt ( Dienstplan ) ist für meine kleine und ein Projekt was ein wenig Aufwand mit sich gebracht hat, es geht um die Performance ich weiß das Autoit nicht der schnellste ist, ich möchte trotzdem alles rausholen was geht, ich Arbeite immer mal wieder an dem Projekt verbessern hier und da was nur zu einer Sache mit dem VSCROLL fällt mir nichts ein?
    Bewegt man ihn hoch und runter braucht die Grafik Ewigkeiten um nach zu kommen sagen wir´s mal so es ist nicht schön anzusehen!
    Schaut mal mein Code an vieleicht hat einer von euch ja Ideen!


    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Date.au3>
    #include <GuiScrollBars.au3>
    #include <GUIConstantsEx.au3>
    #include <ScrollBarConstants.au3>
    #include <WindowsConstants.au3>
    #include <_ArrayMultiDisplay.au3>

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

    #include <StaticConstants.au3>
    #include <ProgressConstants.au3>
    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    Global $Form[5], $Benutzer, $xXx = 0, $vSG = 'F|F1|F2|F3|F4|Z|Z1|S|S1|S2|S3|SS|SK|Na|U|K'
    Local $F0_SYS[9]
    Local $Array_Tage[31][2]
    Local $St_Array_Tag[31][12][2]
    Local $aTmp[31][12][2]
    Local $Trans = 0.2, $x, $y, $Set_CFS
    Local $W_Tag[8] = ['', 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
    Local $Ex_Datein[3] = [@DesktopDir & '\Dienstplan.lnk', @ScriptDir & '\Druckerbank.html', @ScriptDir & '\data\Schichten.ini']
    Local $Monat[13] = ['', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
    Local $Soll[12][2], $Ist[12], $Urlaub[12][2], $Soller[12], $Uebertrag[12][2], $Group[12], $R_Label[12][2], $Name[12][2], $Progress[12], $ProgressLabel[12], $Feiertage[7]
    Local $Menue[8], $B_Menue[8][2] = [['A&nsicht Speichern', ''],['S&peicherabfrage', ''],['S&chichtsetzen', ''],['M&onat Einlesen', ''],['A&nsicht Leeren', ''],['', ''],['B&enden', 'GUI_Exit']]

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

    $Form[0] = GUICreate('', 1010, 700, -1, -1)
    GUISetBkColor(0xFFFACD, $Form[0]); W 0xFFFFFF; G 0xFFFACD
    GUISetOnEvent(-3, 'GUI_Exit')
    $F0_SYS[1] = GUICtrlCreateMenu(' M&enü ')
    For $i = 0 To 7
    $Menue[$i] = GUICtrlCreateMenuItem($B_Menue[$i][0], $F0_SYS[1])
    GUICtrlSetOnEvent(-1, $B_Menue[$i][1])
    Next
    GUICtrlCreateLabel('Monat:', 10, 16, 43, 20)
    GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
    GUICtrlCreateLabel('Soll', 853, 78, 20, 15)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetTip(-1, 'Gesamter Monats Zeitraum ')
    GUICtrlCreateLabel('Ist', 900, 78, 20, 15)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetTip(-1, 'Wieviel im Monat geleistet')
    GUICtrlCreateLabel('+/-', 940, 78, 42, 15)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetTip(-1, 'Plus Minus Stunden Übertragen')
    GUICtrlCreateLabel('Jahr :', 25, 53, 40, 20)
    GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
    $F0_SYS[2] = GUICtrlCreateCombo('', 60, 15, 105, 20)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetOnEvent(-1, 'W_Rechnung')
    GUICtrlSetData($F0_SYS[2], _ArrayToString($Monat))
    ;$F0_SYS[3] = GUICtrlCreateLabel('0', -100, 0, 0, 0)
    $F0_SYS[4] = GUICtrlCreateLabel(@YEAR, 75, 53, 40, 19)
    GUICtrlSetFont(-1, 9, 900, 0, 'Verdana')
    $F0_SYS[5] = GUICtrlCreateButton('-', 128, 52, 17, 17)
    GUICtrlSetOnEvent(-1, 'W_Rechnung')
    $F0_SYS[6] = GUICtrlCreateButton('+', 145, 52, 17, 17)
    GUICtrlSetOnEvent(-1, 'W_Rechnung')
    $F0_SYS[7] = GUICtrlCreateLabel('', 875, 44, 60, 25)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetColor(-1, 0x0000FF)
    $F0_SYS[8] = GUICtrlCreateLabel('Feiertage:', 177, 17, 80, 20)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetColor(-1, 0x0000FF)
    $x = 174
    For $i = 0 To 30
    $Array_Tage[$i][0] = GUICtrlCreateLabel(StringRight('0' & $i + 1, 2), $x + 1, 46, 19, 18, 0x01)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    $Array_Tage[$i][1] = GUICtrlCreateLabel('', ($x) + 1.5, 69, 19, 18, 0x01)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    $x += 21.5
    Next
    $Form[1] = GUICreate('', 1009, 579, 0, 100, 0x40000000, '', $Form[0])
    GUISetBkColor(0xFFFACD, $Form[1]); W 0xFFFFFF; G 0xFFFACD

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

    For $n = 0 To 1
    $y = 20
    If $n Then $y += 21
    For $e = 0 To 11
    $x = 176
    For $i = 0 To 30
    $St_Array_Tag[$i][$e][$n] = GUICtrlCreateInput('', $x, $y, 21, 20)
    $aTmp[$i][$e][$n] = 0
    $x += 22
    Next
    $y += 70
    Next
    Next

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

    $x = 31
    For $i = 0 To 11
    $Soll[$i][0] = GUICtrlCreateInput('', 130, $x, 45, 19, 0x2000)
    $Soll[$i][1] = GUICtrlCreateInput('', 858, ($x - 17), 45, 21, 0x0800)
    $Name[$i][0] = GUICtrlCreateInput('', 9, ($x - 22), 120, 21)
    $Name[$i][1] = GUICtrlCreateInput('', 9, ($x + 1), 120, 19)
    $R_Label[$i][0] = GUICtrlCreateLabel('R=', 111, ($x + 24), 18, 12)
    $R_Label[$i][1] = GUICtrlCreateLabel('R=', 880, ($x + 20), 20, 12)
    $Uebertrag[$i][0] = GUICtrlCreateInput('', 130, ($x - 22), 45, 21)
    $Uebertrag[$i][1] = GUICtrlCreateInput('', 950, ($x - 17), 45, 21, 0x0800)
    $Urlaub[$i][0] = GUICtrlCreateInput('', 130, ($x + 20), 45, 18, 0x2000)
    $Urlaub[$i][1] = GUICtrlCreateInput('', 904, ($x + 14), 45, 21, 0x0800)
    $Ist[$i] = GUICtrlCreateInput('', 904, ($x - 17), 45, 21, 0x0800)
    $Soller[$i] = GUICtrlCreateInput('', 950, ($x + 14), 45, 21, 0x0800)
    $Group[$i] = GUICtrlCreateGroup('', 858, ($x + 11), 45, 25)
    $Progress[$i] = GUICtrlCreateProgress(9, ($x + 21), 70, 19)
    $ProgressLabel[$i] = GUICtrlCreateLabel(' 0%', 80, ($x + 24), 30, 20)
    GUICtrlSetColor($ProgressLabel[$i], 0x0000FF)
    $x += 70
    Next
    GUISetState()
    ;GUISetState(@SW_HIDE, $Form[1])
    GUISwitch($Form[0])
    GUICtrlSetResizing($Form[1], 802)
    $x = 245
    For $i = 0 To 6
    $Feiertage[$i] = GUICtrlCreateLabel('', $x, 17, 70, 18)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlSetFont(-1, 8, 900, 0, 'Verdana')
    GUICtrlSetOnEvent(-1, 'Set_Color_Feiertage')
    $x += 75
    Next
    WinSetTrans($Form[0], '', 0)
    _GUIScrollBars_Init($Form[1])
    GUIRegisterMsg(0x0115, 'WM_VSCROLL')
    GUISetState()

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

    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
    ;_ArrayMultiDisplay($St_Array_Tag)

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

    $Form[2] = GUICreate('Feiertage', 370, 420, -1, -1)
    GUISetOnEvent(-3, 'GUI_HIDE')
    GUICtrlCreateLabel('Die zutreffenden Feiertage des jeweiligen Bundesland auswählen.', 25, 10, 390, 20)
    GUICtrlSetColor(-1, 0x0000FF)
    Local $Feiertage_SHOW[32], $Set_Feiertage = _Feiertage(GUICtrlRead($F0_SYS[4])), $L = 20, $H = 50
    For $i = 0 To 31
    If ($i = 16) Then
    $L = 200
    $H = 50
    EndIf
    $Feiertage_SHOW[$i] = GUICtrlCreateButton($Set_Feiertage[$i][1], $L, $H, 150, 20)
    GUICtrlSetOnEvent(-1, '')
    $H += 22
    Next
    GUISetState(@SW_HIDE, $Form[2])
    #comments-start
    $Benutzer = GUICreate('', 230, 130, -1, -1, @SW_DISABLE)
    GUICtrlCreateLabel('Benutzer:', 20, 16, 80, 20)
    Local $InputBenu = GUICtrlCreateInput('', 100, 16, 100, 19)
    GUICtrlCreateLabel('Password:', 20, 48, 80, 15)
    Local $InputPass = GUICtrlCreateInput('', 100, 48, 100, 19)
    GUISetState()
    #comments-end

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

    Func W_Rechnung()
    If Not GUICtrlRead($F0_SYS[2]) Then Return 1
    Local $W_SYS[8], $IniAus, $StringSplit, $Time = TimerInit()
    Switch @GUI_CtrlId
    Case $F0_SYS[5]
    GUICtrlSetData($F0_SYS[4], GUICtrlRead($F0_SYS[4]) - 1)
    Case $F0_SYS[6]
    GUICtrlSetData($F0_SYS[4], GUICtrlRead($F0_SYS[4]) + 1)
    EndSwitch
    $W_SYS[0] = GUICtrlRead($F0_SYS[4])
    $W_SYS[1] = M_Zahl(GUICtrlRead($F0_SYS[2]))
    $W_SYS[2] = _DateDaysInMonth($W_SYS[0], $W_SYS[1])
    $W_SYS[3] = @ScriptDir & '\data\Feiertage' & $W_SYS[0] & '.ini'
    ;If Not FileExists($W_SYS[3]) Then Return GUISetState(@SW_SHOW, $Form[2])
    GUICtrlSetData($F0_SYS[7], '')
    If GUICtrlRead($Feiertage[0]) Then
    For $i = 0 To 6
    If Not GUICtrlRead($Feiertage[$i]) Then ContinueLoop
    For $n = 0 To 1
    For $e = 0 To 11
    GUICtrlSetTip($St_Array_Tag[StringLeft(GUICtrlRead($Feiertage[$i]), 2) - 1][$e][$n], '')
    Next
    Next
    GUICtrlSetData($Feiertage[$i], '')
    Next
    EndIf
    If Not GUICtrlRead($Array_Tage[30][1]) Then
    For $i = 28 To 30
    For $e = 0 To 11
    For $n = 0 To 1
    GUICtrlSetState($St_Array_Tag[$i][$e][$n], $GUI_ENABLE)
    Next
    Next
    Next
    EndIf
    For $i = 0 To 30
    $W_SYS[4] = _DateToDayOfWeek($W_SYS[0], $W_SYS[1], GUICtrlRead($Array_Tage[$i][0]))
    GUICtrlSetData($Array_Tage[$i][1], W_Tag($W_SYS[4]))
    Switch $W_SYS[4]
    Case 2 To 6
    For $n = 0 To 1
    For $e = 0 To 11
    GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xFFFFFF)
    Next
    Next
    GUICtrlSetColor($Array_Tage[$i][0], 0x000000)
    GUICtrlSetColor($Array_Tage[$i][1], 0x000000)
    Case 1, 7
    For $n = 0 To 1
    For $e = 0 To 11
    GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xDADBE5)
    Next
    Next
    GUICtrlSetColor($Array_Tage[$i][0], 0xff0000)
    GUICtrlSetColor($Array_Tage[$i][1], 0xff0000)
    $W_SYS[5] += 1
    Case Else
    For $n = 0 To 1
    For $e = 0 To 11
    GUICtrlSetBkColor($St_Array_Tag[$i][$e][$n], 0xFFFFFF)
    GUICtrlSetState($St_Array_Tag[$i][$e][$n], $GUI_DISABLE)
    Next
    Next
    GUICtrlSetColor($Array_Tage[$i][0], 0x000000)
    EndSwitch
    Next
    $IniAus = IniReadSection($W_SYS[3], GUICtrlRead($F0_SYS[2]))
    If IsArray($IniAus) Then
    _ArraySort($IniAus, 0, 0, 0, 1)
    For $i = 1 To UBound($IniAus) - 1
    $StringSplit = StringSplit($IniAus[$i][1], '.')
    For $n = 0 To 1
    For $e = 0 To 11
    GUICtrlSetTip($St_Array_Tag[$StringSplit[1] - 1][$e][$n], $IniAus[$i][1] & ' ist ein Feiertag', $IniAus[$i][0], 1)
    Next
    Next
    $W_SYS[4] = _DateToDayOfWeek($StringSplit[3], $StringSplit[2], $StringSplit[1])
    If ($W_SYS[4] <> 1 And $W_SYS[4] <> 7) Then $W_SYS[6] += 1
    GUICtrlSetData($Feiertage[$i - 1], $IniAus[$i][1])
    Next
    EndIf
    If (Schaltjahr($W_SYS[0])) Then GUICtrlSetData($F0_SYS[7], 'Schaltjahr')
    $xXx = ($W_SYS[2] - $W_SYS[5] - $W_SYS[6])
    ConsoleWrite('Nettoarbeitstage : ' & $xXx & ' Ende Time: ' & Round(TimerDiff($Time)) & @CRLF)
    EndFunc ;==>W_Rechnung

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

    Func Set_Color_Feiertage()
    Local $Datum = GUICtrlRead(@GUI_CtrlId, 1)
    If Not $Datum Then Return (0)
    Local $StringSplit = StringSplit($Datum, '.')
    If IsArray($StringSplit) Then
    Local $Color, $Ta_Pr = _DateToDayOfWeek(GUICtrlRead($F0_SYS[4]), M_Zahl(GUICtrlRead($F0_SYS[2])), GUICtrlRead($Array_Tage[$StringSplit[1] - 1][0]))
    If $Set_CFS Then
    $Color = 0xFFFFFF
    If ($Ta_Pr = 1) Or ($Ta_Pr = 7) Then $Color = 0xDADBE5
    $Set_CFS = 0
    Else
    $Color = 0xaaafff
    $Set_CFS = 1
    EndIf
    For $i = 0 To 11
    For $n = 0 To 1
    GUICtrlSetBkColor($St_Array_Tag[$StringSplit[1] - 1][$i][$n], $Color)
    Next
    Next
    EndIf
    EndFunc ;==>Set_Color_Feiertage

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

    Func W_Tag($W_Tag_N)
    Return $W_Tag[$W_Tag_N]
    EndFunc ;==>W_Tag

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

    Func M_Zahl($M_Zahl)
    For $i = 1 To UBound($Monat) - 1
    If ($M_Zahl = $Monat[$i]) Then Return $i
    Next
    EndFunc ;==>M_Zahl

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

    Func Schaltjahr($JahresZahl)
    Return (Mod($JahresZahl, 4) = 0 And Mod($JahresZahl, 100) <> 0 Or Mod($JahresZahl, 400) = 0)
    EndFunc ;==>Schaltjahr

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

    Func _Feiertage($year, $DateTyp = 1)
    Dim $HDays[32][2], $Sy[32], $tmp
    $Sy[0] = Mod($year, 19)
    $Sy[1] = Int($year / 100)
    $Sy[2] = Int($year / 400)
    $Sy[3] = Mod((19 * $Sy[0] + (15 + $Sy[1] - $Sy[2] - Floor(Int((8 * $Sy[1] + 13) / 25)))), 30)
    $Sy[4] = Mod((2 * Mod($year, 4) + 4 * Mod($year, 7) + 6 * $Sy[3] + (4 + $Sy[1] - $Sy[2])), 7)
    If ($Sy[3] + $Sy[4] = 35) Then
    $Sy[5] = 50
    Else
    If ($Sy[3] = 28 And $Sy[4] = 6 And $Sy[0] > 10) Then
    $Sy[5] = 49
    Else
    $Sy[5] = 22 + $Sy[3] + $Sy[4]
    EndIf
    EndIf
    If ($Sy[5] < 32) Then
    $Sy[6] = $Sy[5]
    $Sy[7] = '03'
    Else
    $Sy[6] = $Sy[5] - 31
    $Sy[7] = '04'
    EndIf
    If ($Sy[6] < 10) Then $Sy[6] = '0' & $Sy[6]
    If ($year < 1900) Then
    $Sy[8] = Mod($year, 100)
    If _DateIsLeapYear($year) Then
    If $Sy[8] < 10 Then $Sy[8] = '0' & $Sy[8]
    $Sy[9] = 20 & $Sy[8]
    Else
    If $Sy[8] < 10 Then $Sy[8] = '0' & $Sy[8]
    $Sy[9] = 19 & $Sy[8]
    EndIf
    $Sy[10] = $Sy[9] & '/' & $Sy[7] & '/' & $Sy[6]
    Else
    $Sy[10] = $year & '/' & $Sy[7] & '/' & $Sy[6]
    EndIf
    $Sy[11] = _DateAdd('d', -52, $Sy[10])
    $Sy[12] = _DateAdd('d', -48, $Sy[10])
    $Sy[13] = _DateAdd('d', -47, $Sy[10])
    $Sy[14] = _DateAdd('d', -46, $Sy[10])
    $Sy[15] = _DateAdd('d', -3, $Sy[10])
    $Sy[16] = _DateAdd('d', -2, $Sy[10])
    $Sy[17] = _DateAdd('d', -1, $Sy[10])
    $Sy[18] = $Sy[10]
    $Sy[19] = _DateAdd('d', 1, $Sy[10])
    $Sy[20] = _DateAdd('d', 39, $Sy[10])
    $Sy[21] = _DateAdd('d', 49, $Sy[10])
    $Sy[22] = _DateAdd('d', 50, $Sy[10])
    $Sy[23] = _DateAdd('d', 60, $Sy[10])
    For $i = 8 To 14
    If (_DateToDayOfWeek($year, 5, $i) = 1) Then
    If $i < 10 Then $i = '0' & $i
    $Sy[24] = $year & '/05/' & $i
    If ($Sy[24] = $Sy[21]) Then $Sy[24] = _DateAdd('d', -7, $year & '/05/' & $i)
    ExitLoop
    EndIf
    Next
    For $i = 1 To 7
    If (_DateToDayOfWeek($year, 10, $i) = 1) Then
    $i = '0' & $i
    $Sy[25] = $year & '/10/' & $i
    ExitLoop
    EndIf
    Next
    For $i = 18 To 24
    If (_DateToDayOfWeek($year, 12, $i) = 1) Then
    $Sy[26] = $year & '/12/' & $i
    $Sy[27] = _DateAdd('d', -7, $Sy[26])
    $Sy[28] = _DateAdd('d', -14, $Sy[26])
    $Sy[29] = _DateAdd('d', -21, $Sy[26])
    $Sy[30] = _DateAdd('d', -28, $Sy[26])
    $Sy[31] = _DateAdd('d', -32, $Sy[26])
    ExitLoop
    EndIf
    Next
    Dim $HDS[32] = [$year & '/01/01\Neujahr', $year & '/01/06\Heilige Drei Könige', $year & '/02/14\Valentinstag', $year & '/05/01\Maifeiertag', $year & '/10/03\Tag der Deutschen Einheit', _
    $year & '/10/31\Reformationstag', $year & '/11/01\Allerheiligen', $year & '/12/24\Heiligabend', $year & '/12/25\1. Weihnachtsfeiertag', $year & '/12/26\2. Weihnachtsfeiertag', _
    $year & '/12/31\Silvester', $Sy[11] & '\Weiberfastnacht', $Sy[12] & '\Rosenmontag', $Sy[13] & '\Fastnacht', $Sy[14] & '\Aschermittwoch', $Sy[15] & '\Gründonnerstag', _
    $Sy[16] & '\Karfreitag', $Sy[17] & '\Ostersamstag', $Sy[18] & '\Ostersonntag', $Sy[19] & '\Ostermontag', $Sy[20] & '\Christi Himmelfahrt', $Sy[21] & '\Pfingstsonntag', _
    $Sy[22] & '\Pfingstmontag', $Sy[24] & '\Muttertag', $Sy[23] & '\Fronleichnam', $Sy[25] & '\Erntedankfest', $Sy[31] & '\Buß- und Bettag', $Sy[30] & '\Totensonntag', _
    $Sy[29] & '\1. Advent', $Sy[28] & '\2. Advent', $Sy[27] & '\3. Advent', $Sy[26] & '\4. Advent']
    For $i = 0 To 31
    $HDays[$i][0] = $HDS[$i]
    If $DateTyp Then
    $tmp = StringSplit($HDays[$i][0], '\', 2)
    $HDays[$i][0] = StringMid($tmp[0], 9) & '.' & StringMid($tmp[0], 6, 2) & '.' & StringMid($tmp[0], 1, 4)
    $HDays[$i][1] = $tmp[1]
    Else
    $HDays[$i][1] = StringTrimLeft($HDays[$i][0], 11)
    $HDays[$i][0] = StringLeft($HDays[$i][0], 10)
    EndIf
    Next
    Return $HDays
    EndFunc ;==>_Feiertage

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

    Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    Local $WM_SYS[6]
    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If ($aSB_WindowInfo[$x][0] = $hWnd) Then
    $WM_SYS[0] = $x
    $WM_SYS[1] = $aSB_WindowInfo[$WM_SYS[0]][2] - 2.5
    ExitLoop
    EndIf
    Next
    If ($WM_SYS[0] = -1) Then Return 1
    $WM_SYS[2] = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $WM_SYS[3] = DllStructGetData($WM_SYS[2], 'nPos')
    $WM_SYS[4] = DllStructGetData($WM_SYS[2], 'nTrackPos')
    Switch BitAND($wParam, 0x0000FFFF)
    Case $SB_LINEUP
    DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[3] - 1)
    Case $SB_LINEDOWN
    DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[3] + 1)
    Case $SB_THUMBTRACK
    DllStructSetData($WM_SYS[2], 'nPos', $WM_SYS[4])
    EndSwitch
    DllStructSetData($WM_SYS[2], 'fMask', $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $WM_SYS[2])
    $WM_SYS[5] = DllStructGetData($WM_SYS[2], 'nPos')
    If ($WM_SYS[5] <> $WM_SYS[3]) Then _GUIScrollBars_ScrollWindow($hWnd, 0, $WM_SYS[1] * ($WM_SYS[3] - $WM_SYS[5]))
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_VSCROLL

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    ;ConsoleWrite(BitShift($wParam, 16) & ' ' & BitAND($wParam, 0xFFFF) & ' ' & GUICtrlRead(BitAND($wParam, 0xFFFF), 1) & @CR)
    Local $HiWord = BitShift($wParam, 16)
    If ($HiWord = 1024 Or $HiWord = 6) Then
    Local $GetSA, $Minus
    Local $LoWord = BitAND($wParam, 0xFFFF)
    Local $GetLoWord = StringUpper(GUICtrlRead($LoWord, 1))
    If Not GUICtrlRead($F0_SYS[2]) Then Return GUICtrlSetData($LoWord, '')
    GUICtrlSetData($LoWord, $GetLoWord)
    For $n = 0 To 1
    For $e = 0 To 11
    For $i = 0 To 30
    If ($St_Array_Tag[$i][$e][$n] = $LoWord) Then
    GUICtrlSetData($Soll[$e][1], StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5 * $xXx)
    If StringIsDigit($GetLoWord) Or StringLen($GetLoWord) > 2 Then Return 1
    If Not $GetLoWord Then
    $GetLoWord = $aTmp[$i][$e][$n]
    $aTmp[$i][$e][$n] = 0
    $Minus = 1
    Else
    If Not StringInStr($vSG, $GetLoWord) Then Return 1
    $GetSA = $aTmp[$i][$e][$n]
    $aTmp[$i][$e][$n] = $GetLoWord
    $Minus = 0
    EndIf
    $GetLoWord = B_in_Z($GetLoWord)
    If $GetLoWord Then
    If $Minus Then
    _GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - $GetLoWord), GUICtrlRead($Soll[$e][1]))
    Else
    If $GetSA Then
    _GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - B_in_Z($GetSA)) + $GetLoWord, GUICtrlRead($Soll[$e][1]))
    Else
    _GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) + $GetLoWord), GUICtrlRead($Soll[$e][1]))
    EndIf
    EndIf
    Else
    If $Minus Then
    _GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) - (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
    Else
    If $GetSA Then
    _GUICtrlSetData($e, ((GUICtrlRead($Ist[$e]) - B_in_Z($GetSA)) + (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
    Else
    _GUICtrlSetData($e, (GUICtrlRead($Ist[$e]) + (StringReplace(GUICtrlRead($Soll[$e][0]), ',', '.') / 5)), GUICtrlRead($Soll[$e][1]))
    EndIf
    EndIf
    EndIf
    Return 1
    EndIf
    Next
    Next
    Next
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

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

    Func B_in_Z($B_in_Z)
    Local $Get_B_in_Z[17][2] = [['F', 8.3],['FS', 3.85],['F1', 5.75],['F2', 6.3],['F3', 8.3],['F4', 5.25],['Z', 8.3],['Z1', 8.3],['S', 8.3],['S1', 8.3],['S2', 6.8],['S3', 5.85],['SS', 3.85],['SK', 2.85],['Na', 9.3],['U', 0],['K', 0]]
    For $i = 0 To 16
    If ($Get_B_in_Z[$i][0] = $B_in_Z) Then Return $Get_B_in_Z[$i][1]
    Next
    EndFunc ;==>B_in_Z

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

    Func _GUICtrlSetData(Const $sIndex, Const $sIst, Const $sSol)
    GUICtrlSetData($Ist[$sIndex], $sIst)
    GUICtrlSetData($Progress[$sIndex], ($sIst * 100) / $sSol)
    Return GUICtrlSetData($ProgressLabel[$sIndex], ' ' & Round(($sIst * 100) / $sSol) & '%')
    EndFunc ;==>_GUICtrlSetData

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

    If (@OSArch = 'X86') Then $Trans = 10
    For $i = 0 To 255 Step +$Trans
    WinSetTrans($Form[0], '', $i)
    Next

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

    While True * Sleep(10)
    WEnd

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

    Func GUI_Control_HIDE()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    EndFunc ;==>GUI_Control_HIDE

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

    Func GUI_HIDE()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    EndFunc ;==>GUI_HIDE

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

    Func GUI_Control_Exit()
    Exit
    EndFunc ;==>GUI_Control_Exit

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

    Func GUI_Exit()
    Exit
    EndFunc ;==>GUI_Exit

    [/autoit]


    Lg Kleiner

  • Hallo!

    Habe das Script soeben ausgeführt.
    Doch ich kann keine Beeinträchtigung feststellen. Wenn ich vertikal scrolle (schnell oder langsam) passiert genau das, was ich erwarte: Die Feldpositionen ändern sich.

    Bei mir läuft das flüssig. Hast Du einen älteren Rechner oder eine schwache Grafikkarte?

    Lg Veronesi

  • Hi!

    Okay
    Naja "das kann man sagen" Pentium 4 Ati 254 Aspeicher 4 G Win7 x64 davon ab auf XP x86 läut es genauso auch wenn ich die Win 95 als Grafik laufen lasse?
    Laut Rechner ist das kein Problem zu verarbeiten, oder seh das falsch?
    Ich denke nicht da laufen ganz andere sachen sauber!

    Komisch??

    LG Kleiner

  • Hi!

    Habe den Code noch schnell eben auf dem Leppi laufen lassen, 8| es liegt an mein Rechner!
    Egal da mach ich mir Später gedanken drum " ist aber schön darüber gesprochen zu haben" :D

    Danken! ;)


    Lg kleiner