- Сообщения
- 3,557
- Репутация
- 628
комбо, конечно, подходит. но на скрине плавающая панель инструментов . а это уже отдельное окно.
по сути задачи это не решение. с другой стороны, если комбо подходит на все сто, то все есть в справке
можно сделать имитацию панели
с картинками и функциями. причем функции менять динамически
по сути задачи это не решение. с другой стороны, если комбо подходит на все сто, то все есть в справке
можно сделать имитацию панели
с картинками и функциями. причем функции менять динамически
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPIConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
Global $iInputTmp, $iButtonCH, $iButtonCH1, $iButtonCH2, $Form1
Global $hSubGUI, $flS
Local $SimpleInput, $SimpleInput1, $SimpleInput2, $SimpleInput3
Local $aParam_Inputs[10]
Local $iOK_Bttn, $iCancel_Bttn
Local $whPos, $aCurInfo, $winpos, $aCurP
$hSubGUI = GUICreate('Sub GUI', 500, 420, -1, -1, $WS_POPUP)
GUISetFont(11)
GUISetBkColor(0x00AACC)
Global $Title = GUICtrlCreateLabel(' Заголовок', 0, 0, 440, 30, BitOR($SS_CENTERIMAGE, $SS_LEFT), $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1, 0x0000FF)
GUICtrlSetColor(-1, 0xFFFFFF)
Global $Mini = GUICtrlCreateLabel('-', 440, 0, 30, 30, $SS_CENTER + $SS_CENTERIMAGE)
GUICtrlSetFont($Mini, 24, 800, 0, "Georgia")
GUICtrlSetBkColor(-1, 0x0000FF)
GUICtrlSetColor(-1, 0xFFFFFF)
Global $Close = GUICtrlCreateLabel('X', 470, 0, 30, 30, $SS_CENTER + $SS_CENTERIMAGE)
GUICtrlSetFont($Close, 10, 800, 0, "Georgia")
GUICtrlSetBkColor(-1, 0x0000FF)
GUICtrlSetColor(-1, 0xFFFFFF)
$SimpleInput = GUICtrlCreateInput('', 20, 35, 300, 22)
$SimpleInput1 = GUICtrlCreateInput('', 170, 102, 60, 22)
$SimpleInput2 = GUICtrlCreateInput('', 170, 132, 60, 22)
$SimpleInput3 = GUICtrlCreateInput('', 300, 132, 60, 22)
GUICtrlCreateLabel('1', 30, 210, 20, 20)
$aParam_Inputs[1] = GUICtrlCreateInput('', 40, 210, 100, 20)
GUICtrlCreateLabel('2', 30, 235, 20, 20)
$aParam_Inputs[2] = GUICtrlCreateInput('', 40, 235, 100, 20)
GUICtrlCreateLabel('3', 30, 260, 20, 20)
$aParam_Inputs[3] = GUICtrlCreateInput('', 40, 260, 100, 20)
GUICtrlCreateLabel('4', 190, 210, 20, 20)
$aParam_Inputs[4] = GUICtrlCreateInput('', 205, 210, 100, 20)
GUICtrlCreateLabel('5', 190, 235, 20, 20)
$aParam_Inputs[5] = GUICtrlCreateInput('', 205, 235, 100, 20)
GUICtrlCreateLabel('6', 190, 260, 20, 20)
$aParam_Inputs[6] = GUICtrlCreateInput('', 205, 260, 100, 20)
GUICtrlCreateLabel('7', 350, 210, 20, 20)
$aParam_Inputs[7] = GUICtrlCreateInput('', 360, 210, 100, 20)
GUICtrlCreateLabel('8', 350, 235, 20, 20)
$aParam_Inputs[8] = GUICtrlCreateInput('', 360, 235, 100, 20)
GUICtrlCreateLabel('9', 350, 260, 20, 20)
$aParam_Inputs[9] = GUICtrlCreateInput('', 360, 260, 100, 20)
$iOK_Bttn = GUICtrlCreateButton('OK', 120, 380, 105, 25)
$iCancel_Bttn = GUICtrlCreateButton('Cancel', 240, 380, 105, 25)
Local $iBF = GUICtrlCreateButton('', 0, 0)
GUICtrlSetState(-1, $GUI_HIDE)
ControlFocus($hSubGUI, '', $iBF)
GUISetState(@SW_SHOW, $hSubGUI)
_GuiB($hSubGUI)
Local $sFolder
While 1
If $flS = 2 Then
$sFolder = FileSelectFolder('', '', 0, '', $Form1)
If Not @error Then GUICtrlSetData($SimpleInput, $sFolder)
$flS = 1
EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $iCancel_Bttn, $iOK_Bttn
Exit
Case $GUI_EVENT_PRIMARYUP
$aCurP = GUIGetCursorInfo($Form1)
If Not @error And $aCurP[4] > 0 Then ContinueLoop
$aCurInfo = GUIGetCursorInfo($hSubGUI)
If @error Or Not $aCurInfo[4] Then
GUISetState(@SW_HIDE, $Form1)
$iInputTmp = 0
ContinueLoop
EndIf
If $iInputTmp = $aCurInfo[4] Then ContinueLoop
$whPos = ControlGetPos($hSubGUI, '', $aCurInfo[4])
$winpos = WinGetPos($hSubGUI)
If $aCurInfo[4] = $SimpleInput1 Or $aCurInfo[4] = $SimpleInput2 Or $aCurInfo[4] = $SimpleInput3 Or $aCurInfo[4] = $SimpleInput Then
If $aCurInfo[4] = $SimpleInput Then
GUICtrlSetImage($iButtonCH2, "shell32.dll", 4)
$flS = 1
Else
$flS = 0
GUICtrlSetImage($iButtonCH2, "shell32.dll", 24)
EndIf
WinMove($Form1, '', $whPos[0] + $winpos[0], $whPos[1] - 20 + $winpos[1])
GUISetState(@SW_SHOW, $Form1)
ControlFocus($hSubGUI, '', $aCurInfo[4])
$iInputTmp = $aCurInfo[4]
ContinueLoop
Else
For $i = 1 To 9
If $aCurInfo[4] = $aParam_Inputs[$i] Then
If $flS Then GUICtrlSetImage($iButtonCH2, "shell32.dll", 24)
$flS = 0
WinMove($Form1, '', $whPos[0] + $winpos[0], $whPos[1] - 20 + $winpos[1])
GUISetState(@SW_SHOW, $Form1)
ControlFocus($hSubGUI, '', $aCurInfo[4])
$iInputTmp = $aCurInfo[4]
ContinueLoop
EndIf
Next
EndIf
EndSwitch
WEnd
Func _GuiB($hWND)
$Form1 = GUICreate("Form1", 85, 20, 0, 0, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_TOOLWINDOW), $hWND)
GUISetBkColor(0xAAAACC)
$iButtonCH = GUICtrlCreateIcon('', '', 0, 0, 25, 20)
GUICtrlSetImage(-1, "shell32.dll", 22)
$iButtonCH1 = GUICtrlCreateIcon('', '', 30, 0, 25, 20)
GUICtrlSetImage(-1, "shell32.dll", 23)
$iButtonCH2 = GUICtrlCreateIcon('', '', 60, 0, 25, 20)
GUISetState(@SW_HIDE, $Form1)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
EndFunc ;==>_GuiB
Func WM_COMMAND($hWND, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $lParam
Switch BitAND($wParam, 0x0000FFFF)
Case $iButtonCH
GUICtrlSetData($iInputTmp, '1Ex_' & Random(2, 5, 1) + Random(2, 5, 1))
ControlFocus($hSubGUI, '', $iInputTmp)
Case $iButtonCH1
GUICtrlSetData($iInputTmp, '2Ex_' & Random(2, 5, 1) + Random(2, 5, 1))
ControlFocus($hSubGUI, '', $iInputTmp)
Case $iButtonCH2
If $flS = 1 Then
$flS = 2
ElseIf Not $flS Then
GUICtrlSetData($iInputTmp, '3Ex_' & Random(2, 5, 1) + Random(2, 5, 1))
EndIf
ControlFocus($hSubGUI, '', $iInputTmp)
Case $Mini
GUISetState(@SW_MINIMIZE, $hSubGUI)
Case $Close
Exit
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Последнее редактирование: