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

  • Suche au3-Datein

    • BugFix
    • 6. Dezember 2007 um 11:25

    Öffne die Include Datei und kommentiere die Deklaration der angemeckerten Variblen bzw. Konstanten aus.
    Die GuiList.au3 schmeiß ganz raus. Binde die _GuiListBox.au3 ein und passe die Funktionen bei Bedarf an.

  • _IsPressed() - KeyListe

    • BugFix
    • 6. Dezember 2007 um 10:20

    Da 'netterweise' in der aktuellen AutoIt-Version die Hilfe einfach die Keys für _IsPressed() verschweigt, hier nochmal zum Nachschlagen:

    Spoiler anzeigen
    Code
    01 Left mouse button
      02 Right mouse button
      04 Middle mouse button (three-button mouse)
      05 Windows 2000/XP: X1 mouse button
      06 Windows 2000/XP: X2 mouse button
      08 BACKSPACE key
      09 TAB key
      0C CLEAR key
      0D ENTER key
      10 SHIFT key
      11 CTRL key
      12 ALT key
      13 PAUSE key
      14 CAPS LOCK key
      1B ESC key
      20 SPACEBAR
      21 PAGE UP key
      22 PAGE DOWN key
      23 END key
      24 HOME key
      25 LEFT ARROW key
      26 UP ARROW key
      27 RIGHT ARROW key
      28 DOWN ARROW key
      29 SELECT key
      2A PRINT key
      2B EXECUTE key
      2C PRINT SCREEN key
      2D INS key
      2E DEL key
      30 0 key
      31 1 key
      32 2 key
      33 3 key
      34 4 key
      35 5 key
      36 6 key
      37 7 key
      38 8 key
      39 9 key
      41 A key
      42 B key
      43 C key
      44 D key
      45 E key
      46 F key
      47 G key
      48 H key
      49 I key
      4A J key
      4B K key
      4C L key
      4D M key
      4E N key
      4F O key
      50 P key
      51 Q key
      52 R key
      53 S key
      54 T key
      55 U key
      56 V key
      57 W key
      58 X key
      59 Y key
      5A Z key
      5B Left Windows key
      5C Right Windows key
      60 Numeric keypad 0 key
      61 Numeric keypad 1 key
      62 Numeric keypad 2 key
      63 Numeric keypad 3 key
      64 Numeric keypad 4 key
      65 Numeric keypad 5 key
      66 Numeric keypad 6 key
      67 Numeric keypad 7 key
      68 Numeric keypad 8 key
      69 Numeric keypad 9 key
      6A Multiply key
      6B Add key
      6C Separator key
      6D Subtract key
      6E Decimal key
      6F Divide key
      70 F1 key
      71 F2 key
      72 F3 key
      73 F4 key
      74 F5 key
      75 F6 key
      76 F7 key
      77 F8 key
      78 F9 key
      79 F10 key
      7A F11 key
      7B F12 key
      7C-7F F13 key - F16 key
      80H-87H F17 key - F24 key
      90 NUM LOCK key
      91 SCROLL LOCK key
      A0 Left SHIFT key
      A1 Right SHIFT key
      A2 Left CONTROL key
      A3 Right CONTROL key
      A4 Left MENU key
      A5 Right MENU key
      BA;
      BB =
      BC ,
      BD -
      BE .
      BF /
      C0 `
      DB [
      DC \
      DD ]
    Alles anzeigen
  • Mit welchem Befehl kann ich auf einer Webseite eine hinter einem Icon steckende Funktion ausführen?

    • BugFix
    • 6. Dezember 2007 um 09:40

    Problem bei solchen Sachen: man kann selbst nicht testen.
    Darum hier völlig aus dem Hut dieser Ansatz:

    [autoit]

    #include <IE.au3>
    $url = 'Die_URL_des_Gerätes'
    $oIE = _IECreate ($url)
    $oFrame = _IEFrameGetObjByName ($oIE, "main") ; der Frame mit "virtualtransport"
    $oElements = _IETagNameAllGetCollection ($oFrame) ; alle Elemente aus diesem Frame zusammenstellen
    $str = ''
    For $oElement In $oElements
    $str &= "Tagname: " & $oElement.tagname & @CR & "innerText: " & $oElement.innerText & @LF
    Next
    ConsoleWrite($str & @CRLF) ; gefundene Elemente in Console ausgeben
    _IEQuit($oIE)

    [/autoit]


    Du mußt herausfinden welche Tags in dem gesuchten Frame für dich notwendig sind, sollten 'Input' sein.
    Wenn du den Namen weißt kannst du sie auch ansprechen.

  • array an func übergeben

    • BugFix
    • 6. Dezember 2007 um 09:16

    Greenhorn:
    Deine Lösung funktioniert zwar, aber es ist wenig vorteilhaft für evtl. ..zig Einträge einzeln die ID zu speichern und das dann auch noch einzeln in einer Case-Struktur auszuwerten.
    Hier empfiehlt sich immer ein Array.

    sam ghost:
    Da du das alles für ein Tray-Menü machen möchtest, habe ich das Muster mal umgestellt. Die GUI da drin kannst du dir natürlich schenken, war nur zu faul sie rauszunehmen :D.
    Die Suchfunktion aus meinem vorigen Post bzw. Signatur.

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    Opt("GUIOnEventMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode",1)

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

    Dim $my_array[8][2] ;[0]-ID , [1]-Titel

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

    For $i = 0 To UBound($my_array) -1
    $my_array[$I][1] = 'Item ' & $I+1 ; Traymenü - Itemeinträge festlegen
    Next

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

    $GUI = GUICreate('test')
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $menue_punkte=TrayCreateMenu('Test-Menü')
    GUISetState()

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

    FOR $I=0 TO 7 ; Traymenü - Itemeinträge erstellen, ID speichern
    $my_array[$I][0] = TrayCreateItem ($my_array[$I][1],$menue_punkte)
    TrayItemSetOnEvent (-1, 'machwas')
    NEXT

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

    While 1
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    func machwas()
    $found = _Array2DSearch($my_array, @TRAY_ID, 0, 0, 0, 1, False, True)
    If $found[0] <> -1 Then
    $found = StringSplit($found[0], '|')
    msgbox(0,'info',$my_array[$found[1]][1]) ; gibt geklickten Tray-Eintrag zurück
    EndIf
    endfunc

    [/autoit]
  • array an func übergeben

    • BugFix
    • 6. Dezember 2007 um 00:51

    Mit der Control-ID ist der richtige Weg.
    Dazu brauchst du dann noch meine _Array2DSearch-Funktion (Signatur).

    Hier alles komplett:

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    Opt("GUIOnEventMode", 1)
    Dim $my_array[8][2] ;[0]-ID , [1]-Titel
    For $i = 0 To UBound($my_array) -1
    $my_array[$I][1] = 'Item ' & $I+1
    Next
    GUICreate('test')
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $menue_punkte=GUICtrlCreateContextMenu()
    GUISetState()

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

    FOR $I=0 TO 7
    $my_array[$I][0] = GUICtrlCreateMenuitem ($my_array[$I][1],$menue_punkte)
    GUICtrlSetOnEvent (-1,'machwas')
    NEXT

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

    While 1
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    func machwas()
    $found = _Array2DSearch($my_array, @GUI_CtrlId, 0, 0, 0, 1, False, True)
    If $found[0] <> -1 Then
    $found = StringSplit($found[0], '|')
    msgbox(0,'info',$my_array[$found[1]][1])
    EndIf
    endfunc

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

    ;----------------------------------------------------------------------------------------------------------------------
    ;
    ; Function _Array2DSearch(ByRef $avArray, $vWhat2Find [, $iDim=-1 [, $iStart=0 [, $iEnd=0 [, $iCaseSense=0 [, $fPartialSearch=False [, $1stFound=False]]]]]])
    ;
    ; Description Finds all Entry's like $vWhat2Find in an 1D/2D Array
    ; Works with all occurences in 2nd Dimension
    ; Search in all occurences or only in a given column
    ; To set numeric values for default, you can use -1
    ;
    ; Parameter $avArray The array to search
    ; $vWhat2Find What to search $avArray for
    ; optional $iDim Index of Dimension to search; default -1 (all)
    ; optional $iStart Start array index for search; default 0
    ; optional $iEnd End array index for search; default 0
    ; optional $iCaseSense If set to 1 then search is case sensitive; default 0
    ; optional $fPartialSearch If set to True then executes a partial search. default False
    ; optional $1stFound If set to True, only one match will be searched; default False
    ;
    ; Return Succes Array with Index of matches, Array[0] includes the count of matches
    ; In an 2D Array you got for every match [iRow|iCol]
    ; Array[0] = 0 if no element found
    ; If option 1stFound is set, Array[0] = FoundIndex; if no element found Array[0] = -1
    ; Failure 0 and set @error
    ; @error = 1 given array is not array
    ; @error = 2 given dim is out of range
    ; @error = 4 $iStart is out of range
    ; @error = 8 $iEnd is out of range
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DSearch(ByRef $avArray, $vWhat2Find, $iDim=-1, $iStart=0, $iEnd=0, $iCaseSense=0, $fPartialSearch=False, $1stFound=False)
    Local $error = 0, $1D, $arFound[1]=[0]
    If $1stFound Then $arFound[0] = -1
    If ( Not IsArray($avArray) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray,2)
    If @error = 2 Then $1D = True
    If ( $iEnd = 0 ) Or ( $iEnd = -1 ) Then $iEnd = UBound($avArray)-1
    If $iStart = -1 Then $iStart = 0
    If $iCaseSense = -1 Then $iCaseSense = 0
    If $iCaseSense <> 0 Then $iCaseSense = 1
    Select
    Case ( $iDim > $UBound2nd ) Or ( $iDim < -1 )
    $error += 2
    Case ( $iStart < 0 ) Or ( $iStart > UBound($avArray)-1 )
    $error += 4
    Case ( $iEnd < $iStart ) Or ( $iEnd > UBound($avArray)-1 )
    $error += 8
    EndSelect
    If $error <> 0 Then
    SetError($error)
    Return 0
    EndIf
    If $fPartialSearch <> True Then $fPartialSearch = False
    If $1D Then
    For $i = $iStart To $iEnd
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    If $avArray[$i] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    If $avArray[$i] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 0 And $fPartialSearch
    If StringInStr($avArray[$i], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And $fPartialSearch
    If StringInStr($avArray[$i], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    EndSelect
    Next
    Else
    For $i = $iStart To $iEnd
    If $iDim = -1 Then
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    For $k = 0 To $UBound2nd-1
    If $avArray[$i][$k] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    For $k = 0 To $UBound2nd-1
    If $avArray[$i][$k] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 0 And $fPartialSearch
    For $k = 0 To $UBound2nd-1
    If StringInStr($avArray[$i][$k], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 1 And $fPartialSearch
    For $k = 0 To $UBound2nd-1
    If StringInStr($avArray[$i][$k], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    EndSelect
    Else
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    If $avArray[$i][$iDim] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    If $avArray[$i][$iDim] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 0 And $fPartialSearch
    If StringInStr($avArray[$i][$iDim], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And $fPartialSearch
    If StringInStr($avArray[$i][$iDim], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    EndSelect
    EndIf
    Next
    EndIf
    Return $arFound
    EndFunc ;==>_Array2DSearch

    [/autoit]
  • array an func übergeben

    • BugFix
    • 6. Dezember 2007 um 00:20

    Das ist genau das, was ich in meinem Bsp. gezeigt habe.
    Nur habe ich einfach Werte erfunden.
    Grundprinzip ist ein Array das an Array[0] das Handle des Items führt und an Array[1] die Bezeichnung des Items.
    Bei der Erstellung des Items mußt du das dabei zurückgegebene Handle an das Array übergeben und dafür das Event erstellen.

    Siehe mein Bsp. oben, ist ausführbar und funktioniert.

    Edit: Ahh, jetzt versteh ich, was du meinst. Du möchtest nur eine Funktion verwenden und den Itemnamen als Parameter übergeben.
    Das geht leider so nicht. MIt GUIControlSetOnEvent() kannst du keine parameterhaltigen Funktionen erstellen.
    Mal sehen, vielleicht fällt mir noch was ein.

  • array an func übergeben

    • BugFix
    • 5. Dezember 2007 um 23:38

    Hab nicht ganz verstanden, was du willst. Aber du brauchst ein Handle für die Items um sie anzusprechen. Also nimm sie mit in das Array auf.
    Hier ein Muster:

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    Opt("GUIOnEventMode", 1)
    Dim $my_array[8][2] ;[0]-ID , [1]-Titel
    For $i = 0 To UBound($my_array) -1
    $my_array[$I][1] = 'Item ' & $I+1
    Next
    GUICreate('test')
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $menue_punkte=GUICtrlCreateContextMenu()
    GUISetState()

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

    FOR $I=0 TO 7
    $my_array[$I][0] = GUICtrlCreateMenuitem ($my_array[$I][1],$menue_punkte)
    GUICtrlSetOnEvent (-1,'machwas'& $I)
    NEXT

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

    While 1
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    func machwas0()
    msgbox(0,'info', 0)
    endfunc
    func machwas1()
    msgbox(0,'info', 1)
    endfunc
    func machwas2()
    msgbox(0,'info', 2)
    endfunc
    func machwas3()
    msgbox(0,'info', 3)
    endfunc
    func machwas4()
    msgbox(0,'info', 4)
    endfunc
    func machwas5()
    msgbox(0,'info', 5)
    endfunc
    func machwas6()
    msgbox(0,'info', 6)
    endfunc
    func machwas7()
    msgbox(0,'info', 7)
    endfunc

    [/autoit]
  • Suche au3-Datein

    • BugFix
    • 5. Dezember 2007 um 17:32

    Hyperlink habe ich, hänge sie an.

  • Formatierung

    • BugFix
    • 5. Dezember 2007 um 16:40

    OK, hiermit funzt es:

    [autoit]

    $str = 11.165154
    $str = StringSplit($str, '.')
    MsgBox(0, 'Formatierte Ausgabe', StringRight('00' & $str[1] & StringLeft($str[2], 2), 5))

    [/autoit]

    Erklärung:
    - splitten in Teilstrings am Komma
    - vom Nachkommateil werden die linken 2 Zeichen genommen
    - neuer String wird gebildet aus 2 Vornullen & Vorkommastring & gekürztem Nachkommastring
    - von diesem String werden die rechten 5 Zeichen verwendet
    Somit kann der Vorkommateil variabel zwischen 0 und 999 sein.

  • GUICreate Problem

    • BugFix
    • 5. Dezember 2007 um 16:09

    Hier mal ein simples Beispiel. Sollte alle Fragen klären.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    $gui1 = GUICreate('GUI 1', 500, 300, -1, -1)
    $button1 = GUICtrlCreateButton('Aufruf GUI 2', 20, 20, 100, 21)

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

    $gui2 = GUICreate('GUI 2', 500, 300, -1, -1)
    $button2 = GUICtrlCreateButton('Zurück zu GUI 1', 20, 20, 100, 21)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; window-handle
    Case $gui1
    Switch $msg[0] ; event/control-handle
    Case $button1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Case $gui2
    Switch $msg[0]
    Case $button2
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Dezimalzahl in IP umrechnen

    • BugFix
    • 5. Dezember 2007 um 15:52

    Du kannst es noch etwas "schrumpfen":

    [autoit]

    $tmp = 'FFFFFFFF'
    $tmp = StringSplit($tmp,'')
    MsgBox(0, 'IP', Dec($tmp[1]&$tmp[2]) & '.' & Dec($tmp[3]&$tmp[4]) & '.' & Dec($tmp[5]&$tmp[6]) & '.' & Dec($tmp[7]&$tmp[8]))

    [/autoit]
  • Kleines Problem

    • BugFix
    • 5. Dezember 2007 um 15:23

    Als Tastenkombination ist es sinnlos, da nicht ausführbar ;)
    Du kannst sowas nur innerhalb einer Anwendung verwenden, aber im Allgemeinen wird durch das erste STRG ein Prozeß ausgelöst und den mußt du abwarten bevor das 2.te mal STRG gedrückt wird. Wenn das nicht sichtbar ist, setz einfach ein Sleep(1000) dazwischen. Reicht vielleicht schon.

  • Kleines Problem

    • BugFix
    • 5. Dezember 2007 um 14:30

    Sorry, aber 2-mal STRG drücken - das ist sinnlos.
    Falls du das nutzt um irgendeinen Ablauf zu automatisieren mußt du ein Ereignis einfügen, dass dir sagt; jetzt kann das 2. mal Steuerung gedrückt werden. Ansonsten geht der Befehl ins Leere.

  • Formatierung

    • BugFix
    • 5. Dezember 2007 um 14:24

    Deine Zahl wird aber ohne Punkt dargestellt, oder?

    [autoit]

    $str = '1328'
    MsgBox(0, 'Formatierte Ausgabe', StringFormat('$str = %05i', StringLeft($str, 3)))

    [/autoit]

    Edit:
    Falls der Punkt ein Komma sein sollte gehts so:

    [autoit]

    $str = 1.328
    MsgBox(0, 'Formatierte Ausgabe', StringFormat('$str = %05i', StringLeft($str*1000, 3)))

    [/autoit]
  • GUICreate Problem

    • BugFix
    • 5. Dezember 2007 um 10:10

    Wenn du schon mit GUIGetMsg arbeitest (hierfür wirklich nicht empfehlenswert, würde im OnEvent-Mode arbeiten), dann benötigst du bei mehreren GUI natürlich neben der ID des Controls auch die ID der GUI. Dazu gibt es den Advanced-Mode: GUIGetMsg (1).
    Da bekommst du als Return ein Array mit allen erforderlichen Werten - steht ganz ausführlich in der Hilfe.

  • Neue Funktionen zu ListView - seit 3.2.10.0

    • BugFix
    • 5. Dezember 2007 um 09:45

    Hi Tweaky,

    ich hab nochmal etwas getestet.
    Also wenn du einzelne Items andersfarbig darstellen möchtest, darfst du viele der neuen ListView-Funktionen nicht in deinem Skript haben.
    - um den Text eines Items zu färben brauchst du ein Handle dafür
    - _GUICtrlListView_AddItem() gibt kein Handle, sondern den Index zurück ==> fällt somit raus
    - um ein Handle zu erhalten mußt du das Item mit GUICtrlCreateListViewItem() erstellen, dann kannst du es normal mit GUICtrlSetColor() färben
    - um aber Items mit GUICtrlCreateListViewItem() zu erzeugen, darf das ListView NICHT mit _GUICtrlListView_Create() erstellt werden

    Ergo: Die neue Funktionalität (Icons, Checkboxes etc.) kann unter diesen Umständen nicht genutzt werden. Ich weiß nicht ob man sich hier über die neuen Funktionen freuen oder den Verlust der alten bedauern soll. 8|
    Bei mir überwiegt derzeit das Bedauern.

    Hier dein Bsp. so angepaßt, dass es wieder funzt:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    Opt('MustDeclareVars', 1)
    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work
    Global $hListView, $test, $farbe
    Local $GUI, $hImage , $arItems[3]
    $GUI = GUICreate("(External) ListView Create", 400, 300)
    ;~ $hListView = _GUICtrlListView_Create ($GUI, "", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    $hListView = GUICtrlCreateListView('', 2, 2,394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle ($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
    GUISetState()
    ; Add columns
    _GUICtrlListView_InsertColumn ($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn ($hListView, 1, "Column 2", 100)
    ; Add items
    ;###### NICHT "_GUICtrlListView_AddItem" verwenden, dann hast du kein Handle für die Items !! ########
    $arItems[0] = GUICtrlCreateListViewItem ("1", $hListView)
    $arItems[1] = GUICtrlCreateListViewItem ("2", $hListView)
    $arItems[2] = GUICtrlCreateListViewItem ("3", $hListView)
    For $i = 0 to 2
    $test = _GUICtrlListView_GetItemText($hListView, $i, 0)
    If $test = 2 Then
    MsgBox(0,$i, "färben")
    ;~ $farbe = _GUICtrlListView_SetTextColor($arItems[$i], 0xFFA500)
    GUICtrlSetColor($arItems[$i], 0xFFA500)
    ;~ MsgBox(0,$i, $farbe)
    EndIf
    Next
    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

    [/autoit]
  • Alles Gute peethebee

    • BugFix
    • 4. Dezember 2007 um 20:15

    Da bin ich heut extra gefahren wie ein Teufel, um noch rechtzeitig vor Mitternacht wieder zu Hause zu sein und dir gratulieren zu können.

    Also Pee: Alles Gute, Viel Erfolg (und Spaß) beim Studium und alles, was sonst noch wünschenswert ist. :thumbup:

  • schreibschutz bei ordner

    • BugFix
    • 2. Dezember 2007 um 21:03

    Wie man sieht, hat dein Bruder allen Grund so zu handeln. :D

  • HEX-Code Farbtabelle

    • BugFix
    • 2. Dezember 2007 um 15:16

    Ja, das idiotische ist, dass die Funktionsnamen nur einen Unterstrich dazu bekommen haben. Es also keine völlig neuen Funktionen sind.
    Statt: _GUICtrlListViewGetItemText JETZT _GUICtrlListView_GetItemText
    Und statt _GUICtrlListViewDeleteAllItems($ListView1) JETZT
    _GUICtrlListView_DeleteAllItems("Farbe|Name|HEX-Code|R/G/B") - Hier darf NICHT mehr die ID verwendet werden sondern es muß das Control mit Titel angesprochen werden (omfg).

  • Mehere GUIs in einer datei

    • BugFix
    • 2. Dezember 2007 um 15:01

    Folgende Fehler:
    - du deklarierst "OnEvent-Mode", arbeitest aber in Event UND GUIGetMsg -Mode
    - Variablennamen sind mehrfach vergeben
    - Events sind nicht korrekt zugeordnet

    Bring da erst mal Ordnung rein.

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™