TreeView Edit funktioniert nicht (Bsp aus der Hilfe)

  • Hi,
    könnt ihr mal dieses Bsp aus der Hilfe testen.
    Es geht um die Funktion _GUICtrlTreeView_EditText.

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiTreeView.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_TV = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

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

    _Main()

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

    Func _Main()

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

    Local $hItem[6], $hImage, $tRect, $hTreeView
    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)

    GUICreate("TreeView Edit Text", 400, 300)

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

    $hTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE)
    ; turn off unicode at this time dllstruct doesn't support them
    _GUICtrlTreeView_SetUnicodeFormat($hTreeView, False)
    GUISetState()

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

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 110)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 131)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 165)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 168)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 137)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 146)
    _GUICtrlTreeView_SetNormalImageList($hTreeView, $hImage)

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

    For $x = 0 To _GUIImageList_GetImageCount($hImage) - 1
    $hItem[$x] = _GUICtrlTreeView_Add($hTreeView, 0, StringFormat("[%02d] New Item", $x + 1), $x, $x)
    Next

    ; Edit item 0 label
    _GUICtrlTreeView_EditText($hTreeView, $hItem[0])
    Sleep(500)
    Send("This is a test")
    Sleep(500)
    _GUICtrlTreeView_EndEdit($hTreeView)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]

    Das Item wird zwar kurz geändert, aber es erscheint dann wieder der alte Text

  • OK, dann bin ich beruhigt.
    Ich wollte halt den Text direkt eingeben.
    Deshalb wollte ich die Funktion nehmen.

    Muß ich es wohl über ein Editfeld erledigen

  • Stop !!!

    Moin,

    der Bug scheint nicht in den Funktionen zu sitzen ...

    Versucht mal den Text manuell zu ändern, also

    Zweimal anklicken und den Text ändern ... -> Geht nicht !!!


    Gruß
    Greenhorn

    p.s.

    MSDN


    Tree-View Label Editing
    The user can directly edit the labels of items in a tree-view control that has the TVS_EDITLABELS style. The user begins editing by clicking the label of the item that has the focus. An application begins editing by using the TVM_EDITLABEL message. The tree-view control notifies the parent window when editing begins and when it is canceled or completed. When editing is completed, the parent window is responsible for updating the item's label, if appropriate.

    When label editing begins, a tree-view control sends its parent window a TVN_BEGINLABELEDIT notification message. By processing this notification, an application can allow editing of some labels and prevent editing of others. Returning zero allows editing, and returning nonzero prevents it.

    When label editing is canceled or completed, a tree-view control sends its parent window a TVN_ENDLABELEDIT notification message. The lParam parameter is the address of an NMTVDISPINFO structure. The item parameter is a TVITEM structure that identifies the item and includes the edited text. The parent window is responsible for updating the item's label if it wishes to keep the new label. The pszText member of TVITEM is zero if editing is canceled.

    During label editing, typically in response to the TVN_BEGINLABELEDIT notification message, you can retrieve the handle to the edit control used for label editing by using the TVM_GETEDITCONTROL message. You can send the edit control an EM_SETLIMITTEXT message to limit the amount of text a user can enter or subclass the edit control to intercept and discard invalid characters. Note, however, that the edit control is displayed only after TVN_BEGINLABELEDIT is sent.



    3 Mal editiert, zuletzt von Greenhorn (11. Februar 2009 um 21:34)