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

Beiträge von r_eisner

  • Item ID eines TreeView Items nach Suche per _GUICtrlTreeView_GetNext

    • r_eisner
    • 13. Februar 2020 um 12:25

    Hallo,

    ich möchte mich erst einmal für die vielen Hinweise bedanken. Ich habe nun die Ursache gefunden.

    Ich speichere ja die Handles meiner TreeView Items beim Durchlaufen in ein Array und verarbeite diese später wieder.

    In der Funktion _GUICtrlTreeView_GetItemParam() muss ich das Array Element mit dem Handle noch mit Hwnd() konvertieren und damit klappt es dann auch.

    Komisch ist, dass ich dies in der Funktion _GUICtrlTreeView_GetChecked() dies nicht tun muss.

    mfg

  • Item ID eines TreeView Items nach Suche per _GUICtrlTreeView_GetNext

    • r_eisner
    • 12. Februar 2020 um 16:42
    Zitat von BugFix

    Jetzt erst gesehen: Dass der Parameter eine ID sein soll steht zwar in der Funktionsbeschreibung - die Funktion weiß davon aber nichts. Wenn man sich die Funktion anschaut, wird dort ausschliesslich das Handle verwendet (und erwartet).

    Mmm, dann muss ich erst noch weiter an meinem Script werkeln/checken, um das Problem zu finden. Mit deiner Erklärung sollte ich ja kein Problem mit der Ausgabe haben, da ich ja ein Handle durch _GUICtrlTreeView_GetNext() erhalte. Hab in diesem Zusammenhang nun auch gesehen, dass _GUICtrlTreeView_GetSelection(), die ja im funktionierenden Teil den Ident liefert, in der Hilfe

    folgendes angegeben ist:

    Function _GUICtrlTreeView_GetSelection

    $hWnd Control ID/Handle to the control
  • Item ID eines TreeView Items nach Suche per _GUICtrlTreeView_GetNext

    • r_eisner
    • 12. Februar 2020 um 16:18
    Zitat von autoBert

    ItemParams können keinen Text aufnehmen nur numerische Ganzzahl-Werte.

    mfg (auto-)Bert

    Ja/Nein - Ich gehe den weg über:

    --------------------------------------------

    $pStr = _WinAPI_CreateString("Text")

    _GUICtrlTreeView_SetItemParam($hTreeView,$new_item,$pStr)

    --------------------------------------------

    mit :

    ----------------------------------------------------

    $item = _GUICtrlTreeView_GetSelection($hWndFrom)

    $ptr = _GUICtrlTreeView_GetItemParam($hWndFrom,$item)

    $s = _PointerToStringW($ptr)

    msgbox(0,"",$s )

    ----------------------------------------------------

    erhalte ich den Text auch wieder, nur dass eben eine Iten ID verlangt, die ich beim durchlaufen meiner TreeView Items per _GUICtrlTreeView_GetNext() eben nicht bekomme, sondern ein Handle.

    Mfg

  • Item ID eines TreeView Items nach Suche per _GUICtrlTreeView_GetNext

    • r_eisner
    • 12. Februar 2020 um 15:45

    Hallo,

    wie schon gesagt ist mir wichtig, dass ich mit _GUICtrlTreeView_SetItemParam zusätzlichen Text dem Item übergebe, den ich später wieder auslesen möchte!

    Die Funktion GUICtrlCreateTreeViewItem() beschreibt ItemParam selbsständig, deshalb sagt die Hilfe:

    ----------------------------------------------------------------

    Function _GUICtrlTreeView_SetItemParam

    Warning: Do not use this function on items created with GUICtrlCreateTreeViewItem().

    ----------------------------------------------------------------

    Gibt es eine Möglichkeit aus dem Handle, den _GUICtrlTreeView_GetNext zurück gibt, die Item ID zu ermitteln?

    Mfg r_eisner

  • Item ID eines TreeView Items nach Suche per _GUICtrlTreeView_GetNext

    • r_eisner
    • 12. Februar 2020 um 14:01

    Hallo,

    Ich hinterlege in TreeView Items, die per _GUICtrlTreeView_AddChild generiert werden, per _GUICtrlTreeView_SetItemParam zusätzliche Textinformation.

    In einem späteren Aufruf durchlaufe ich alle TreeView Items und möchte für die checked Items diesen Text ausgeben. Mein Problem ist, dass _GUICtrlTreeView_GetItemParam

    die Item ID verlangt, aber _GUICtrlTreeView_GetNext nur das handle zurück gibt:( Hat jemand eine Lösung, wie ich vom handle zur Item ID komme?

    anbei mein gegenwärtiger Code, der nur 0 liefert:

    -------------------------------------------

    func getChecked()

    Local $Count = _GUICtrlTreeView_GetCount($hTreeView) ;get treeview count

    Local $arr[1] ;treeview items handle array

    Local $Item1, $ItemN, $ItemP;first item, current item, previous item

    Local $iElement

    Local $i = 1 ;iterator

    $file = FileOpen(@ScriptDir & "\log.txt", 2)

    If $Count > 0 Then

    ReDim $arr[$Count]

    $Item1 = _GUICtrlTreeView_GetFirstItem($hTreeView) ;get first item handle

    $ItemN = $Item1 ;current item

    $ItemP = $Item1 ;previous item

    ;get handle of item and save it to array

    For $i = 1 to $Count

    If $i = 1 Then

    $arr[$i-1] = $Item1 ;save first item handle to array

    Else

    $ItemN = _GUICtrlTreeView_GetNext($hTreeView, $ItemP) ;get current item handle by previous item handle

    $ItemP = $ItemN ;save current item handle to temporary variable(change previous item handle to current item handle)

    $arr[$i-1] = $ItemN ;save current item handle to array

    EndIf

    Next

    ;check item ischecked

    FOR $iElement IN $arr

    If _GUICtrlTreeView_GetChecked($hTreeView, $iElement) Then

    $ptr = _GUICtrlTreeView_GetItemParam($hTreeView,_WinAPI_GetDlgCtrlID( $iElement))

    $s = _PointerToStringW($ptr)

    ;msgbox(0,"",$s)

    ;FileWrite($file, $s & @CRLF)

    EndIf

    Next

    EndIf

    FileClose($file)

    EndFunc

    ---------------------------------------------------

    Ich hoffe, mir kann geholfen werden.

    Gruß

    r_eisner

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™