Ticket #1548: example.au3

File example.au3, 3.7 KB (added by JonnyThunder, 15 years ago)

example of listview issue. Drag left to right, then right to left!

Line 
1; Includes first! Must must must!
2#include <GUIConstantsEx.au3>
3#include <ListViewConstants.au3>
4#Include <GuiListView.au3>
5#include <StaticConstants.au3>
6#include <WindowsConstants.au3>
7#include <Array.au3>
8#include <Misc.au3>
9
10
11; Switch on the 'onEvent' notifications
12Opt ("GUIOnEventMode", 1)
13
14
15; Generate the GUI! Ahoy there.
16Global $MainForm, $list_source, $list_target
17$MainForm = GUICreate(" TEST! ", 517, 178)
18
19
20; Source list box
21$list_source = GUICtrlCreateListView("Title|Details", 13, 16, 240, 136, BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS,$LVS_SORTASCENDING))
22
23
24; Target list box
25$list_target = GUICtrlCreateListView("Title|Details", 261, 16, 240, 136, BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS,$LVS_SORTASCENDING))
26
27
28; Populate box with some test stuff
29For $x = 1 to 6
30    GUICtrlCreateListViewItem( _makeJunkName() & "|" & _makeJunkName(), $list_source)
31Next
32
33
34; Handle GUI events
35GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_dragHandler")
36GUISetOnEvent($GUI_EVENT_CLOSE,       "_formEvents")
37GUISetOnEvent($GUI_EVENT_MINIMIZE,    "_formEvents")
38GUISetOnEvent($GUI_EVENT_RESTORE,     "_formEvents")
39
40
41; Show the form
42GUISetState(@SW_SHOW)
43
44
45; Main program loop
46While 1
47    ; Don't really do much in here at all...
48WEnd
49
50
51; Create a junk name for testing
52Func _makeJunkName()
53    Local $labelout = ''
54    For $i = 1 to 10
55        $labelout &= chr(Random(65,90,1))
56    Next
57    Return $labelout
58EndFunc
59
60
61; Function to handle drag and drop
62Func _dragHandler()
63   
64    ; Define some stuff
65    Local $source, $desc
66    Local $cinfo =  GUIGetCursorInfo (WinGetHandle($MainForm))
67    Local $direction = 0
68   
69    ; Check we are dragging from one or the other boxes
70    If $cinfo[4] = $list_source OR $cinfo[4] = $list_target Then
71       
72        ; Are we moving from source to destination
73        If $cinfo[4] = $list_source Then
74            $direction = 1
75        EndIf
76       
77        ; Or are we moving from destination to source
78        If $cinfo[4] = $list_target Then
79            $direction = 2
80        EndIf
81
82        ; Doublecheck we're pressing mouse button
83        If _IsPressed(1) Then
84            if $direction = 1 Then
85                $selecteditems = _GUICtrlListView_GetSelectedCount($list_source);
86            Else
87                $selecteditems = _GUICtrlListView_GetSelectedCount($list_target);
88            EndIf
89           
90            ; Check we actually have selected an item
91            If $selecteditems >= 1 Then
92               
93                ; Wait for keypress!
94                While _IsPressed(1)
95                WEnd
96               
97                ; Get new position
98                Local $newcinfo =  GUIGetCursorInfo (WinGetHandle($MainForm))
99               
100                ; If we were moving from source to destination and we ARE in the destination box
101                If $direction = 1 And $newcinfo[4] = $list_target Then
102                    ConsoleWrite("Moved " & $selecteditems & " items from source to destination" & @CRLF)
103                    _GUICtrlListView_CopyItems ($list_source, $list_target, 1)
104                EndIf
105               
106                ; If we are moving from destination to source and we ARE in source box
107                If $direction = 2 And $newcinfo[4] = $list_source Then
108                    ConsoleWrite("Moved " & $selecteditems & " items from destination to source" & @CRLF)
109                    _GUICtrlListView_CopyItems ($list_target, $list_source, 1)
110                EndIf
111
112            EndIf
113
114        EndIf
115       
116    EndIf
117   
118EndFunc
119
120
121; Function to handle other form events
122Func _formEvents()
123    Select
124        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
125            Exit
126    EndSelect
127EndFunc