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

Beiträge von Oscar

  • Bewegter Hintergrund

    • Oscar
    • 17. Dezember 2008 um 15:31

    Die Nähte bekommt man weg, wenn man während des neuzeichnens die GUI lockt. Und unter WindowsXP das DoubleBuffering einschalten, dann flackerts auch nicht:

    Spoiler anzeigen
    [autoit]


    #include <StructureConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    Global $Fensterhoehe = 650
    Global $Fensterbreite = 900
    Global $Bildbreite = $Fensterbreite

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\ISI\Eigene Dateien\AutoIT\ISMediaportal\main.kxf
    Global Const $WS_EX_COMPOSITED = 0x2000000 ; Windows XP: Paints all descendants of a window in bottom-to-top painting order using double-buffering.
    $hwnd = GUICreate("Moving Background", $Fensterbreite, $Fensterhoehe, 226, 158, Default, $WS_EX_COMPOSITED)

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

    $backgroundimage1 = GUICtrlCreatePic(@WindowsDir & "\Angler.bmp", 0, 0, $Bildbreite, $Fensterhoehe, BitOR($WS_GROUP, $WS_CLIPSIBLINGS, $WS_EX_LAYERED))
    $backgroundimage2 = GUICtrlCreatePic(@WindowsDir & "\Angler.bmp", -$Bildbreite, 0, $Bildbreite, $Fensterhoehe, BitOR($WS_GROUP, $WS_CLIPSIBLINGS, $WS_EX_LAYERED))

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

    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Button1", 32, 232, 121, 33, 0)
    GUICtrlSetState(-1, $GUI_ONTOP)
    $Button2 = GUICtrlCreateButton("Button1", 113, 325, 121, 33, 0)
    GUICtrlSetState(-1, $GUI_ONTOP)
    $Button3 = GUICtrlCreateButton("Button1", 377, 185, 121, 33, 0)
    GUICtrlSetState(-1, $GUI_ONTOP)
    $Label1 = GUICtrlCreateLabel("Text..text..text", 48, 104, 71, 17)
    GUICtrlSetState(-1, $GUI_ONTOP)
    $Label2 = GUICtrlCreateLabel("Text..text..text", 58, 427, 119, 28)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Text..text..text", 235, 263, 119, 28)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("Text..text..text", 433, 441, 119, 28)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $newX = 0
    Do
    $newX = $newX + 5
    GUISetState(@SW_LOCK)
    ControlMove($hwnd, "", $backgroundimage1, $newX, 0)
    ControlMove($hwnd, "", $backgroundimage2, $newX - $Bildbreite, 0)
    GUISetState(@SW_UNLOCK)

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

    If $newX = $Fensterbreite Then $newX = 0
    Sleep(20)
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]
  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 17. Dezember 2008 um 10:28

    Ich habe Dein Script mal etwas korrigiert:

    Spoiler anzeigen
    [autoit]


    Const $runs = 2
    #include <IE.au3>

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

    $sum = 0
    For $i = 1 To $runs
    $time = TimerInit()
    ;Start InternetExplorer mit Mitarbeiterportal
    $oIE = _IECreate("http://mitarbeiterportal-np.intranet.kkh.de/", 1, 1, 1)
    WinSetState($oIE, "", @SW_MAXIMIZE)
    _IELoadWait($oIE)
    ;Auswahl KSC aus Anwendungsfavouriten
    $Su = _IENavigate($oIE, "http://mitarbeiterportal-np.intranet.kkh.de/anwendung/switchAnwendung.do?action-suchePerson=&anwendungsKuerzel=KSC&schluessel=&schluesselTyp=&suchenButton=true", 1)
    _IELoadWait($oIE)

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

    $oForm = _IEFormGetObjByName($oIE, "f") ; hier muss statt "f" der Name des Formulars (in Anführungsstriche) rein
    $o_name = _IEFormElementGetObjByName($oForm, "name")
    $o_plz = _IEFormElementGetObjByName($oForm, "plz")

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

    _IEFormElementSetValue($o_name, "Hacker")
    _IEFormElementSetValue($o_plz, "30")

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

    _IEFormSubmit($oForm)
    MsgBox(0,0, 'Zeit (ms): ' & TimerDiff($time))
    Next

    [/autoit]

    So müsste das jetzt richtig sein. Du musst nur noch den Namen des Formulars eintragen (siehe Kommentar).

  • Kleine CSPE Aufgabe

    • Oscar
    • 16. Dezember 2008 um 21:28

    Schritt 1: Teilspannung der 3 bekannten Widerstände = Gesamtspannung 75V - Spannung UR3 8,2V = 66,8V

    Schritt 2: Gesamtwiderstand der 3 bekannten Widerstände = 68 + 270 + 330 = 668 Ohm

    Schritt 3: Gesamtstrom = Teilspannung der 3 Widerstände / Gesamtwiderstand der 3 Widerstände = 66,8 / 668 = 0,1 Ampere

    Schritt 4: Widerstand R3 = 8,2V / 0,1A = 82 Ohm

    Schritt 5: Teilspannung 1 = 68 Ohm * 0,1A = 6,8V Teilspannung 2 = 270 Ohm * 0,1A = 27V Teilspannung 4 = 330 Ohm * 0,1A = 33V

  • Auswerten von DOS-Kommandos

    • Oscar
    • 16. Dezember 2008 um 19:15

    Lies mal in der Hilfe zu GUICtrlSetData was da als dritter Parameter für Edit/Input steht.

  • Suche

    • Oscar
    • 16. Dezember 2008 um 18:43

    Für eine Dateisuche hat BugFix neulich erst die perfekte Funktion gepostet: Dateisuche in Ordner und allen Unterordnern - eine weitere Variante :thumbup:

  • brauche mal hilfe so das das Bild im hintergrund ist

    • Oscar
    • 16. Dezember 2008 um 17:13

    Einfach mal die Suche hier im Forum benutzen "bild im hintergrund" liefert 50 Treffer. Da findest Du Deine Antwort.

  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 16. Dezember 2008 um 17:10

    Du brauchst den Namen des Formulars und den musst Du dann als Übergabevariable für _IEFormElementGetObjByName verwenden:

    [autoit]


    $oForm = _IEFormGetObjByName ($oIE, "f")
    $oQuery = _IEFormElementGetObjByName ($oForm, "q")
    _IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
    _IEFormSubmit ($oForm)

    [/autoit]
  • Digitaluhr

    • Oscar
    • 16. Dezember 2008 um 16:21

    Ich habe Dir mal schnell einen Countdown-Timer geschrieben, den Du sicherlich leichter verstehst:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    $iCounterStart = 100 ; in Sekunden

    GUICreate('Countdown-Timer', 600, 100)
    $progressbar = GUICtrlCreateProgress(10, 10, 580, 20)
    GUICtrlSetData($progressbar, 100)
    $label = GUICtrlCreateLabel($iCounterStart & ' sek.', 20, 40, 60, 20)
    $button = GUICtrlCreateButton('Start', 75, 70, 70, 20)
    GUISetState()
    $iCounter = $iCounterStart
    $bStartStop = False
    $iOldValue = @SEC
    Do
    $msg = GUIGetMsg()
    If $msg = $button Then
    $bStartStop = Not $bStartStop
    Switch $bStartStop
    Case True
    GUICtrlSetData($button, 'Pause')
    Case False
    GUICtrlSetData($button, 'Weiter')
    EndSwitch
    EndIf
    If $bStartStop Then
    If $iOldValue <> @SEC Then
    $iOldValue = @SEC
    $iCounter -= 1
    GUICtrlSetData($progressbar, Int(100/$iCounterStart*$iCounter))
    GUICtrlSetData($label, $iCounter & ' sek.')
    EndIf
    Else
    $iOldValue = @SEC
    EndIf
    If $iCounter < 1 Then
    MsgBox(0, 0, 'Zeit um!')
    ExitLoop
    EndIf
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 16. Dezember 2008 um 12:29

    Du weißt doch aber bereits, welche Seite sich hinter dem Link befindet.
    Also rufst Du zuerst die Startseite auf, wartest bis sie komplett geladen wurde, dann rufst Du die "KSC"-Seite auf, wartest wieder bis sie komplett geladen wurde, usw...
    Man muss doch gar keine Mausklicks simulieren.

  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 16. Dezember 2008 um 12:10

    Eigentlich braucht man doch gar keine Suche etc., weil doch bereits feststeht welche Seite man als nächstes aufrufen will. Da reicht doch _IENavigate.
    Ihr wollt doch bloß die Zeit messen, oder habe ich das jetzt falsch verstanden?

  • Checken ob Bild schwarz

    • Oscar
    • 15. Dezember 2008 um 22:48

    Wie gut ist denn die Regelmäßigkeit der schwarzen Bilder?
    Kann man vielleicht mit einem Dateivergleich arbeiten? Du nimmst Dir eines der schwarzen Bilder und vergleichst es mit dem aktuellen. Vielleicht klappt das ja.

    Edit: Mir ist gerade noch eine Möglichkeit eingefallen. Ich hatte mal eine Funktion (FaTolStrComp00.AU3 fehlertoleranter Zeichenkettenvergleich für AutoIT3) in meine Sammlung aufgenommen. Mit der funktioniert der Vergleich. Sogar wenn sich die Bilder unterscheiden. Um wieviel sie sich unterscheiden dürfen, kannst Du festlegen.
    Die Funktion findest Du hier: Fehlertoleranter Zeichenkettenvergleich für AutoIT3

  • ListView - zählen der "checked Items"

    • Oscar
    • 15. Dezember 2008 um 22:36

    Nee, an der Stelle ist das ohne "-1" schon richtig. Ich habe nur ein wenig Error-Handling vergessen. :rolleyes:

    Hab's jetzt aber mal korrigiert.

    Edit: Du hattest recht mit dem "-1". Ich war schon völlig durcheinander mit dem einmal "0"-basierten-Array und einmal "1"-basierten-Array. Habe jetzt alles auf "0"-basierte-Arrays umgeschrieben.

  • AIPM (AutoItPictureMover)

    • Oscar
    • 15. Dezember 2008 um 22:15

    Es gibt nach langer Zeit mal wieder eine neue Version (siehe Post #1).

  • ListView - zählen der "checked Items"

    • Oscar
    • 15. Dezember 2008 um 21:04

    Edit: Hatte vergessen, das war ja nur für die Indices. Hier mal ein paar mehr Funktionen (mit Beispiel):

    Edit2: Jetzt alles mit "0"-basierten-Arrays:

    Spoiler anzeigen
    [autoit]


    #include<StaticConstants.au3>
    #include<Array.au3>
    #include<ListViewConstants.au3>
    #include<WindowsConstants.au3>
    #include<GuiConstantsEx.au3>
    #include<GuiListView.au3>
    Opt('GUIOnEventMode', 1) ; OnEvent-Mode einschalten

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

    $hGui = GUICreate('ListView mit Checkboxen', 400, 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $LVStyle = BitOR($LVS_NOCOLUMNHEADER, $LVS_REPORT, $LVS_SINGLESEL)
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
    $hListView = GUICtrlCreateListView(' | ', 5, 5, 390, 320, $LVStyle, $ExStyle)
    For $i = 0 To 19
    GUICtrlCreateListViewItem($i & '|Number' & Random(100, 999, 1), $hListView)
    GUICtrlSetOnEvent(-1, '_RefreshCounter')
    Next
    _GUICtrlListView_SetColumnWidth($hListView, 0, 50)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 365)

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

    $contextmenu = GUICtrlCreateContextMenu($hListView)
    GUICtrlCreateMenuItem('Mark All', $contextmenu)
    GUICtrlSetOnEvent(-1, '_MarkAll')
    GUICtrlCreateMenuItem('Mark Nothing', $contextmenu)
    GUICtrlSetOnEvent(-1, '_MarkNothing')

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

    $hLabel = GUICtrlCreateLabel('0', 10, 340, 90, 24, $SS_CENTER, $WS_EX_DLGMODALFRAME)
    $hButton1 = GUICtrlCreateButton('Show All', 110, 340, 80, 24)
    GUICtrlSetOnEvent(-1, '_ShowAll')
    $hButton2 = GUICtrlCreateButton('Show checked Items', 200, 340, 120, 24)
    GUICtrlSetOnEvent(-1, '_ShowChecked')

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

    GUISetState()

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

    While 1
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _RefreshCounter()
    Local $iCount = _GUICtrlListView_GetCheckedCount($hListView)
    GUICtrlSetData($hLabel, $iCount)
    EndFunc ;==>_RefreshCounter

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

    Func _ShowAll()
    Local $aItems = _GUICtrlListView_GetAllItems($hListView)
    If IsArray($aItems) Then _ArrayDisplay($aItems)
    EndFunc ;==>_ShowAll

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

    Func _ShowChecked()
    Local $aItems = _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    If IsArray($aItems) Then _ArrayDisplay($aItems)
    EndFunc ;==>_ShowChecked

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

    Func _MarkAll()
    _GUICtrlListView_SetItemChecked($hListView, -1, True)
    _RefreshCounter()
    EndFunc ;==>_MarkAll

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

    Func _MarkNothing()
    _GUICtrlListView_SetItemChecked($hListView, -1, False)
    _RefreshCounter()
    EndFunc ;==>_MarkNothing

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

    Func _GUICtrlListView_GetAllItems($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView)
    Local $iColCount = _GUICtrlListView_GetColumnCount($hListView)
    If $iCount = 0 Then Return SetError(1, 0, 0)
    Local $aAllItems[$iCount][$iColCount], $aTemp
    For $i = 0 To $iCount - 1
    $aTemp = _GUICtrlListView_GetItemTextArray($hListView, $i)
    For $j = 1 To $aTemp[0]
    $aAllItems[$i][$j - 1] = $aTemp[$j]
    Next
    Next
    Return $aAllItems
    EndFunc ;==>_GUICtrlListView_GetAllItems

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

    Func _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    Local $aCheckedItems = _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCheckedCount = UBound($aCheckedItems)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $iColCount = _GUICtrlListView_GetColumnCount($hListView)
    Local $aCheckedItemsText[$iCheckedCount][$iColCount], $aTemp
    For $i = 0 To $iCheckedCount - 1
    $aTemp = _GUICtrlListView_GetItemTextArray($hListView, $aCheckedItems[$i])
    For $j = 1 To $aTemp[0]
    $aCheckedItemsText[$i][$j-1] = $aTemp[$j]
    Next
    Next
    Return $aCheckedItemsText
    EndFunc ;==>_GUICtrlListView_GetCheckedItemTextArray

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

    Func _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView)
    Local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $aCheckedItems[$iCheckedCount]
    $iCheckedCount = 0
    For $i = 0 To $iCount - 1
    If _GUICtrlListView_GetItemChecked($hListView, $i) Then
    $aCheckedItems[$iCheckedCount] = $i
    $iCheckedCount += 1
    EndIf
    Next
    Return $aCheckedItems
    EndFunc ;==>_GUICtrlListView_GetCheckedIndices

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

    Func _GUICtrlListView_GetCheckedCount($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView), $iCheckedCount = 0
    If $iCount = 0 Then Return SetError(1, 0, 0)
    For $i = 0 To $iCount - 1
    $iCheckedCount += _GUICtrlListView_GetItemChecked($hListView, $i)
    Next
    Return $iCheckedCount
    EndFunc ;==>_GUICtrlListView_GetCheckedCount

    [/autoit]
  • Winamp Playliste erstellen

    • Oscar
    • 15. Dezember 2008 um 21:02

    Ich geb Dir mal ein Stichwort: UBound()
    :)

  • ListView - zählen der "checked Items"

    • Oscar
    • 15. Dezember 2008 um 20:58

    Ich brauche diese Funktion für mein Programm (AIPM). In dem Listview werden Dateinamen von Bildern angezeigt, die rekursiv aus einem Quellverzeichnis gelesen werden und ein Wert von 10000 Einträgen ist dort durchaus möglich.
    Aber wenn es dafür keine schnellere Lösung gibt, muss ich wohl mit der Verzögerung leben. :huh:

    Ich habe auch noch eine Funktion zum auslesen der "angehakten" Items erstellt. Wenn Du die auch haben willst, sag Bescheid.

  • Funktion ruft Funktion auf und..... ---> Stack überlauf --- was tun ?

    • Oscar
    • 15. Dezember 2008 um 20:30

    Weil die Funktionen nie beendet werden. Die Funktionen rufen sich rekursiv gegenseitig auf. Irgendwann (nach 5100 Aufrufen) ist die Grenze von AutoIt erreicht.

    Sowas macht man innerhalb einer Schleife (While...WEnd oder Do...Until). Schau Dir mal die Beispiele in der Hilfe an.

  • ListView - zählen der "checked Items"

    • Oscar
    • 15. Dezember 2008 um 08:14

    Das habe ich schon probiert. Hätte ich noch dazu schreiben können...vergessen. :rolleyes:

    Die Funktion "_GUICtrlListViewGetSelectedCount" gibt nur die markierten Einträge zurück. Das markieren ist aber ein Unterschied zu den angehakten.

    Edit: Um den Unterschied zu verdeutlichen, hier ein Testscript:

    Spoiler anzeigen
    [autoit]


    #include<StaticConstants.au3>
    #include<ListViewConstants.au3>
    #include<WindowsConstants.au3>
    #include<GuiConstantsEx.au3>
    #include<GuiListView.au3>

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

    Opt('GUIOnEventMode', 1)

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

    $hGui = GUICreate("ListView", 400, 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $LVStyle = BitOR($LVS_NOCOLUMNHEADER, $LVS_REPORT)
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
    $hListView = GUICtrlCreateListView(' ', 5, 5, 390, 320, $LVStyle, $ExStyle)
    For $i = 0 To 9999
    GUICtrlCreateListViewItem("data1", $hListView)
    GUICtrlSetOnEvent(-1, '_RefreshCounter')
    Next
    _GUICtrlListView_SetColumnWidth($hListview, 0, 365)

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

    $hLabel1 = GUICtrlCreateLabel('0', 10, 340, 90, 24, $SS_CENTER, $WS_EX_DLGMODALFRAME)
    $hLabel2 = GUICtrlCreateLabel('0', 120, 340, 90, 24, $SS_CENTER, $WS_EX_DLGMODALFRAME)

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

    GUISetState()

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

    While 1
    Sleep(10)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _RefreshCounter()
    Local $iCount = _GUICtrlListView_GetSelectedCount($hListview)
    GUICtrlSetData($hLabel2, $iCount)
    Local $iCount = _GUICtrlListView_GetCheckedCount($hListview)
    GUICtrlSetData($hLabel1, $iCount)
    EndFunc

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

    Func _GUICtrlListView_GetCheckedCount($hListview)
    Local $iCount = _GUICtrlListView_GetItemCount($hListview), $iCheckedCount = 0
    For $i = 0 To $iCount
    $iCheckedCount += _GUICtrlListView_GetItemChecked($hListview, $i)
    Next
    Return $iCheckedCount
    EndFunc ;==>_GUICtrlListView_GetCheckedCount

    [/autoit]
  • ListView - zählen der "checked Items"

    • Oscar
    • 15. Dezember 2008 um 07:57

    Ich habe ein Problem mit der Geschwindigkeit eines Scripts. Und zwar geht es darum die Anzahl der angehakten Listview-Items herauszubekommen.
    Dazu habe ich mir das folgende Script geschrieben:

    Spoiler anzeigen
    [autoit]


    #include<StaticConstants.au3>
    #include<ListViewConstants.au3>
    #include<WindowsConstants.au3>
    #include<GuiConstantsEx.au3>
    #include<GuiListView.au3>

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

    Opt('GUIOnEventMode', 1)

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

    $hGui = GUICreate("ListView", 400, 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $LVStyle = BitOR($LVS_NOCOLUMNHEADER, $LVS_REPORT, $LVS_SINGLESEL)
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
    $hListView = GUICtrlCreateListView(' ', 5, 5, 390, 320, $LVStyle, $ExStyle)
    For $i = 0 To 9999
    GUICtrlCreateListViewItem("data1", $hListView)
    GUICtrlSetOnEvent(-1, '_RefreshCounter')
    Next
    _GUICtrlListView_SetColumnWidth($hListview, 0, 365)

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

    $hLabel = GUICtrlCreateLabel('0', 10, 340, 90, 24, $SS_CENTER, $WS_EX_DLGMODALFRAME)

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

    GUISetState()

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

    While 1
    Sleep(10)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _RefreshCounter()
    Local $iCount = _GUICtrlListView_GetCheckedCount($hListview)
    GUICtrlSetData($hLabel, $iCount)
    EndFunc

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

    Func _GUICtrlListView_GetCheckedCount($hListview)
    Local $iCount = _GUICtrlListView_GetItemCount($hListview), $iCheckedCount = 0
    For $i = 0 To $iCount
    $iCheckedCount += _GUICtrlListView_GetItemChecked($hListview, $i)
    Next
    Return $iCheckedCount
    EndFunc ;==>_GUICtrlListView_GetCheckedCount

    [/autoit]

    Das funktioniert auch so, wie ich mir das vorstelle, aber es ist etwas langsam. Wenn man einen Haken setzt oder entfernt wird die Anzeige erst verzögert aktualisiert.
    Meine Frage ist nun: Kennt jemand eine schnellere Lösung dafür?

  • Winamp Playliste erstellen

    • Oscar
    • 15. Dezember 2008 um 06:43

    Stimmt, wenn gar kein Listview-Eintrag mehr vorhanden ist, gibt's eine Fehlermeldung.
    Hab die Funktion angepasst:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

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

    _Main()

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

    Func _Main()
    Local $hListView, $hButton, $msg, $aItem
    GUICreate("ListView", 400, 300)
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 200)
    GUICtrlCreateListViewItem("line1|data1|more1", $hListView)
    GUICtrlCreateListViewItem("line2|data2|more2", $hListView)
    GUICtrlCreateListViewItem("line3|data3|more3", $hListView)
    GUICtrlCreateListViewItem("line4|data4|more4", $hListView)
    GUICtrlCreateListViewItem("line5|data5|more5", $hListView)
    $aItem = _GUICtrlListView_GetAllItems($hListView)
    For $i = 0 To 98
    _GUICtrlListView_AddArray($hListView, $aItem)
    Next
    $hButton = GUICtrlCreateButton("Show All", 160, 250, 80, 24)
    GUISetState()
    Do
    $msg = GUIGetMsg()
    If $msg = $hButton Then
    $aItem = _GUICtrlListView_GetAllItems($hListView)
    If IsArray($aItem) Then _ArrayDisplay($aItem)
    EndIf
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

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

    Func _GUICtrlListView_GetAllItems($hListView)
    Local $iItem = _GUICtrlListView_GetItemCount($hListView)
    Local $iCount = _GUICtrlListView_GetColumnCount($hListView)
    If $iItem = 0 Then Return SetError(1, 0, 0)
    Local $aAllItems[$iItem][$iCount], $aTemp
    For $i = 0 To $iItem - 1
    $aTemp = _GUICtrlListView_GetItemTextArray($hListView, $i)
    For $j = 1 To $aTemp[0]
    $aAllItems[$i][$j - 1] = $aTemp[$j]
    Next
    Next
    Return $aAllItems
    EndFunc ;==>_GUICtrlListView_GetAllItems

    [/autoit]

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™