Page 1 of 1 1
Topic Options
#193010 - 2009-03-19 08:09 PM Drag-n-Drop TreeView Node
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
Woot!
Shawn recently added a new method to KiXforms.Net 3.2.16 , so rush over and get your new version now!

The New Method is GetNodeAt()

With this new Method you can do kewl stuff like this:
 Code:
;region Setup Variables
Break On
$System = CreateObject("Kixforms.System")
If Not $System
  $nul = MessageBox("KiXforms.Net Not Initiated. This Script Will Now Close.", "Error", 16)
  Quit()
EndIf
$nul = $System.Application.EnableVisualStyles

Global $MovingDelta

$TreeViewNodeArray = Split('Node 0,Node 1,Node 2,Node 3,Node 4', ',')
;endregion

;region Main Form
$Form = $System.Form()
$Form.StartPosition = 1  ;FormStartPosition_CenterScreen
$Form.Size = $System.Size(400, 300) ;(Width,Height)
$Form.Text = "Drag-n-Drop TreeView Node"

$TreeView = $System.TreeView()
$TreeView.Dock = 3  ;Left
$TreeView.MouseDown = "CheckForRightMouseClick($$System.Sender)"
$nul = $Form.Controls.Add($TreeView)

For Each $Node in $TreeViewNodeArray
  $TreeViewNode = $TreeView.Nodes.Add($System.TreeNode($Node))
Next

$TreeView.BeginUpdate
$TreeView.SelectedNode = $TreeView.Nodes.Item(0)
$TreeView.Tag = $TreeView.SelectedNode
$TreeView.EndUpdate

$Form.Show  ;Displays the Form

While $Form.Visible
  $Nul = Execute($Form.DoEvents())
Loop
Exit 0
;endregion

;region TreeView Functions
Function CheckForRightMouseClick($Sender)
  $Button = $Sender.MouseDownEventArgs.Button
  $CursorXY = $Sender.PointToClient($Sender.MousePosition)
  
  If $Button = $System.MouseButtons_Left
    $Node = $Sender.GetNodeAt($CursorXY.x, $CursorXY.y)
    If $Node
      $TreeView.SelectedNode = $Node
      $TreeView.Tag = $Node
      $TreeView.BeginUpdate
      $TreeViewNode.Tag = $TreeView.SelectedNode
      $TreeViewNode = $System.Label()
      $TreeViewNode.AutoSize = -1  ;True
      $TreeViewNode.BackColor = $TreeView.BackColor
      $TreeViewNode.BorderStyle = 1  ;FixedSingle
      $TreeViewNode.MouseMove = "ControlMove($$System.sender)"
      $TreeViewNode.MouseUp = "ControlMouseUp($$System.sender)"
      $TreeViewNode.Text = $TreeView.SelectedNode.Text
      $TreeViewNode.TextAlign = 16  ;MiddleLeft
      $TreeView.SelectedNode.Remove
      $TreeView.EndUpdate
      $nul = $Form.Controls.Add($TreeViewNode)
      
      $CursorXY = $Sender.PointToClient($Sender.MousePosition)
      $TreeViewNode.Top = $CursorXY.y - ($TreeViewNode.Height /2)
      $TreeViewNode.Left = $CursorXY.x - ($TreeViewNode.Width /2)
      $TreeViewNode.BringToFront
      $MovingDelta = $TreeViewNode.PointToClient($TreeViewNode.MousePosition)
    EndIf
  EndIf
EndFunction

Function ControlMove($Sender)
  If $Sender And ($Sender.MouseButtons & $System.MouseButtons_Left)
    $pt1 = $Form.PointToClient($Form.MousePosition)
    If ($pt1.x - $MovingDelta.x) >= 0
      $Sender.Left = $pt1.x - $MovingDelta.x
    EndIf
    If ($pt1.y - $MovingDelta.y) >= 0
      $Sender.Top = $pt1.y - $MovingDelta.y
    EndIf
    $Node = $TreeView.GetNodeAt($Sender.Left, $Sender.Top)
    $TreeView.SelectedNode = $Node
  EndIf
EndFunction

Function ControlMouseUp($Sender)
  $Node = $TreeView.Tag
  If $Sender.Left > $TreeView.Left And $Sender.Left < $TreeView.Right And $Sender.Top > $TreeView.Top And $Sender.Top < $TreeView.Bottom
    $nul = $TreeView.Nodes.Insert($TreeView.SelectedNode.Index, $Node)
  EndIf
  $Sender.Dispose
EndFunction
;endregion

_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
#193012 - 2009-03-19 08:50 PM Re: Drag-n-Drop TreeView Node [Re: Benny69]
NTDOC Administrator Offline
Administrator
*****

Registered: 2000-07-28
Posts: 11625
Loc: CA
I'm assuming it's the same as the one he had in the original Classic version.

Nice to have for sure.

Top
#193013 - 2009-03-19 08:53 PM Re: Drag-n-Drop TreeView Node [Re: NTDOC]
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
Tru Dat!
_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
Page 1 of 1 1


Moderator:  Shawn, ShaneEP, Ruud van Velsen, Arend_, Jochen, Radimus, Glenn Barnas, Allen, Mart 
Hop to:
Shout Box

Who's Online
0 registered and 581 anonymous users online.
Newest Members
Audio, Hoschi, Comet, rrosell, PatrickPinto
17880 Registered Users

Generated in 0.05 seconds in which 0.024 seconds were spent on a total of 13 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org