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

Beiträge von Ghostleader

  • Zweite ListView in Funktion einbauen

    • Ghostleader
    • 5. September 2014 um 10:39

    Hallo zusammen,

    ich möchte gern das unter einer bestimmten Voraussetzung eine Zweite Listview bei Aufruf dieser Funktion erscheint und wenn diese eben nicht gegeben ist, nur die Standard Listview wie hier in der Funktion bereits vorhanden.

    Hier erstmal der Funktionscode:

    Spoiler anzeigen
    [autoit]

    Func INSTANZEN()
    $TEMP[15] = GUICtrlCreateLabel(TRANSLATION("Instanzen"), 10, 20, 385, 20, $SS_CENTER)
    GUICtrlSetFont($TEMP[15], 12, 800)
    GUICtrlSetColor($TEMP[15], 3300)
    $LISTVIEW = GUICtrlCreateListView(TRANSLATION("Name") & " |" & TRANSLATION("Typ") & " ", 10, 45, 385, 550, $LVS_REPORT)
    GUICtrlSendMsg($LISTVIEW, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($LISTVIEW, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    _GUICTRLLISTVIEW_SETCOLUMN($LISTVIEW, 0, TRANSLATION("Name"), -1, 2)
    _GUICTRLLISTVIEW_SETCOLUMN($LISTVIEW, 1, TRANSLATION("Typ"), -1, 2)
    For $I = 1 To $ANZINSTANZEN
    $CLICKINSTANZEN[$I] = GUICtrlCreateListViewItem($INSTANZEN[$I][0] & "|" & $INSTANZEN[$I][3], $LISTVIEW)
    If $JUMPAKTIV = 1 And $INSTANZEN[$I][0] = $SPRUNGOBJ Then $JUMPTEMP = $CLICKINSTANZEN[$I]
    Next
    Global $B_DESCENDING[_GUICTRLLISTVIEW_GETCOLUMNCOUNT($LISTVIEW)]
    $TEMP[0] = GUICtrlCreateLabel(" ", 10, 45, 385, 549)
    GUICtrlSetState(-1, $GUI_DISABLE)
    _GUICTRLLISTVIEW_SETCOLUMNWIDTH($LISTVIEW, 0, 250)
    _GUICTRLLISTVIEW_SETCOLUMNWIDTH($LISTVIEW, 1, 130)
    _GUICtrlListView_SimpleSort($LISTVIEW, $B_DESCENDING, 1)
    EndFunc

    [/autoit]

    Also, damit die zweite Listview erscheinen darf, muss eine Übereinstimmung mit dem Namen ( Zeile [0] der Data Datei ) mit der ( Zeile [7] der Data Datei ) vorhanden sein.
    Gibt es keine Übereinstimmung, so soll nur die eben in diesem Code schon vorhandene Listview erscheinen und ihre Aufgabe erfüllen.
    Die Zweite Listview soll lediglich zwei Zeilen aus der Data auslesen und darstellen nichts weiter. Also nicht wie die hier Aufgeführte noch zusätzliche Aufgaben übernehmen!
    Ausgelesen wird der Name hier in dieser Zeile

    [autoit]

    $CLICKINSTANZEN[$I] = GUICtrlCreateListViewItem($INSTANZEN[$I][0] & "|" & $INSTANZEN[$I][3], $LISTVIEW)

    [/autoit]

    Ich hoffe mir kann hierbei jemand helfen oder gar am besten ein Beispiel erstellen. Ich bedanke mich schon mal im Voraus.

    Mfg Ghostleader

  • ID Programm zeigt Fehler bei Go

    • Ghostleader
    • 20. August 2014 um 14:18

    Hallo Andy,

    habe es mal bei mir getestet und folgendes kam dabei raus:

    [autoit]

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Ghostleader\Desktop\testen IDs.au3" /UserParams
    +>14:16:03 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>14:16:03 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "C:\Users\Ghostleader\Desktop\testen IDs.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    @@ Debug(4) : $a = D
    >Error code: 0
    @@ Debug(8) : $file1 = 1
    >Error code: 0
    @@ Debug(12) : $files = Datas mit ID
    >Error code: 0
    @@ Debug(12) : $files = Datas ohne ID
    >Error code: 0
    @@ Debug(12) : $files = Datenbanktool
    >Error code: 0
    @@ Debug(12) : $files = Datenbanktool neu
    >Error code: 0
    @@ Debug(12) : $files = Debuger Neuere Version
    >Error code: 0
    +>14:16:03 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 0.716

    [/autoit]

    Habe allerdings die Pfadangabe von E auf O angepasst.

    Mfg Ghostleader

  • ID Programm zeigt Fehler bei Go

    • Ghostleader
    • 20. August 2014 um 12:30

    Hallo,

    also Datein sind mehrere drin extra nochmal´s nachgeschaut..

    Ja es soll die Datein auflisten und mir dann die Möglichkeit geben eine dieser auszuwählen, welche er eben dann nach Vorgabe ändern soll.

    Mfg

  • ID Programm zeigt Fehler bei Go

    • Ghostleader
    • 20. August 2014 um 11:02

    Hallo Bugfix,

    also als Fehler zeigt er mir nun

    Spoiler anzeigen
    [autoit]

    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>10:48:22 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "C:\Users\Ghostleader\Desktop\Test ID einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    @error: 1
    +>10:48:22 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 0.707

    [/autoit]


    @error: 1 besagt laut Hilfe = Pfad nicht gefunden oder ungültig
    Dies verstehe ich nicht, denn genau dieser Pfad O:\Datas ohne ID ist ja vorhanden.

    Was soll das Tool eigentlich tun?

    Es soll auf den genanten Pfad zugreifen, öffnen und mich dann eine sich darin befindliche Data auswählen lassen.
    Ist dies geschehen, so soll es in die Horizontale Leiste vor das Symbol * (Zeile 2) die Buchstaben ID setzen und in alle Vertikalen Zeilen vor das Symbol * ein - einsetzen und eben anschliessend in einen Ordner
    namens O\Datas mit ID wieder ablegen, der ebenfalls genau so vorhanden ist.

    Aufbau Beispiel einer dieser .data :

    Spoiler anzeigen
    [autoit]

    2
    Name,exe,anzahl,*
    Testeintrag
    test
    15
    *
    Testeintrag 2
    testen
    156
    *

    [/autoit]

    Ich weiß wirklich nicht, warum er bei der Pfad Prüfung dieses Problem hat.

    Mfg Ghostleader

  • ID Programm zeigt Fehler bei Go

    • Ghostleader
    • 20. August 2014 um 07:36

    Hallo zusammen,

    danke erstmal für eurer beider Antworten.

    Ich habe wie angeraten mal If Not @error Then und nun bringt er folgendes:

    Spoiler anzeigen

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "O:\Datas mit ID\Id einfügen.au3" /UserParams
    +>07:31:29 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>07:31:29 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "O:\Datas mit ID\Id einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    +>07:31:30 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 1.616
    cannot open O:\AutoIt\AutoIt3\SciTE\Lua\InsertFunctionHeader.lua: No such file or directory
    >Lua: error occurred while loading startup script


    Ich weiss nicht was er mit diesem Lua Script von mir will. Auch wenn ich dieses entferne bringt er den selben Fehler.

    Üprigens liegt die Data die er öffnen soll in genau dem angegebenem Pfad, sowie auch das Script.

    Mfg Ghostleader

  • ID Programm zeigt Fehler bei Go

    • Ghostleader
    • 19. August 2014 um 11:33

    Hallo zusammen,

    habe hier ein kleines Tool um in einige meiner Datas noch eine Zeile und einen Eintrag oben einzufügen.
    Wenn ich es nun starten will kommt ein Fehler, welchen ich selber irgendwie nicht raus bekomme.

    Code:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $List = _FileListToArray("E:\Datas ohne ID", "*", 1)
    For $i = 1 To $List [0]
    $hFile = FileOpen("E:\Datas ohne ID" & $List[$i], 0)
    $Read = FileRead($hFile)
    FileClose($hFile)
    $hFile = FileOpen("E:\Datas mit ID" & $List[$i], 2)
    $tmpsplit = StringSplit($Read, @CRLF)
    $Counter = 1
    For $k = 1 To $tmpsplit[0]
    If $tmpsplit[$k] = "" Then ContinueLoop
    If StringRight($tmpsplit[$k], 2) = ",*" Then
    $tmpsplit[$k] = StringTrimRight($tmpsplit[$k], 1)&"ID,*"
    EndIf
    If $tmpsplit[$k] = "*" Then
    $tmpsplit[$k] = StringFormat("%05d", $Counter) & @CRLF & "*"
    $Counter += 1
    EndIf
    FileWrite($hFile, $tmpsplit[$k]&@CRLF)
    Next
    FileClose($hFile)
    Next

    [/autoit]

    Fehler:

    Spoiler anzeigen
    [autoit]

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "G:\Datas mit ID\Id einfügen.au3" /UserParams
    +>11:32:05 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>11:32:06 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3_x64.exe "G:\Datas mit ID\Id einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    G:\Datas mit ID\Id einfügen.au3 (10) : ==> Subscript used with non-Array variable.:
    For $i = 1 To $List [0]
    For $i = 1 To $List ^ ERROR
    ->11:32:06 AutoIt3.exe ended.rc:1
    >Exit code: 1 Time: 0.915

    [/autoit]

    Könnte bitte wer drüber sehen und wenn möglich mir den Fehler benennen / beheben Danke.

    Mfg Ghostleader

  • Listview sortieren nach zweiter Spalte

    • Ghostleader
    • 17. August 2014 um 17:21

    Hallo nochmal,

    das angeben der Spalte welche sortiert werden klappt zwar, aber nicht mit dem gewünschten Effect der Größe nach.

    Ausgelesen wird in einer .data In dieser gibt es eine Zeile die die Prozentzahlen an gibt, entweder 25% oder 50% oder 75% oder 100%.

    Eigentlich sollte er so auslesen: 25,25,25 --> 50,50,50 --> 75,75,75 --> 100,100,100. Das nur ein Beispiel können auch mehr Items sein.
    Momentan liest er so aus: 100,100,100,25,25,25,75,75,75,50,50,50 :S

    Kann man das noch ändern?

    Mfg Ghostleader

  • Listview sortieren nach zweiter Spalte

    • Ghostleader
    • 17. August 2014 um 14:10

    Hallo zusammen,

    BugFix

    Vielen lieben Dank für dein Beispiel, hat super funktioniert mit:

    [autoit]

    _GUICtrlListView_SimpleSort($LISTVIEW, $B_DESCENDING, 1)

    [/autoit]

    Tweaky

    Zitat

    Ist bei mehrspaltigen ListViews der Parameter 2 und 3 eigentlich das gleiche


    Wenn ich das richtig verstehe, dann ist es das nicht. Das sind die Parameter die angeben, nach welcher Spalte sich das Sortieren richten soll, in meinem Fall 1 weil die zweite Spalte ja Parameter 1 hat.
    In BugFix seinem Beispiel 2, da ja seine Sortierung nach der dritten Spalte geht und du aber bei den Spalten angaben immer mit 0 beginnst.

    Sollte ich mich Irren dann bitte Korrigieren.

    Nichts desto trotz Thema gelöst vielen dank BugFix.

    Mfg Ghostleader

  • Listview sortieren nach zweiter Spalte

    • Ghostleader
    • 17. August 2014 um 12:22

    Hallo zusammen,

    wie die Überschrift schon sagt, würde ich gern die Einträge meiner Listview beim aufrufen dieser nach der Spalte zwei sortieren lassen, nur leider bekomme ich das nicht hin bzw. weiß ich nicht, wie ich das anstelle. Die Listview zum sortieren zu bringen ist ja kein Problem, jedoch macht sie dieses Momentan immer über die erste nicht wie ich es gerne hätte über die zweite.

    Ausschnitt:

    Spoiler anzeigen
    [autoit]

    Func SCHMUCK()
    $Z = 0
    If $M = 3 Then TITELLEISTE(TRANSLATION("Adelsschmuck"), 1, 410)
    If $M = 22 Then TITELLEISTE(TRANSLATION("Seeschlachtschmuck"), 1, 410)
    If $M = 23 Then TITELLEISTE(TRANSLATION("Redeschmuck"), 1, 410)
    If $M = 814 Then TITELLEISTE(TRANSLATION("Jobschmuck See"), 1, 410)
    If $M = 815 Then TITELLEISTE(TRANSLATION("Jobschmuck Land"), 1, 410)
    If $M = 816 Then TITELLEISTE(TRANSLATION("Kolonieschmuck See"), 1, 410)
    If $M = 817 Then TITELLEISTE(TRANSLATION("Kolonieschmuck Land"), 1, 410)
    If $M = 818 Then TITELLEISTE(TRANSLATION("Skillschmuck"), 1, 410)
    IF $M = 819 THEN TITELLEISTE(TRANSLATION("Ring"),1,410)
    IF $M = 820 THEN TITELLEISTE(TRANSLATION("Halskette"),1,410)
    IF $M = 821 THEN TITELLEISTE(TRANSLATION("Assistance"),1,410)
    $LISTVIEW = GUICtrlCreateListView(TRANSLATION("Schmuckname") & " |" & TRANSLATION("Stufe") & " ", 10, 50, 410, 580, $LVS_REPORT)
    GUICtrlSendMsg($LISTVIEW, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($LISTVIEW, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    _GUICTRLLISTVIEW_SETCOLUMN($LISTVIEW, 1, TRANSLATION("Stufe"), -1, 1)
    $ZAHL = 0
    For $I = 1 To $ANZSCHMUCK
    IF ($SCHMUCK[$I][3] = "Adelsschmuck" And $M = 3) OR ($SCHMUCK[$I][3] = "Seeschlachtschmuck" And $M = 22) OR ($SCHMUCK[$I][3] = "Redeschmuck" And $M = 23) OR ($SCHMUCK[$I][3] = "Jobschmuck See" And $M = 814) OR ($SCHMUCK[$I][3] = "Jobschmuck Land" And $M = 815) OR ($SCHMUCK[$I][3] = "Kolonieschmuck See" And $M = 816) OR ($SCHMUCK[$I][3] = "Kolonieschmuck Land" And $M = 817) OR ($SCHMUCK[$I][3] = "Skillschmuck" And $M = 818) OR ($SCHMUCK[$I][3]="Ring" AND $M = 819) OR ($SCHMUCK[$I][3]="Halskette" AND $M = 820) OR ($SCHMUCK[$I][3]="Assistance" AND $M= 821) OR ($SCHMUCK[$I][3] <> "Seeschlachtschmuck" And $SCHMUCK[$I][3] <> "Redeschmuck" And $SCHMUCK[$I][3] <> "Jobschmuck See" And $SCHMUCK[$I][3]<> "Jobschmuck Land" And $SCHMUCK[$I][3]<> "Kolonieschmuck See" And $SCHMUCK[$I][3]<> "Kolonieschmuck Land" And $SCHMUCK[$I][3]<> "Skillschmuck" And $SCHMUCK[$I][3]<>"Ring" AND $SCHMUCK[$I][3]<>"Halskette" AND $SCHMUCK[$I][3]<>"Assistance" And $SCHMUCK[$I][3] <> "Adelsschmuck" And $M = 3) Then ; $SCHMUCK[$I][3] die [3] gibt die Zeile an, wo er welchen Schmuck ausließt
    $Z = $Z + 1
    $CLICKSCHMUCK[$Z][0] = GUICtrlCreateListViewItem($SCHMUCK[$I][0] & "|" & $SCHMUCK[$I][1], $LISTVIEW)
    $CLICKSCHMUCK[$Z][1] = $I
    If $JUMPAKTIV = 1 And $SCHMUCK[$I][0] = $SPRUNGOBJ Then $JUMPTEMP = $CLICKSCHMUCK[$Z][0]
    EndIf
    Next
    $TEMP[33] = GUICtrlCreateLabel(" ", 10, 50, 410, 580)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Global $B_DESCENDING[_GUICTRLLISTVIEW_GETCOLUMNCOUNT($LISTVIEW)]
    _GUICTRLLISTVIEW_SETCOLUMNWIDTH($LISTVIEW, 0, 330)
    $SCHMUCKWAHL = $Z
    EndFunc

    [/autoit]


    Könnte mir bitte wer sagen wie ich hier die Auswahl $LVS_SORTASCENDING dann auf die zweite Spalte bekomme?

    Mfg Ghostleader

  • LUA Script zum erstellen eines Funktionsheaders.

    • Ghostleader
    • 3. August 2014 um 20:44

    Hallo Raupi,

    ja ich weiss das Thema ist echt schon alt, aber währe echt super wenn du das mal aktualisierst hier denn das Script währe schon toll aber so geht es nicht.

    Unter anderem weil in der SciTEUser.properties nicht das drin drin steht was du angibst sondern nur

    Spoiler anzeigen

    import au3.UserUdfs
    import au3.keywords.user.abbreviations

    mehr nicht.

    Auch verstehe ich nicht ganz was du meinst vielleicht müsst ihr die 83 anpassen wo und warum denn?

    Habe es jetzt trotzdem mal alles eingefügt und abgespeichert, aber wenn ich die Tastenkombination drücke sagt die Console

    Spoiler anzeigen

    cannot open O:\AutoIt\AutoIt3\SciTE\Lua\InsertFunctionHeader.lua: No such file or directory
    >Lua: error occurred while loading startup script

    .

    Währe super wenn du mal über dein Skript drüber schnulpst und es gegebenfalls anpasst.

    Mfg Ghostleader

  • Standard GUI Scrollbar machen

    • Ghostleader
    • 1. August 2014 um 22:00

    Hallo zusammen,

    Oscar
    Ich habe mir das mal angeschaut und muss sagen ist ein schönes Script und vielleicht auch einbaubar bzw. habe ich schon ne Idee für ein anderes Tool, wo das echt super hilft.



    Aber ich habe mich nun doch zu einer (GUI n GUI) Variante entschieden, da diese denke ich hier einfacher einzubringen ist und besser aussieht.

    Hier nun alles was ich dazu gefunden habe.
    Das Script was damit geht:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiScroll.au3>

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

    ;~ Global Const $WM_MOUSEWHEEL = 0x020A

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

    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    GUIRegisterMsg($WM_MOUSEWHEEL, "_Mausrad")

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

    Dim $idRadio2[100]
    #Region ### START Koda GUI section ### Form=

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

    $Form1 = GUICreate("Form1", 441, 441, 508, 269)
    $hGroup2 = GUICreate("",170,170,235,25,BitOR($WS_POPUP, $WS_BORDER, $WS_GROUP, $WS_VSCROLL, $WS_CLIPSIBLINGS),$WS_EX_MDICHILD,$Form1)
    for $i = 0 to 0
    $idRadio2[$i] = GUICtrlCreateInput("Input " & $i, 5, $i*25, 60, 18)
    Next
    GUISetState(@SW_SHOW)
    GUISwitch($Form1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Scrollbar_Create($hGroup2, $SB_VERT, $i*1)
    Scrollbar_Step(20, $hGroup2, $SB_VERT)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _Mausrad($hWnd, $Msg, $wParam)
    #forceref $Msg, $wParam

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

    If $wParam == "0x00780000" Then _Bild_rauf()

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

    If $wParam == "0xFF880000" Then _Bild_runter()

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

    EndFunc

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

    Func _Bild_runter()

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

    for $i = 0 To 4 Step 1
    WM_VSCROLL($hGroup2, 0x0, 0x00000001, 0) ;1 mal kurz nach oben Scrollen - selber Effekt wie auf den Pfeil klicken
    Next

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

    EndFunc

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

    Func _Bild_rauf()

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

    for $i = 0 To 4 Step 1
    WM_VSCROLL($hGroup2, 0x0, 0x00000000, 0) ;1 mal kurz nach unten Scrollen - selber Effekt wie auf den Pfeil klicken
    Next

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

    EndFunc

    [/autoit]


    Die dazugehörige GuiScroll.au3

    Spoiler anzeigen
    [autoit]

    #cs http://www.autoit.de/index.php?page…1092#post161092
    Functions:
    Scrollbar_Create($hWnd, $iBar, $iMax)
    Scrollbar_Scroll($hWnd, $iBar, $iPos)
    Scrollbar_GetPos($hWnd, $iBar)
    Scrollbar_Step($iStep, $hWnd=0, $iBar=0)
    #CE

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

    #Include <GuiScrollBars.au3>
    #include<GuiconstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    Global $SCROLL_AMOUNTS[1][3]
    $SCROLL_AMOUNTS[0][0] = 1
    func Scrollbar_Create($hWnd, $iBar, $iMax)

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

    Local $Size = WinGetClientSize($hWnd)

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

    If $iBar = $SB_HORZ Then
    $Size = $Size[0]
    ElseIf $iBar = $SB_VERT Then
    $Size = $Size[1]
    Else
    Return 0
    EndIf

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

    ReDim $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)+1][3]
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][0] = $hWnd
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][1] = $iBar
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][2] = $SCROLL_AMOUNTS[0][0]

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

    _GUIScrollBars_EnableScrollBar($hWnd, $iBar)
    _GUIScrollBars_SetScrollRange($hWnd, $iBar, 0,$iMax-1)
    _GUIScrollBars_SetScrollInfoPage($hWnd, $iBar, $Size)

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

    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    Return $iMax

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

    EndFunc
    Func Scrollbar_GetPos($hWnd, $iBar)

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

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

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

    Return DllStructGetData($tSCROLLINFO, "nPos")

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

    EndFunc
    Func Scrollbar_Scroll($hWnd, $iBar, $iPos)

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

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

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

    $iCurrentPos = DllStructGetData($tSCROLLINFO, "nPos")

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

    DllStructSetData($tSCROLLINFO, "nPos", $iPos)
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $iBar, $tSCROLLINFO)

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

    If $iBar = $SB_VERT Then

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

    $iRound = 0

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

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

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

    If Not $iRound Then Return 0

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

    _GUIScrollBars_ScrollWindow($hWnd, 0, Round(($iCurrentPos-$iPos)/$iRound)*$iRound)
    ElseIf $iBar = $SB_HORZ Then

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

    $iRound = 0

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

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

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

    If Not $iRound Then Return 0

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

    _GUIScrollBars_ScrollWindow($hWnd, Round(($iCurrentPos-$iPos)/$iRound)*$iRound, 0)
    Else
    Return 0
    EndIf

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

    Return 1

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

    EndFunc
    Func Scrollbar_Step($iStep, $hWnd=0, $iBar=0)

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

    If not $hWnd or Not $iBar Then

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

    $SCROLL_AMOUNTS[0][0] = $iStep
    Return 1

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

    EndIf

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

    $iID = 0

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

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $iBar Then
    $iID = $i
    ExitLoop
    EndIf
    Next

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

    If Not $iID Then Return 0

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

    $SCROLL_AMOUNTS[$iID][2] = $iStep

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

    Return 1

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

    EndFunc
    Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)

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

    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos
    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

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

    $iRound = 0

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

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

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

    if Not $iRound Then Return $GUI_RUNDEFMSG

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

    Switch $nScrollCode
    Case $SB_TOP ; user clicked the HOME keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Min)
    Case $SB_BOTTOM ; user clicked the END keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Max)
    Case $SB_LINEUP ; user clicked the top arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)
    Case $SB_LINEDOWN ; user clicked the bottom arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)
    Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)
    Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)
    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

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

    ;~ // Set the position and then retrieve it. Due to adjustments
    ;~ // by Windows it may not be the same as the value set.
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")

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

    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, 0, $yPos - $Pos)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_VSCROLL
    Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)

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

    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos
    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

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

    $iRound = 0

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

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
    If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
    $iRound = $SCROLL_AMOUNTS[$i][2]
    EndIf
    Next

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

    if Not $iRound Then Return $GUI_RUNDEFMSG

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

    Switch $nScrollCode
    Case $SB_TOP ; user clicked the HOME keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Min)
    Case $SB_BOTTOM ; user clicked the END keyboard key
    DllStructSetData($tSCROLLINFO, "nPos", $Max)
    Case $SB_LINEUP ; user clicked the top arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)
    Case $SB_LINEDOWN ; user clicked the bottom arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)
    Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)
    Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)
    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

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

    ;~ // Set the position and then retrieve it. Due to adjustments
    ;~ // by Windows it may not be the same as the value set.
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")

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

    If ($Pos <> $yPos) Then
    _GUIScrollBars_ScrollWindow($hWnd, $yPos - $Pos, 0)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_HSCROLL

    [/autoit]


    Davon habe ich mir nun einiges heraus geholt und erstmal in die Funktion Daten laden eingebaut um es zu testen.
    Funktioniert auch alles ganz gut, jedoch funktioniert das scrollen selber nicht und ich habe nen Verdacht woran es liegt, aber bekomme es net gelöst.

    In dieser Funktion, geht die erste nicht bei mir,

    [autoit]

    Scrollbar_Create($hGroup2, $SB_VERT, $i*25)
    Scrollbar_Step(20, $hGroup2, $SB_VERT)

    [/autoit]


    da ich ja nicht wie in dem original Script das drin habe da ich es net benutze:

    [autoit]

    for $i = 0 to 0
    $idRadio2[$i] = GUICtrlCreateInput("Input " & $i, 5, $i*25, 60, 18)

    [/autoit]


    Ich hänge mal mein verändertes Script in den Anhang, die Test.data zum laden im ersten Post.

    Veränderte Zeilen: 27 - 34 / 387 - 389 / 555 - 580

    Ich hoffe das mir diesbezüglich wer weiterhelfen kann. Ich möchte nur das die zweite GUI scrollbar ist und nichts einfügen.

    Mfg Ghostleader

  • Standard GUI Scrollbar machen

    • Ghostleader
    • 1. August 2014 um 13:32

    Hallo nochmal,

    ist denn hier wirklich niemand da  ?( der mir bei diesem Problem helfen kann / möchte  ;(  ;(  ;(


    Mfg

  • Standard GUI Scrollbar machen

    • Ghostleader
    • 31. Juli 2014 um 21:34

    Hallo BugFix,

    ich sage dir ehrlich, ich weis nicht wie du das gerade meinst denn ich bin da leider nicht so bewandert wie du  :wacko: .

    Mir würde es echt schon reichen wenn die Gui Scrollbar ist, nur das ich eben leider nicht weis wie  ;(. 


    Mfg

  • Standard GUI Scrollbar machen

    • Ghostleader
    • 31. Juli 2014 um 20:54

    Hallo Oscar,

    es geht nicht nur um anzeigen, sondern auch um bearbeiten ( Neue Einträge machen) und neue Datenbanken erstellen und befüllen.
    Bin mir nicht sicher, aber ich glaube nicht das dies mit einer Listview möglich ist oder doch?

    Mfg

  • Standard GUI Scrollbar machen

    • Ghostleader
    • 30. Juli 2014 um 19:24

    Hallo zusammen,

    ich würde gerne meine Standard Gui Scrollbar machen, da ich nur eine benutze soll es eben die Haupt Gui sein

    Mit dem Tool selbst erstelle und bearbeite ich Datenbanken von einem unserer Tools. Mittlerweile ist es aber so, das die Datensätze immer mehr werden, weshalb die Gui scrollbar werden muss, damit ich auch die Datensätze weiter unten eintragen und sehen / bearbeiten kann.

    Ich habe sowohl den Code des Tool´s als auch eine Test Datenbank als Anhang beigefügt welche ich als rar speichern musste, da die Endung Data hier nicht erlaubt ist.
    In der Testdatenbank kann man wenn man diese mit dem Tool öffnet nur bis Zeile 33 lesen (steht jetzt kuilöp*), es sind aber eigentlich 35 denn löp und * sind in der Datenbank selber zwei voneinander getrennte Zeilen. Das Tool schiebt diese aber zusammen, da ja kein scrollen möglich ist.

    Ich habe mir hierzu auch schon so einiges angeschaut, unter anderem auch:
    https://autoit.de/index.php?page…chen#post162431


    deswegen habe ich auch im Code die #include <GuiScroll.au3> , aber ich habe es einfach nicht hin bekommen dies umzubauen auf mein Script.
    In dem anderen Thema wird ja auch mit mehreren Gui´s gearbeitet was ja hier nicht der Fall ist.
    Falls das wer umgebaut bekommen würde währe das natürlich auch super.

    Ich hoffe mir kann wer bei diesem Problem weiter helfen.

    Mfg Ghostleader

    Dateien

    Datenbanktool test.au3 20,54 kB – 320 Downloads
  • WinSetOnTop funktioniert nicht unter Win.8.1

    • Ghostleader
    • 1. Januar 2014 um 13:21

    Hallo zusammen,

    erst einmal ein gesundes neues Jahr für alle und danke an euch zwei für eure bisherige Hilfe.

    misterspeed
    Habe mir das auf der Seite mal angesehen, aber einerseits sehe ich da net recht durch und anderer seits müste ja, wenn das so funktioniert jeder User für sich machen und das jedem nahe zu bringen ist ja auch net gerade einfach.

    @Krabat
    wenn du das tool offen hast und es vor deinem Arbeitsplatz ist und du wo anders hin klickst, ist denn das Tool dann trotzdem noch vor dem Arbeitsplatz Fenster?
    Diese kleine Gui über deinem Windows Explorer soll dann im Spiel sichtbar sein, wenn die große Haupt GUI minimiert ist, um diese dann darüber wieder zu maximieren.
    Eigentlich soll die kleine nur sichtbar sein wenn das spiel aktiviert ist, jedoch funktioniert das irgendwie nicht richtig denn sie ist immer da wenn das Programm an ist, auch wenn das spiel minimiert ist.
    Ich denke mal es liegt daran, das das spiel im Vollbildmodus nicht mehr als Fenster angesehen wird.
    Normalerweise ist im Hintergrund bei beiden Gui´s ein Bild, dann sehen die Farben besser erkennbar aus.

    Mfg Ghostleader

    Nachtrag:
    Also mein Tester berichtet mir gerade , das es wirklich nur nicht im Vordergrund bei dem Spiel bleibt, aber bei allen anderen geöffneten Fenstern (Windowsseitig) bleibt es im Vordergrund.

  • WinSetOnTop funktioniert nicht unter Win.8.1

    • Ghostleader
    • 28. Dezember 2013 um 16:33

    Hallo zusammen,

    mir wurde berichtet das das Tool was unten im Spoiler ist nicht richtig unter Windows 8.1 funktioniert.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=data\Backround\bbo.ico
    #AutoIt3Wrapper_Outfile=Handelstool.exe
    #AutoIt3Wrapper_Outfile_x64=Handelstool.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_UseX64=y
    #AutoIt3Wrapper_Res_Fileversion=1.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListviewConstants.au3>
    #include <EditConstants.au3>
    #include <ListboxConstants.au3>
    #include <INet.au3>

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

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("WarenHandelsTool", 750, 330, 520, 10)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm1")

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

    $PicPet = GUICtrlCreatePic(@Scriptdir & "\data\Backround\Stormdevil.tgx", 0, 0, 750, 330)
    GUICtrlSetState($PicPet, $GUI_DISABLE)
    WinSetOnTop($Form1, "", 1)

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

    Global $version = "1.1"

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

    Global $fileName = "data\ini\StaedteHandelstool.ini"
    Global $fileNameWare = "data\ini\Waren.ini"
    Dim $towns = getTowns()
    Dim $ware = getWare()

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

    $titel = "Neue Runde es ist genug Zeit"
    $titel1 = "Achtung, die Zeit wird knapp"
    $DauerStd = 1
    $DauerMin = 12
    $DauerSek = 00

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

    Global $DauerGesammt = (60 * 60 * $DauerStd) + (60 * $DauerMin) + $DauerSek

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

    Global $comboAmountWare = 1
    Global $comboAmount = 10
    Dim $combosLeft[$comboAmount][2]
    Dim $combosRight[$comboAmount]
    Dim $comboware [$comboAmountWare][2]
    Dim $comboware1 [$comboAmountWare][2]

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

    Opt("GUIOnEventMode", 1)
    $Label1 = GUICtrlCreateLabel("", 535, 113, 205, 22)
    GUICtrlSetData($Label1, StringFormat("%02d Std %02d Min %02d Sek", $DauerStd, $DauerMin, $DauerSek))
    GUICtrlSetFont(-1, 14, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($Label1, 0xF0F8FF)
    $Button1 = GUICtrlCreateButton("Timer-Start", 585, 146, 100, 21, $BS_CENTER)
    GUICtrlSetOnEvent(-1, "ButtonTimer1")
    $Button2 = GUICtrlCreateButton("Timer-Stop/Reset", 585, 146, 100, 21, $BS_CENTER)
    GUICtrlSetOnEvent(-1, "ButtonTimer2")
    GUICtrlSetState($Button2, $GUI_HIDE)
    $Button3 = GUICtrlCreateButton("Alles Löschen", 585, 300, 100, 21, $BS_CENTER)
    GUICtrlSetOnEvent(-1, "GuiLoeschen")

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

    Global $hList = GUICtrlCreateList("", 528, 25, 210, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetOnEvent($hList, "itemClicked")
    GUICtrlSetState($hList, $GUI_HIDE)

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

    Global $wList = GUICtrlCreateList("", 542, 211, 180, 75, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetState($wList, $GUI_HIDE)

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

    GUICtrlCreateLabel("Von Stadt", 20, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0xFFE4C4)
    GUICtrlCreateLabel("Nach Stadt", 420, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0x000000)

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

    Global $currentLabel

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

    #region Combos Stadtauswahl
    Local $abstand = 30
    For $i = 0 To $comboAmount - 1
    $combosLeft[$i][0] = createCombo(20, 25 + $i * $abstand, 95, 25)
    $combosLeft[$i][1] = GUICtrlCreateLabel("", 118, 27 + $i * $abstand, 300, 30, $SS_CENTER)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 0x000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $combosRight[$i] = createCombo(420, 25 + $i * $abstand, 95, 25)
    GUICtrlSetOnEvent($combosLeft[$i][0], "comboChanged")
    GUICtrlSetOnEvent($COMBOSRIGHT[$I], "DummyChange") ;===> Setzt bei klick Focus auf die Combo $COMBOWARE
    Next
    #endregion Combos Stadtauswahl

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

    #region Combos Warenauswahl
    Local $abstand = 30
    For $i = 0 To $comboAmountWare - 1
    $comboware[$i][0] = createComboo(523, 175 + $i * $abstand, 220, 25)
    $comboware1[$i][1] = GUICtrlCreateLabel("", 250, 10 + $i * $abstand, 100, 15, $SS_LEFT)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetOnEvent($comboware[$i][0], "comboChangedd")
    Next
    #endregion Combos Warenauswahl

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

    GUISetState(@SW_SHOW)

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

    ; Opt("GUIOnEventMode", 1)
    $Form2 = GUICreate("Form2", 50, 43, 10, 220, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm2")
    $PicPet1 = GUICtrlCreatePic(@Scriptdir & "\data\Backround\Handelstoolpic.tgx", 0, 0, 50, 43)
    GUICtrlSetState($PicPet1, $GUI_DISABLE)
    GUICtrlCreateButton("Handel",5,13,40,18)
    GUICtrlSetOnEvent(-1, "minimizeForm2")
    GUISetState(@SW_SHOW)
    GUISetState(@SW_MINIMIZE)

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

    #region Function Updatecheck
    InetGet("http://www.bboalmanach.de/HandelsToolUpdate/update.txt", @Scriptdir & "\data\update.txt", 1, 0)
    $file = FileOpen(@Scriptdir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    If $line = $version Then
    FileClose($file)
    Else
    $fg = MsgBox(20, "Es ist eine neue Version vorhanden!", "Möchtest du jetzt Updaten?")
    If $fg = 6 Then
    InetGet("http://www.bboalmanach.de/HandelsToolUpdate/updatetest/HandelsTool.exe", @ScriptDir & "\Update\HandelsTool.exe", 1, 0)
    MsgBox(1, "Update abgeschlossen", "Aktuelle Version (" & $version & ")", 2)
    FileClose($file)
    Run(@ScriptDir & "\Update\HandelsTool.exe")
    Sleep(1500)
    Exit
    EndIf
    EndIf

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

    #endregion Function Updatecheck

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Sleep(4000)
    EndSwitch
    WEnd

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

    #region Func Combos Stadt
    Func close()
    _log("Closing programm")
    Exit
    EndFunc

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

    Func minimizeForm1()
    GUISetState(@SW_RESTORE, $Form2)
    WinSetOnTop($Form2, "", 1)
    EndFunc

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

    Func minimizeForm2()
    GUISetState(@SW_RESTORE, $Form1)
    GUISetState(@SW_MINIMIZE, $Form2)
    WinSetOnTop($Form1, "", 1)
    EndFunc

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

    Func DummyChange();Hier wird der Focus auf die Combo $COMBOWARE[0][0] gesetzt wenn eine Auswahl in den Combos Nach Stadt ausgewählt wurde
    GUICtrlSetState($WLIST, $GUI_FOCUS)
    EndFunc ;==>DummyChange

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

    Func getTowns()
    _log("Reading section names..")
    Local $sectioNames = IniReadSectionNames($fileName)

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

    If (@error) Then
    Local $errorMsg = "Could not open file '" & $fileName & "'."
    _log($errorMsg, True)
    MsgBox(0, "Error", $errorMsg)
    Return -1
    EndIf

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

    _log("Read " & $sectioNames[0] & " section names.")
    Return $sectioNames
    EndFunc

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

    Func getItems($town)
    Local $items = IniReadSection($fileName, $town)
    If (@error) Then
    Local $errorMsg = "Could not read section '" & $town & "'."
    _log($errorMsg, True)
    MsgBox(0, "Error", $errorMsg)
    Return -1
    EndIf

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

    Local $itemAmount = $items[0][0]

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

    _log("Found '" & $itemAmount & "' items for town '" & $town & "'.")
    Local $availableItems
    For $i = 1 To $itemAmount
    $availableItems &= $items[$i][0]
    If ($i < $itemAmount) Then $availableItems &= "|"
    Next
    Return $availableItems
    EndFunc
    #endregion Func Combos Stadt

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

    #region Func Combos Waren
    Func closet()
    _loge("Closing program")
    Exit
    EndFunc

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

    Func getWare()
    _loge("Reading section names..")
    Local $sectioNamesWare = IniReadSectionNames($fileNameWare)
    If (@error) Then
    Local $errorMsg = "Could not open file '" & $fileNameWare & "'."
    _loge($errorMsg, True)
    MsgBox(0, "Error", $errorMsg)
    Return -1
    EndIf

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

    _loge("Read " & $sectioNamesWare[0] & " section names.")
    Return $sectioNamesWare
    EndFunc

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

    Func getWareitems($ware)
    Local $itemss = IniReadSection($fileNameWare, $ware)
    If (@error) Then
    Local $errorMsg = "Could not read section '" & $ware & "'."
    _loge($errorMsg, True)
    MsgBox(0, "Error", $errorMsg)
    Return -1
    EndIf

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

    Local $itemAmountt = $itemss[0][0]

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

    _loge("Found '" & $itemAmountt & "' items for town '" & $ware & "'.")
    Local $availableItemss
    For $i = 1 To $itemAmountt
    $availableItemss &= $itemss[$i][0]
    If ($i < $itemAmountt) Then $availableItemss &= "|"
    Next

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

    Return $availableItemss
    EndFunc
    #endregion Func Combos Waren

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

    Func createCombo($x, $y, $width, $height)
    Local $string
    For $i = 2 To $towns[0]
    $string &= $towns[$i]
    If ($i < $towns[0]) Then $string &= "|"
    Next
    $combo = GUICtrlCreateCombo($towns[1], $x, $y, $width, $height, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $string, "")
    GUICtrlSetState(-1, $GUI_NOFOCUS)
    Return $combo
    EndFunc

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

    Func createComboo($x, $y, $width, $height)
    Local $string
    For $i = 2 To $ware[0]
    $string &= $ware[$i]
    If ($i < $ware[0]) Then $string &= "|"
    Next
    $combo = GUICtrlCreateCombo($ware[1], $x, $y, $width, $height, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $string, "")
    GUICtrlSetState(-1, $GUI_Focus)
    GUICtrlSetState($combo, $GUI_SHOW)
    Return $combo
    EndFunc

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

    Func _log($message, $error = False)
    If ($error) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $message & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $message & @CRLF)
    EndIf

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

    EndFunc

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

    Func _loge($message, $error = False)
    If ($error) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $message & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $message & @CRLF)
    EndIf

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

    EndFunc

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

    Func comboChanged()
    _log("Combo " & @GUI_CtrlId & " was selected")
    Local $clickedCombo = -1
    For $i = 0 To UBound($combosLeft)
    If (@GUI_CtrlId == $combosLeft[$i][0]) Then
    $clickedCombo = $combosLeft[$i][0]
    $currentLabel = $combosLeft[$i][1]
    ExitLoop
    EndIf
    Next
    If ($clickedCombo == -1) Then
    _log("Unknown combo was clicked..", True)
    Return -1
    EndIf

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

    Local $selectedItem = GUICtrlRead($clickedCombo)
    _log("Item " & $selectedItem & " was clicked.")

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

    Local $items = getItems($selectedItem)

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

    If ($items == -1) Then
    _log("Could not retreive items for town '" & $selectedItem & "'", True)
    Return -1
    EndIf

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

    GUICtrlSetData($hList, "")
    GUICtrlSetData($hList, $items)
    GUICtrlSetState($hList, $GUI_SHOW)
    GUICtrlSetState($HLIST, $GUI_FOCUS); Focus auf ListBox $HLIST setzen
    EndFunc

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

    Func itemClicked()
    If (@GUI_CtrlId <> $hList) Then
    _log("Unkown callback..", True)
    Return -1
    EndIf

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

    Local $selectedItem = GUICtrlRead($hList)
    _log("Item '" & $selectedItem & "' in List was clicked")

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

    GUICtrlSetState($hList, $GUI_HIDE)
    GUICtrlSetData($currentLabel, $selectedItem)
    EndFunc
    #endregion functions Stadt -------------------------------------------------------------------------------------------------
    Func COMBOCHANGEDDUMMY()
    GUICtrlSetState($WLIST, $GUI_FOCUS); Fokus auf Listbox $WLIST setzen
    EndFunc ;==>COMBOCHANGEDDUMMY
    Func comboChangedd()
    _loge("Combo " & @GUI_CtrlId & " was selected")
    Local $clickedComboo = -1
    For $i = 0 To UBound($comboware)
    If (@GUI_CtrlId == $comboware[$i][0]) Then
    $clickedComboo = $comboware[$i][0]
    $currentLabel = $comboware1[$i][1]
    ExitLoop
    EndIf
    Next
    If ($clickedComboo == -1) Then
    _loge("Unknown combo was clicked..", True)
    Return -1
    EndIf

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

    Local $selectedItem = GUICtrlRead($clickedComboo)
    _loge("Item " & $selectedItem & " was clicked.")

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

    Local $itemss = getWareitems($selectedItem)

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

    If ($itemss == -1) Then
    _loge("Could not retreive items for town '" & $selectedItem & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($wList, "")
    GUICtrlSetData($wList, $itemss)
    GUICtrlSetState($wList, $GUI_SHOW)
    GUICtrlSetState($WLIST, $GUI_FOCUS); Fokus auf Listbox $WLIST setzen
    EndFunc

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

    Func ButtonTimer1()
    AdlibRegister("_start", 1000)
    GUICtrlSetState($Button1, $GUI_HIDE)
    GUICtrlSetState($Button2, $GUI_SHOW)
    EndFunc

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

    Func ButtonTimer2()
    AdlibUnRegister("_start")
    Global $DauerGesammt = (60 * 60 * $DauerStd) + (60 * $DauerMin) + $DauerSek
    GUICtrlSetData($Label1, StringFormat("%02d Std %02d Min %02d Sek", $DauerStd, $DauerMin, $DauerSek))
    GUICtrlSetColor($Label1, 0xF0F8FF)
    ToolTip("Restzeit: " & _Sek2StdMinSek($DauerGesammt),175,0,$titel,1)
    GUICtrlSetState($Button1, $GUI_SHOW)
    GUICtrlSetState($Button2, $GUI_HIDE)
    EndFunc

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

    Func _start()
    GUICtrlSetData($Label1, "" & _Sek2StdMinSek($DauerGesammt))
    If $DauerGesammt > 900 Then
    GUICtrlSetColor($Label1, 0xF0F8FF)
    ElseIf $DauerGesammt < 900 Then
    GUICtrlSetColor($Label1, 0xFF0000)
    EndIf
    If $DauerGesammt > 900 Then
    ToolTip("Restzeit: " & _Sek2StdMinSek($DauerGesammt),175,0,$titel,1)
    ElseIf $DauerGesammt < 900 Then
    ToolTip("Restzeit: " & _Sek2StdMinSek($DauerGesammt),175,0,$titel1,2)
    EndIf
    $DauerGesammt = $DauerGesammt - 1
    EndFunc

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

    Func _Sek2StdMinSek($value)
    $format1 = "%02d:%02d:%02d"
    $format2 = "%02d:%02d"
    $format3 = "%02d Std %02d Min %02d Sek"
    $format4 = "%02d Std. %02d Min."

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

    $std = Floor($value / (60 * 60))
    $value = $value - ((60 * 60) * $std)
    $min = Floor($value / (60))
    $sek = $value - ((60) * $min)

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

    Return StringFormat($format3, $std, $min, $sek)
    EndFunc

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

    Func _toDo()
    AdlibUnRegister("_start") ; Timer beenden
    Exit ; Skript beenden
    EndFunc

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

    Func GuiLoeschen()
    GUIDelete($Form1)
    GUIDelete($Form2)
    Run(@ScriptDir & "\Handelstool.exe")
    _toDo()
    Run(@ScriptDir & "\Handelstool.exe")
    EndFunc

    [/autoit]

    Und zwar ist das Programm ( Gui ) eigentlich immer im Vordergrund, hervorgerufen mit WinSetOnTop. Unter Win XP/7 funktioniert dies ohne Probleme, jedoch wie erwähnt nicht unter Win. 8.1.
    Kennt jemand die Behebung für dieses Problem?

    Mfg Ghostleader

    Dateien

    StaedteHandelstool.ini 5,17 kB – 324 Downloads Waren.ini 4,9 kB – 326 Downloads
  • Fokus von Combobox nach Auswahl verlieren

    • Ghostleader
    • 24. November 2013 um 00:04

    Hallo Raupi,

    vielen Dank schon mal für deine Arbeit.

    Zitat

    - Wenn in einer Combo von Nach Stadt etwas ausgewählt wird, dann sollte der Fokus auf die rechte untere Combo ($comboWare) wechseln. Nicht erledigt, weil du für die Nach Stadt Combo keine Auswertung hast.

    Ich nehme an, das du damit meinst, das es solch eine Funktion im Script für diese Combo Reihe nicht gibt, liege ich da richtig (siehe Spoiler)?
    Wenn ja dann ist das ganz klar, da es sich bei diesen Combos lediglich um eine Übersicht handelt, wo bei anklicken nichts passieren soll, ausser das die Ziehlstadt angezeigt wird. Geht denn das da Trotzdem zu machen mit dem Focus wechsel, da du diesen bei den anderen beiden ja in eben dieser Funktion gesetzt hast.

    Spoiler anzeigen
    [autoit]

    Func COMBOCHANGED()
    _LOG("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBO = -1
    For $I = 0 To UBound($COMBOSLEFT)
    If (@GUI_CtrlId == $COMBOSLEFT[$I][0]) Then
    $CLICKEDCOMBO = $COMBOSLEFT[$I][0]
    $CURRENTLABEL = $COMBOSLEFT[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBO == -1) Then
    _LOG("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBO)
    _LOG("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMS = GETITEMS($SELECTEDITEM)
    If ($ITEMS == -1) Then
    _LOG("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($HLIST, "")
    GUICtrlSetData($HLIST, $ITEMS)
    GUICtrlSetState($HLIST, $GUI_SHOW)
    GUICtrlSetState($HLIST, $GUI_FOCUS); Focus auf ListBox $HLIST setzen
    EndFunc ;==>COMBOCHANGED
    Func ITEMCLICKED()
    If (@GUI_CtrlId <> $HLIST) Then
    _LOG("Unkown callback..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($HLIST)
    _LOG("Item '" & $SELECTEDITEM & "' in List was clicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)
    GUICtrlSetData($CURRENTLABEL, $SELECTEDITEM)
    EndFunc ;==>ITEMCLICKED

    [/autoit]

    Mfg Ghostleader

    Ps: Sorry wegen Listview war ein Fehler meiner Seits.

  • Fokus von Combobox nach Auswahl verlieren

    • Ghostleader
    • 23. November 2013 um 12:58

    Hallo Raupi,

    wenn möglich, dann zu jeder Combo Reihe eine andere Aktionen.

    - Wenn in einer Combo von Von Stadt etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($hList) wechseln.
    - Wenn in einer Combo von Nach Stadt etwas ausgewählt wird, dann sollte der Fokus auf die rechte untere Combo ($comboWare) wechseln.
    - Wenn in der unteren rechten Combo etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($wList) wechseln.

    Ich hoffe, das dies so möglich ist.

    Vielen Dank schon mal für deine Mühen.

    Mfg Ghostleader

  • Fokus von Combobox nach Auswahl verlieren

    • Ghostleader
    • 23. November 2013 um 10:48

    Hallo Raupi,

    sorry hatte ich in der Tat vergessen.
    Habe beide Ini´s in dem Post über dir als eine gemeinsame rar angehangen. Danke schon mal im Voraus.

    Mfg Ghostleader

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™