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

Beiträge von Falki

  • TAB Taste in Tabelle statt Klick

    • Falki
    • 4. Mai 2015 um 09:42

    Ok so kann man es natürlich auch machen... Wie gesagt, das Problem wurde gelöst. Vielen Dank für eure Hilfe :)

  • TAB Taste in Tabelle statt Klick

    • Falki
    • 30. April 2015 um 14:46

    Hab es jetzt mit HotKeySet("{TAB}", "TAB_C") gelöst.

    Jedesmal wenn TAB gedrückt wird wird die Funktion aufgerufen:

    Spoiler anzeigen
    [autoit]


    Func TAB_C()
    Local $Item, $SubItem
    $ddong = 1
    MouseClick("left")
    MouseClick("left")
    $ddong = 0
    EndFunc

    [/autoit]

    Da durch einen Doppelklick (egal wo) die Funktion ausgeführt wird, frag ich einfach nach ob TAB oder die richtige Maustaste betätigt wurden in dem ich einfach mit Variablen arbeite.

    [autoit]


    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView
    Switch $iCode
    Case $NM_DBLCLK
    If ($ddong = 1) Then
    If ($aHit1 <> -1) And ($aHit2 = 0) Then
    $Item = $aHit1
    $SubItem = 0
    $aHit1= $aHit1
    $aHit2=1
    Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item, $SubItem)
    ElseIf ($aHit1 <> -1) And ($aHit2 > 0) Then
    $Item = $aHit1
    $SubItem = $aHit2
    If ($aHit2 = 3) Then
    $aHit1= $aHit1+1
    $aHit2=1
    ElseIf($aHit2 = 2) Then
    $aHit1= $aHit1
    $aHit2=3
    Else
    $aHit1= $aHit1
    $aHit2=2
    EndIf
    Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem)
    Else
    Return $GUI_RUNDEFMSG
    EndIf
    Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem)
    Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText)
    $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $aRect[0] + 3, $aRect[1], $iLen + 70, 17, $Style)
    _GUICtrlEdit_SetSel($hEdit, 0, -1)
    _WinAPI_SetFocus($hEdit)
    $hDC = _WinAPI_GetWindowDC($hEdit)
    $hBrush = _WinAPI_CreateSolidBrush(0x0000FF)
    FrameRect($hDC, 0, 0, $iLen + 70 , 17, $hBrush)
    $ddong = 0
    Else
    $ddong = 1
    Local $aHit = _GUICtrlListView_SubItemHitTest($hListView)
    If ($aHit[0] <> -1) And ($aHit[1] = 0) Then
    $Item = $aHit[0]
    $SubItem = 0
    $aHit1= $aHit[0]
    $aHit2=1
    Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item)
    ElseIf ($aHit[0] <> -1) And ($aHit[1] > 0) Then
    $Item = $aHit[0]
    $SubItem = $aHit[1]
    If ($aHit[1] = 3) Then
    $aHit1= $aHit[0]+1
    $aHit2=1
    ElseIf($aHit[1] = 2) Then
    $aHit1= $aHit[0]
    $aHit2=3
    Else
    $aHit1= $aHit[0]
    $aHit2=2
    EndIf
    Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem)
    Else
    Return $GUI_RUNDEFMSG
    EndIf
    Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem)
    Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText)
    $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $aRect[0] + 3, $aRect[1], $iLen + 70, 17, $Style)
    _GUICtrlEdit_SetSel($hEdit, 0, -1)
    _WinAPI_SetFocus($hEdit)
    $hDC = _WinAPI_GetWindowDC($hEdit)
    $hBrush = _WinAPI_CreateSolidBrush(0x0000FF)
    FrameRect($hDC, 0, 0, $iLen + 70 , 17, $hBrush)
    $ddong = 0
    ;Local $ffg
    ;MsgBox($MB_SYSTEMMODAL, "Information", "Selected Indices: " & _GUICtrlListView_GetSelectedIndices($hListView))
    ; _GUICtrlListView_SetSelectedColumn($hListView, $aHit[1])
    ;MsgBox($MB_SYSTEMMODAL, "Information", "Selected Column: " & _GUICtrlListView_GetSelectedColumn($hListView))
    EndIf
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Das war eigentlich das ganze Geheimnis, hat mich nur einige Stunden Zeit gekostet. xD

    Aber trotzdem danke für die Hilfe :)

    Kann geschlossen werden....

  • TAB Taste in Tabelle statt Klick

    • Falki
    • 28. April 2015 um 20:08

    Guten Abend liebe AutoIt Community,

    ich bin neu hier und habe mal eine Frage, ich hab mein kleines Script bereits soweit Fertig wie ich es haben will, mir fehlt jetzt eigentlich nur noch das man mit der TAB Taste in der Tabelle sich bewegen kann und nicht nur mit einem klick auf die entsprechende Zeile. Weil dann kann man sehr schnell die Tabelle abarbeiten ohne immer erst auf das Feld klicken zu müssen, was vor allem bei Größen Datenmengen ein Vorteil ist.

    Hier mal ein kleiner Ausschnitt der meiner Meinung nach rellevanten Elemnte:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    hListView = _GUICtrlListView_Create($hGUI, "bla|bla|bla", 2, 2, 600, 300, BitOR($LVS_EDITLABELS, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES)

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

    Global $hQuery, $aRow, $items, $i
    _SQLite_StartUp()
    $hDB = _SQLite_Open(".\\bla.db")
    _SQLite_Query($hDB, "SELECT * From Tabelle",$hQuery)

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

    $i=1
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK

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

    _GUICtrlListView_AddItem($hListView, $aRow[0])
    _GUICtrlListView_AddSubItem($hListView, $i - 1, $aRow[1], 1)
    _GUICtrlListView_AddSubItem($hListView, $i - 1, $aRow[2], 2)
    $i=$i+1

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

    WEnd

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

    Local $ilast=$i
    Local $ilast2=$i
    Local $ihinzu = GUICtrlCreateButton('Hinzufügen', $iWidth - 270, $iHeight - 28, 85, 25)
    Local $iGetArray = GUICtrlCreateButton('Speichern', $iWidth - 180, $iHeight - 28, 85, 25)
    Local $iBeenden = GUICtrlCreateButton('Beenden', $iWidth - 90, $iHeight - 28, 85, 25)

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

    _SQLite_Close($hDB)
    _SQLite_Shutdown()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tNMHDR, $hWndFrom, $iCode

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

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

    Switch $hWndFrom
    Case $hListView
    Switch $iCode
    Case $NM_DBLCLK
    Local $aHit = _GUICtrlListView_SubItemHitTest($hListView)

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

    If ($aHit[0] <> -1) And ($aHit[1] = 0) Then
    $Item = $aHit[0]
    $SubItem = 0
    Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item)
    ElseIf ($aHit[0] <> -1) And ($aHit[1] > 0) Then
    $Item = $aHit[0]
    $SubItem = $aHit[1]
    Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem)
    Else
    Return $GUI_RUNDEFMSG
    EndIf

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

    Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem)
    Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText)
    $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $aRect[0] + 3, $aRect[1], $iLen + 70, 17, $Style)

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

    _GUICtrlEdit_SetSel($hEdit, 0, -1)
    _WinAPI_SetFocus($hEdit)
    $hDC = _WinAPI_GetWindowDC($hEdit)
    $hBrush = _WinAPI_CreateSolidBrush(0x0000FF)
    FrameRect($hDC, 0, 0, $iLen + 80 , 17, $hBrush)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush)
    Local $stRect = DllStructCreate("int;int;int;int")

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

    DllStructSetData($stRect, 1, $nLeft)
    DllStructSetData($stRect, 2, $nTop)
    DllStructSetData($stRect, 3, $nRight)
    DllStructSetData($stRect, 4, $nBottom)

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

    DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush)
    EndFunc

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

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $iCode = BitShift($wParam, 16)

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

    Switch $lParam
    Case $hEdit
    Switch $iCode
    Case $EN_KILLFOCUS
    Local $iText = _GUICtrlEdit_GetText($hEdit)
    _GUICtrlListView_SetItemText($hListView, $Item, $iText, $SubItem)
    _WinAPI_DeleteObject($hBrush)
    _WinAPI_ReleaseDC($hEdit, $hDC)
    _WinAPI_DestroyWindow($hEdit)

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

    $Item = -1
    $SubItem = 0
    EndSwitch
    EndSwitch

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

    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _CreateListView($hGUI, ByRef $iListView) ; Thanks to AZJIO for this function.
    Local $aClientSize = WinGetClientSize($hGUI)
    $iListView = GUICtrlCreateListView('', 0, 0, $aClientSize[0], $aClientSize[1] - 30)
    GUICtrlSetResizing($iListView, $GUI_DOCKBORDERS)
    Sleep(250)

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

    Local $iColumns = Random(1, 5, 1)
    __ListViewFill($iListView, $iColumns, Random(25, 100, 1)) ; Fill the ListView with Random data.
    For $i = 0 To $iColumns
    _GUICtrlListView_SetColumnWidth($iListView, $i, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($iListView, $i, $LVSCW_AUTOSIZE_USEHEADER)
    Next
    EndFunc ;==>_CreateListView

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

    Func __ListViewFill($hListView, $iColumns, $iRows) ; Required only for the Example.
    If Not IsHWnd($hListView) Then
    $hListView = GUICtrlGetHandle($hListView)
    EndIf
    Local $fIsCheckboxesStyle = (BitAND(_GUICtrlListView_GetExtendedListViewStyle($hListView), $LVS_EX_CHECKBOXES) = $LVS_EX_CHECKBOXES)

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

    _GUICtrlListView_BeginUpdate($hListView)
    For $i = 0 To $iColumns - 1
    _GUICtrlListView_InsertColumn($hListView, $i, 'Column ' & $i + 1, 50)
    _GUICtrlListView_SetColumnWidth($hListView, $i - 1, -2)
    Next
    For $i = 0 To $iRows - 1
    _GUICtrlListView_AddItem($hListView, 'Row ' & $i + 1 & ': Col 1', $i)
    If Random(0, 1, 1) And $fIsCheckboxesStyle Then
    _GUICtrlListView_SetItemChecked($hListView, $i)
    EndIf
    For $j = 1 To $iColumns
    _GUICtrlListView_AddSubItem($hListView, $i, 'Row ' & $i + 1 & ': Col ' & $j + 1, $j)
    Next
    Next
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc

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

    ich hoffe ihr versteht mein Problem und könnt mir weiterhelfen.

    Mit freundlichen Grüßen

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™