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

Beiträge von teamnoobPDB

  • Doppelter Terminkalender

    • teamnoobPDB
    • 6. November 2015 um 17:59

    2) Du kannst das per GUICtrlRead() auslesen

    und

    1) Dann mit _WeekNumberISO() die Woche ausrechnen :D

  • Doppelter Terminkalender

    • teamnoobPDB
    • 5. November 2015 um 00:18

    Ok ich schau mal was ich so in meiner Freizeit machen kann. :P

  • Doppelter Terminkalender

    • teamnoobPDB
    • 5. November 2015 um 00:12

    Soll das ganze in einer GUI landen oder sind 2 getrennte so richtig? :D

  • GDI+ Anfängerfragen

    • teamnoobPDB
    • 3. November 2015 um 18:08

    Hallo MrB,

    wenn du den Text löschen willst musst du Prinzipiell alles löschen und neu zeichnen.
    Schau dir dazu mal

    AutoIt
    _GDIPlus_GraphicsClear

    an.
    Je nachdem was du vor hast ist es auch recht simpel alles neu zu Zeichnen.
    Wie soll es denn am Ende aussehen?

    Edit. Hab gerade gesehen, dass du GraphicsClear schon verwendet hast.

  • Arrays zusammenfügen?!

    • teamnoobPDB
    • 25. Oktober 2015 um 18:01

    Aber es ist wesentlich Zeitintensiver alles in ne Datei zu schreiben als meine Funktion xD

    So sieht das Ergebnis aus:

    Funktion: 0.0845777885178144ms
    Datei: 2.65026700320851ms

    Meine Funktion ist 33mal schneller :D

  • Arrays zusammenfügen?!

    • teamnoobPDB
    • 25. Oktober 2015 um 17:52

    Probiers mal damit:

    EDIT: Hab noch ne abfrage hinzugefügt die Überprüft ob es wirklich 2 1D-Arrays sind

    AutoIt
    Func _Array_Add($a1, $a2)
    	If Not IsArray($a1) Or Not IsArray($a2) Then Return -1
    	If UBound($a1, 2) > 1 Or UBound($a2, 2) > 1 Then Return -1
    	Local $u_a1 = UBound($a1)
    	Local $u_a2 = UBound($a2)
    	Local $aNew[($u_a1 > $u_a2 ? $u_a1 : $u_a2)][2]
    	For $i = 0 To ($u_a1 > $u_a2 ? $u_a1 : $u_a2)
    		If $u_a1 > $i Then $aNew[$i][0] = $a1[$i]
    		If $u_a2 > $i Then $aNew[$i][1] = $a2[$i]
    	Next
    	Return $aNew
    EndFunc
    Alles anzeigen
  • Click an ListView senden

    • teamnoobPDB
    • 25. Oktober 2015 um 17:45

    ok danke ich habs jetzt hingekriegt xD

  • Click an ListView senden

    • teamnoobPDB
    • 25. Oktober 2015 um 12:34

    So,

    hier mal der Code wie es aussieht.

    Wenn man auf Column2 Klickt erscheint ein Edit-Feld neben der Zahl dort soll man eine postive oder negative Zahl eingeben und die wird dann auf die schon dort stehende addiert. Mit Tab kann man die eingabe beenden und die Aktion durchführen lassen. Nun sollte es aber erstens mit enter machbar sein UND wenn ein Item mit den Pfeiltasten ausgewählt wird und dann enter drückt soll dasselbe passieren wie bei einem Mausklick auf dasselbe item.

    Spoiler anzeigen
    AutoIt
    #include <GUIListView.au3>
    #include <WindowsConstants.au3>
    #include <GUIEdit.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    
    
    
    
    Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = -1
    
    
    $hGUI = GUICreate("", 500, 500)
    $hListView = GUICtrlCreateListView("", 10, 10, 480, 480)
    	_GUICtrlListView_AddColumn($hListView, "Column1", 200)
    	_GUICtrlListView_AddColumn($hListView, "Column2", 100, 2)
    
    
    	For $i = 1 To 4
    		$iIndex = _GUICtrlListView_InsertItem($hListView, "Item" & $i)
    		_GUICtrlListView_AddSubItem($hListView, $iIndex, $i, 1)
    	Next
    
    
    	GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    	GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    
    
    GUISetState()
    
    
    While Sleep(10)
    	Switch GUIGetMsg()
    		Case -3
    			Exit
    	EndSwitch
    WEnd
    
    
    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $wParam
    	Local $aHitTest
        Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $hWndEdit
        $hWndListView = $hListView
    	$hWndEdit = $hEdit
        If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    	If Not IsHWnd($hEdit) Then $hWndEdit = GUICtrlGetHandle($hEdit)
    
    
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
            Case $hWndListView
                Switch $iCode
                    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
                        ;$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    					Local $aHit = _GUICtrlListView_SubItemHitTest($hWndListView)
                        If ($aHit[0] <> -1) And ($aHit[1] > 0) Then
                            $Item = $aHit[0]
                            $SubItem = $aHit[1]
    						$bDisableUpdates = True
                            Local $iSubItemText = _GUICtrlListView_GetItemText($hWndListView, $Item, $SubItem)
                            Local $iLen = _GUICtrlListView_GetStringWidth($hWndListView, $iSubItemText)
                            Local $aRect = _GUICtrlListView_GetSubItemRect($hWndListView, $Item, $SubItem)
                            $hEdit = _GUICtrlEdit_Create($hGUI, "", 20 + $aRect[0], 13 + $aRect[1], $iLen + 10, 17, BitOR($WS_CHILD, $WS_VISIBLE, $ES_CENTER, $ES_AUTOHSCROLL))
    						_GUICtrlEdit_SetSel($hEdit, 0, -1)
                            _WinAPI_SetFocus($hEdit)
                            $hDC = _WinAPI_GetWindowDC($hEdit)
                            $hBrush = _WinAPI_CreateSolidBrush(0)
                            FrameRect($hDC, 0, 0, $iLen + 10, 17, $hBrush)
                        EndIf
    			EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_NOTIFY
    
    
    Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush)
        Local $stRect = DllStructCreate("int;int;int;int")
        DllStructSetData($stRect, 1, $nLeft)
        DllStructSetData($stRect, 2, $nTop)
        DllStructSetData($stRect, 3, $nRight)
        DllStructSetData($stRect, 4, $nBottom)
        DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush)
    EndFunc   ;==>FrameRect
    
    
    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
        Local $iCode = BitShift($wParam, 16)
        Switch $lParam
            Case $hEdit
                Switch $iCode
                    Case $EN_KILLFOCUS
                        Local $iText = _GUICtrlEdit_GetText($hEdit)
                        _GUICtrlListView_SetItemText($hListView, $Item, Int($iText) + Int(_GUICtrlListView_GetItemText($hListView, $Item, $SubItem)), $SubItem)
                        _WinAPI_DeleteObject($hBrush)
                        _WinAPI_ReleaseDC($hEdit, $hDC)
                        _WinAPI_DestroyWindow($hEdit)
    					GUICtrlSetState($hListView, 256)
    					_GUICtrlListView_SetItemSelected($hListView, $Item, True, True)
                        $Item = -1
                        $SubItem = -1
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND
    Alles anzeigen
  • Click an ListView senden

    • teamnoobPDB
    • 25. Oktober 2015 um 11:30

    Ok danke schonmal für die Ansätze. Bin gerade nicht an meinem PC und werde euch später den Code schicken.

  • Click an ListView senden

    • teamnoobPDB
    • 25. Oktober 2015 um 02:31

    Ich habe eine Funktion die aufgerufen wird wenn man auf ein listview item klickt. Nun soll dass aber auch bei einem markierten item mit enter passieren. Da die vorherigen versuche ein enter-event abzufangen fehlgeschlagen sind wollte ich mal fragen ob man nicht einen klick so senden kann.

  • Click an ListView senden

    • teamnoobPDB
    • 24. Oktober 2015 um 23:55

    In meinem Script intern xD

  • Click an ListView senden

    • teamnoobPDB
    • 24. Oktober 2015 um 22:50

    Hallo liebe Community,

    habt ihr eine Ahnung wie man an ein ListView einen Klick senden kann OHNE MouseClick()?

    Vlt. mit GuiCtrlSendMsg()? doch wie soll dann der Syntax aussehen?

    LG

  • ISN AutoIt Studio

    • teamnoobPDB
    • 27. September 2015 um 11:59

    naja nicht nur kosmetisch ist der Fehler bei mir. Ich habe eine manuelle updatesuche gestartet und nachdem dann die automatische suche sich während dem update nochmal gemeldet hat kann ich KEIN update mehr starten er bricht sofort mit einem Fehler ab obwohl er noch ein Update findet.

  • ISN AutoIt Studio

    • teamnoobPDB
    • 25. September 2015 um 09:54

    Soweit ich mich erinnern kann wurde mal ein Bug behoben, dass beim Manuellen überprüfen von Updates manchmal ein weiteres Fenster mit der automatischen überprüfung geöffnet wurde, in der version vom 11.8.2015 ist dieser Bug immernoch vorhanden wurde der in der vom 14.9.2015 behoben?

  • Read file -> return Zeilennummer

    • teamnoobPDB
    • 25. September 2015 um 09:00

    :thumbup:

  • Read file -> return Zeilennummer

    • teamnoobPDB
    • 25. September 2015 um 08:53

    Achja :D sorry hatte nen denkfehler ... es ist zu früh am morgen :D

    aber wo ist es eine schande dass die Schleife abgebrochen wird? für größere dateien ist es doch viel sinnvoller weil, wenn ich den eintrag in zeile 10 gefunden habe brauche ich doch die anderen 20000 auch nicht überprüfen... das verhindert kurze hänger im Skript

  • Read file -> return Zeilennummer

    • teamnoobPDB
    • 25. September 2015 um 08:41

    @DasIch Außerdem ist mir in deinem Skript ein Fehler aufgefallen... du überprüfst durch Ubound() - 1 nie das letzte Element deines Arrays etweder du nimmst nur Ubound oder das hier:

    AutoIt
    #include <File.au3>
    
    
    $iZeile = __DurchsucheDateiNach("test", @DesktopDir & "\test.txt")
    
    
    Func __DurchsucheDateiNach($sWort, $sDateipfad)
    	Local $aRead
    	_FileReadToArray($sDateipfad, $aRead)
    	For $i = 1 To $aRead[0]
    		If $aRead[$i] == $sWort Then Return $i
    	Next
    	Return -1
    EndFunc
    Alles anzeigen

    Denn in $aDatei[0] befindet sich schon der Wert den Ubound($aDatei) zurückgeben würde

  • Read file -> return Zeilennummer

    • teamnoobPDB
    • 25. September 2015 um 08:33

    Probier es doch mal mit:

    AutoIt
    FileReadLine($sPath, $iLine)

    oder soetwas hier:

    AutoIt
    #include <File.au3>
    
    
    $iZeile = __DurchsucheDateiNach("test", @DesktopDir & "\test.txt")
    
    
    Func __DurchsucheDateiNach($sWort, $sDateipfad)
    	Local $hFile = FileOpen($sDateipfad)
    	For $i = 1 To _FileCountLines($sDateipfad)
    		If FileReadLine($hFile, $i) == $sWort Then
    			FileClose($hFile)
    			Return $i
    		EndIf
    	Next
    	FileClose($hFile)
    EndFunc
    Alles anzeigen

    EDIT: für größere Dateien hab ich es mal angepasst mit FIleOpn und FileClose!

  • ISN AutoIt Studio

    • teamnoobPDB
    • 1. August 2015 um 21:13

    Hey ISI360,

    ich hätte einen kleinen Bug bzw. einen Verbesserungsvorschlag. Und zwar wenn man eingestellt hat, dass alle zuletzt geöffneten Tabs wieder geöffnet werden sollen, und man macht dies auf unterschiedlichen PC's, dann funktioniert das nicht! In der project.isn findet sich auch die Ursache dafür. Die Pfade zu den Zulezt geöffneten Tabs werden wie folgt gespeichert: X:\xxx\test.au3. Nun ist das Problem, dass das Projekt in meinem Dropbox Ordner ist und dieser sich auf meinen PC's nicht unter demselben Pfad befindet. Würde man das auf relative Pfade ändern sollte das kein Problem mehr sein. Ich hoffe du findest dafür eine Lösung.

    LG teamnoobPDB

    Edit: Sorry für die wirre Beschreibung hab sie jetzt mal verbessert :D

  • [close] AI Fight #1 - Snake

    • teamnoobPDB
    • 20. März 2015 um 14:03

    Sehr gute Verbesserungsvorschläge :D Das reizt schon etwas. Ich habe es dieses mal leider nicht geschafft etwas fertigzustellen wegen meiner Abitur Prüfungen. Ich bin aber sehr zuversichtlich dass ich das nächste mal etwas auf die Reihe bringe ;)

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™