Что нового

Перетаскивание элементов окна

Атос

Новичок
Сообщения
85
Репутация
0
Привет.

Возможно ли, взять мышью какой-нибудь элемент, и перетащить его в другое место?
Так называемый, Drag&Drop.

Код:
_Example()

Func _Example()
GUICreate("Drag", 400, 300)
Global $bt1 = GUICtrlCreateButton('111', 10, 10, 75, 30)
Global $bt2 = GUICtrlCreateButton('222', 10, 50, 75, 30)
GUISetState(@SW_SHOW)
	While 1
		Switch GUIGetMsg()
			Case -3
				ExitLoop
			Case -13
      MsgBox(0, '', @GUI_DropId)
; 				If @GUI_DropId = $idLabel Then GUICtrlSetData($idLabel, @GUI_DragFile)
		EndSwitch
	WEnd
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
#include <GUIConstantsEx.au3>

$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$Label1 = GUICtrlCreateLabel("Label1", 16, 24, 124, 17)
$Input1 = GUICtrlCreateInput("Input1", 24, 80, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 240, 80, 75, 25)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 40, 168, 97, 17)
$Radio1 = GUICtrlCreateRadio("Radio1", 56, 240, 113, 17)
$Progress1 = GUICtrlCreateProgress(376, 224, 150, 17)
GUISetState()

Local $aInfo, $XDD, $YDD, $XD, $YD, $PC, $WGP

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_PRIMARYDOWN;-7
			$aInfo = GUIGetCursorInfo($Form1)
			If $aInfo[4] Then
				$ID = $aInfo[4]
				$WGP = WinGetPos($Form1)
				$PC = ControlGetPos($Form1, '', $ID)
				$XD = $aInfo[0] - $PC[0]
				$YD = $aInfo[1] - $PC[1]
				Opt('GUIOnEventMode', 1)
				While $aInfo[2]
					$aInfo = GUIGetCursorInfo($Form1)
					$XDD = $aInfo[0] - $XD
					$YDD = $aInfo[1] - $YD
					If $XDD <= 0 Then
						$XDD = 0
					ElseIf $XDD >= $WGP[2] - $PC[2] Then
						$XDD = $WGP[2] - $PC[2]
					EndIf
					If $YDD <= 0 Then
						$YDD = 0
					ElseIf $YDD >= $WGP[3] - $PC[3] - 29 Then
						$YDD = $WGP[3] - $PC[3] - 29
					EndIf
					GUICtrlSetPos($ID, $XDD, $YDD, $PC[2], $PC[3])
				WEnd
				Opt('GUIOnEventMode', 0)
			EndIf
		Case -3
			Exit
	EndSwitch
WEnd
мой вариант
 
Верх