Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Treeview drag (wie mit gedrückter ctrl Taste) in Textbox

Forumthread: Treeview drag (wie mit gedrückter ctrl Taste) in Textbox

Treeview drag (wie mit gedrückter ctrl Taste) in Textbox
08.11.2024 09:19:12
Robert
Hallo,
ich habe eine userform1, einen Treeview4 und eine Textbox1.

ich möchte,
  • dass man nur einen Knoten, der keine Kinder hat auf eine Textbox ziehen kann (ohne, dass der Knoten aus dem Baum verschwindet, also wie bei gedrückter ctrl Taste). Zumindest wird dann kein Text abgelegt, falls der Knoten Kinder hat

  • Weiters soll es nicht erforderlich sein, dass der Knoten, der verschoben wird, vorher selektiert werden muss.

  • Beim Knoten, der gedraggt wird muss auch der Key ermittelt werden (den benötige ich später im Programm), der Text wird in der Textbox angegezeigt.


  • Das Thema drag/drop ist mir ganz neu, ich blicke da leider nicht durch, Beispiele aus dem I-Net, die zB eine Listbox als Ziel verwenden kann ich leider nicht , mangels Kenntnis, umschreiben, da die events nicht ident sind.

    Danke für eure Hilfe
    Anzeige

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Treeview drag (wie mit gedrückter ctrl Taste) in Textbox
    08.11.2024 13:12:04
    Robert
    ist gelöst
    AW: Treeview drag (wie mit gedrückter ctrl Taste) in Textbox
    08.11.2024 14:34:13
    Beverly
    Hi Robert,

    wie wäre es, wenn du die User in diesem Forum an deiner Lösung teilhaben lassen und deshalb deine Lösung posten würdest? Ein Forum funktioniert jedenfalls nur auf diesem Weg: Geben und Nehmen .

    Bis später
    Karin

    Link zur Homepage: https://excel-inn.de/
    Anzeige
    AW: Treeview drag (wie mit gedrückter ctrl Taste) in Textbox
    08.11.2024 16:32:45
    Robert

    So, jetzt wird ein bisschen komplizierter, ich wollte ja
  • dass man nur einen Knoten, der keine Kinder hat auf eine Textbox ziehen kann (ohne, dass der Knoten aus dem Baum verschwindet, also wie bei gedrückter ctrl Taste). Zumindest wird dann kein Text abgelegt, falls der Knoten Kinder hat

  • Weiters soll es nicht erforderlich sein, dass der Knoten, der verschoben wird, vorher selektiert werden muss.

  • Beim Knoten, der gedraggt wird muss auch der Key ermittelt werden (den benötige ich später im Programm), der Text wird in der Textbox angegezeigt.


  • So gehts:
    Bei mouseover den korrekten Knoten finden, dazu wird X,Y von Pixel Twips umgerechnet werden, der oft zu findende Faktor 15 funktioniert bei mir nicht zuverlässig
    Quelle: https://dutchgemini.wordpress.com/2010/12/17/listview-tristate-checkboxes-userformexcel/

    Drag mit Ctrl :
    
    
    Private Sub Tree_OLECompleteDrag(Effect As Long)
    Effect = vbDropEffectCopy
    End Sub


    Drag:
    
    
    Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
    Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long

    Private Sub MyTree_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As stdole.OLE_XPOS_PIXELS, ByVal Y As stdole.OLE_YPOS_PIXELS)

    Dim hDC As Long
    Dim RetVal As Long
    Dim TwipsPerPixelX As Long
    Dim TwipsPerPixelY As Long
    Const LOGPIXELSX = 88
    Const LOGPIXELSY = 90
    Const TWIPSPERINCH = 1440

    hDC = GetDC(0)
    TwipsPerPixelX = TWIPSPERINCH / GetDeviceCaps(hDC, LOGPIXELSX)
    TwipsPerPixelY = TWIPSPERINCH / GetDeviceCaps(hDC, LOGPIXELSY)

    X = X * TwipsPerPixelX
    Y = Y * TwipsPerPixelY



    If Not (MyTree.HitTest(X, Y) Is Nothing) Then

    Dim nde As Node
    Set nde = MyTree.HitTest(X, Y)

    If nde.Children = 0 Then ' Knoten hat keine Kinder - selektion bei MousOver
    nde.Selected = True
    'MyKey=nde.Key ' Der Key zum Knoten
    End If

    Set nde = Nothing

    End If

    End Sub
    Anzeige
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige