- Сообщения
- 8,671
- Репутация
- 2,481
- Версия AutoIt
- 3.3.14.5
- Версия
- 0.2
Библиотека GUIFloatPanel позволяет создавать плавающие панели над указанными элементами GUI.
Зарождение идеи для библиотеки тут.
Отличающиеся возможности:
* Может работать с внешними элементами и окнами (т.е можно назначать на элементы созданные с помощью _GUICtrl*_Create, и даже создавать панель на сторонних окнах).
* Построение меню для кнопки панели из указанной строки (см. описание к функции _GUICtrlFloatPanel_AddButton).
* Появление панели при наведении над указанными элементами.
* Появление панели при навигации с помощью TAB (не совместимо с флагом $FLOATPANEL_POPUPONHOVER).
Пример:
Зарождение идеи для библиотеки тут.
Отличающиеся возможности:
* Может работать с внешними элементами и окнами (т.е можно назначать на элементы созданные с помощью _GUICtrl*_Create, и даже создавать панель на сторонних окнах).
* Построение меню для кнопки панели из указанной строки (см. описание к функции _GUICtrlFloatPanel_AddButton).
* Появление панели при наведении над указанными элементами.
* Появление панели при навигации с помощью TAB (не совместимо с флагом $FLOATPANEL_POPUPONHOVER).
Пример:
Код:
#include <GUIFloatPanel.au3>
#include <GUIEdit.au3>
$hGUI = GUICreate('GUIFloatPanel Example', 300, 200)
$iInput1 = GUICtrlCreateInput('', 20, 20, 200, 20)
$iInput2 = GUICtrlCreateInput('', 20, 50, 200, 20)
$hEdit = _GUICtrlEdit_Create($hGUI, 'Handle control', 20, 80, 200, 40)
$iLabel = GUICtrlCreateLabel('Label', 80, 140, 80, 20)
Dim $aInputs[2] = [$iInput1, $iInput2]
$hFloatPanel = _GUICtrlFloatPanel_Create($hGUI, $aInputs, 0xEBE8AB, 'Header', BitOR($FLOATPANEL_HEADER, $FLOATPANEL_POSTOPLEFT))
_GUICtrlFloatPanel_AddButton($hFloatPanel, 'shell32.dll', -29, _CustomMenu_Proc, 'Custom menu', True)
_GUICtrlFloatPanel_AddButton($hFloatPanel, 'shell32.dll', -40, _Menu_Proc, 'Menu from string', False, 'Func: _FncMsg;Calc: 1+9;Exec: cmd.exe;[MENU:Menu]{Menu Item1|[MENU:SubMenu]{SubMenu Item1|SubMenu Item2}}')
_GUICtrlFloatPanel_AddButton($hFloatPanel, '') ;Separator
_GUICtrlFloatPanel_AddButton($hFloatPanel, 'shell32.dll', -44, '', 'Dummy')
$hFloatPanel2 = _GUICtrlFloatPanel_Create($hGUI, $hEdit, -1, '', BitOR($FLOATPANEL_POSBOTTOMLEFT, $FLOATPANEL_POPUPONHOVER))
_GUICtrlFloatPanel_AssignCtrls($hFloatPanel2, $iLabel)
_GUICtrlFloatPanel_AddButton($hFloatPanel2, 'shell32.dll', -233, _OpenMyComp_Proc, 'My Computer')
_GUICtrlFloatPanel_AddButton($hFloatPanel2, '') ;Separator
_GUICtrlFloatPanel_AddButton($hFloatPanel2, 'shell32.dll', -5, _SelFolder_Proc, 'Select Folder')
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _CustomMenu_Proc($hFloatPanel, $iBttnID, $iCtrlID)
Local $iContextMenu = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
Local $iCalc_MItem = GUICtrlCreateMenuItem('Calc', $iContextMenu)
Local $iMsg_MItem = GUICtrlCreateMenuItem('Message', $iContextMenu)
Local $hParent = _GUICtrlFloatPanel_GetParent($hFloatPanel)
Local $iItem = _GUICtrlFloatPanel_ShowMenu($hFloatPanel, $iContextMenu, $iBttnID, True)
Switch $iItem
Case $iCalc_MItem
Local $sInput = InputBox('Input', 'Calc:', '5 + 5', '', -1, -1, Default, Default, 0, $hParent)
If @error Then
Return $FLOATPANEL_RETNOHIDE
EndIf
ControlSetText($hParent, '', $iCtrlID, '=' & Execute($sInput))
Case $iMsg_MItem
MsgBox(64, @ScriptName, 'Ok', 0, $hParent)
Case Else
Return $FLOATPANEL_RETNOHIDE
EndSwitch
Return $FLOATPANEL_RETHIDE
EndFunc
Func _Menu_Proc($hFloatPanel, $iMenuItemID, $iCtrlID)
Local $hParent = _GUICtrlFloatPanel_GetParent($hFloatPanel)
Local $sItem = GUICtrlRead($iMenuItemID, 1)
Local $sAction = StringRegExpReplace($sItem, '^(\w+):\h*.*', '\1')
Local $sParam = StringRegExpReplace($sItem, '^\w+:\h*(.*)', '\1')
Switch $sAction
Case 'Func'
$sItem = 'Return: ' & Call($sParam, $hParent)
Case 'Calc'
$sItem = '=' & Execute($sParam)
Case 'Exec'
$sItem = 'PID: ' & ShellExecute($sParam)
EndSwitch
ControlSetText($hParent, '', $iCtrlID, $sItem)
EndFunc
Func _FncMsg($hParent)
Return Int(MsgBox(36, @ScriptName, 'Hello i am a message, ok?', 0, $hParent) = 6)
EndFunc
Func _OpenMyComp_Proc($hFloatPanel, $iBttnID, $iCtrlID)
ShellExecute('::{20D04FE0-3AEA-1069-A2D8-08002B30309D}')
Return $FLOATPANEL_RETHIDE
EndFunc
Func _SelFolder_Proc($hFloatPanel, $iBttnID, $iCtrlID)
Local $hParent = _GUICtrlFloatPanel_GetParent($hFloatPanel)
Local $sSel = FileSelectFolder('Select', '', 0, '', $hParent)
If Not @error Then
ControlSetText($hParent, '', $iCtrlID, $sSel)
Return $FLOATPANEL_RETHIDE
EndIf
Return $FLOATPANEL_RETNOHIDE
EndFunc
- Автор
- G.Sandler
- Источник
- Ссылка на источник
Вложения
Последнее редактирование: