AlexNewman
Новичок
- Сообщения
- 15
- Репутация
- 0
Снова здравствуйте! Бьюсь над созданием удобного и красивого интерфейса, написал на "вкладках" все супер, но мне не нравится, остановился на следующем варианте
Есть ошибки:
1) при переключении с 2 на 1, некорректно отображается содержимое, остаётся старое и тд
2) кнопки срабатывают не с первого раза
3) не закрывает окно по крестику, только кнопки (так же из меню)
Помогите пожалуйста с решением
Цель: написание интуитивно понятного интерфейса, вместо цифр на кнопках иконки, область под кнопками должна перерисовываться каждый раз, элементы самые разные.
Тема возможно обсуждалось, где то видел, но вновь найти не получается
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon ; не показывать иконку в трее
Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $hGUI
Local $Button_11, $Button_12, $Button_13
Local $CheckBox_11, $CheckBox_12, $CheckBox_13, $CheckBox_21, $CheckBox_22, $CheckBox_23, $CheckBox_24, $CheckBox_25
Local $iFileMenu, $iFileItem, $sFilePath, $iStatusBar
Local $iHelpMenu, $iInfoItem, $iExit, $iRecentFilesMenu, $hGui
Local $iViewMenu, $iViewStatusItem, $iStyleitem
Local $iRadioitem1, $iRadioitem2, $iRadioitem3, $iRadioitem4
$hGUI = GUICreate("INTERFACE", 640, 480) ; Создаёт окно в центре экрана
$Button_1 = GUICtrlCreateButton("1", 10, 10, 50, 50)
GUICtrlSetTip ($Button_1, 'Подсказка1')
$Button_2 = GUICtrlCreateButton("2", 60, 10, 50, 50)
GUICtrlSetTip ($Button_2, 'Подсказка2')
$Button_3 = GUICtrlCreateButton("3", 110, 10, 50, 50)
GUICtrlSetTip ($Button_3, 'Подсказка3')
$Button_4 = GUICtrlCreateButton("4", 160, 10, 50, 50)
GUICtrlSetTip ($Button_4, 'Подсказка4')
$Button_5 = GUICtrlCreateButton("5", 210, 10, 50, 50)
GUICtrlSetTip ($Button_5, 'Подсказка5')
$Button_6 = GUICtrlCreateButton("6", 260, 10, 50, 50)
GUICtrlSetTip ($Button_6, 'Подсказка6')
$Button_7 = GUICtrlCreateButton("7", 310, 10, 50, 50)
GUICtrlSetTip ($Button_7, 'Подсказка7')
$Button_99 = GUICtrlCreateButton("EXIT", 510, 10, 50, 50)
GUICtrlSetTip ($Button_99, 'ВЫХОД')
$iFileMenu = GUICtrlCreateMenu("&Файл")
$iFileItem = GUICtrlCreateMenuItem("Открыть", $iFileMenu)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$iHelpMenu = GUICtrlCreateMenu("?")
GUICtrlCreateMenuItem("Сохранить", $iFileMenu)
GUICtrlSetState(-1, $GUI_DISABLE)
$iInfoItem = GUICtrlCreateMenuItem("Информация", $iHelpMenu)
$iExit = GUICtrlCreateMenuItem("Выход", $iFileMenu)
$iRecentFilesMenu = GUICtrlCreateMenu("Последние файлы", $iFileMenu, 1)
GUICtrlCreateMenuItem("", $iFileMenu, 2) ; создаёт разделительную линию
$iViewMenu = GUICtrlCreateMenu("Вид", -1, 1) ; Создан до элемента меню "?"
$iViewStatusItem = GUICtrlCreateMenuItem("Строка состояния", $iViewMenu)
GUICtrlSetState(-1, $GUI_CHECKED)
$iStyleitem = GUICtrlCreateMenuItem("Стиль GUI POPUP", $iViewMenu)
GUICtrlCreateMenuItem("", $iViewMenu)
$iRadioitem1 = GUICtrlCreateMenuItem("Радио1", $iViewMenu, -1, 1)
$iRadioitem2 = GUICtrlCreateMenuItem("Радио2", $iViewMenu, -1, 1)
$iRadioitem3 = GUICtrlCreateMenuItem("Радио3", $iViewMenu, -1, 1)
GUICtrlSetState(-1, $GUI_CHECKED)
$iRadioitem4 = GUICtrlCreateMenuItem("Радио4", $iViewMenu, -1, 1)
GUICtrlSetState(-1, $GUI_FOCUS)
$iStatusBar = GUICtrlCreateLabel('Строка состояния', 5, 442, 300, 16);, BitOR($SS_SIMPLE, $SS_SUNKEN))
GUISetState() ; показывает созданное окно
; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
Switch GUIGetMsg()
;~ #comments-start
Case $iFileItem
$sFilePath = FileOpenDialog("Выберите файл...", @TempDir, "Все (*.*)", 3, '', $hGui)
If Not @error Then GUICtrlCreateMenuItem($sFilePath, $iRecentFilesMenu)
Case $iViewStatusItem ; Событие при клике на пункте меню "Строка состояния"
If BitAND(GUICtrlRead($iViewStatusItem), $GUI_CHECKED) = $GUI_CHECKED Then ; Если галочка в наличии, тогда
GUICtrlSetState($iViewStatusItem, $GUI_UNCHECKED) ; Убирает галочку
GUICtrlSetState($iStatusBar, $GUI_HIDE) ; Скрывает строку состояния
Else ; Иначе
GUICtrlSetState($iViewStatusItem, $GUI_CHECKED) ; Ставит галочку
GUICtrlSetState($iStatusBar, $GUI_SHOW) ; Показывает строку состояния
EndIf
Case $iStyleitem
If BitAND(GUICtrlRead($iStyleitem), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($iStyleitem, $GUI_UNCHECKED)
GUISetStyle($GUI_SS_DEFAULT_GUI)
Else
GUICtrlSetState($iStyleitem, $GUI_CHECKED)
GUISetStyle(BitOR($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
EndIf
Case $iInfoItem
MsgBox(64, "Информация", "Изменение цвета меню смотрите в примере GUICtrlGetHandle", 0, $hGui)
Case $iExit
$GUI_EVENT_CLOSE
Exit
ExitLoop
EndSwitch
$Msg = GUIGetMsg()
Switch $Msg
Case $Button_99
$GUI_EVENT_CLOSE
Exit
Case $Button_1
GUICtrlDelete($CheckBox_21)
GUICtrlDelete($CheckBox_22)
GUICtrlDelete($CheckBox_23)
GUICtrlDelete($CheckBox_24)
GUICtrlDelete($CheckBox_25)
;~ $CheckBox_25 = GUICtrlDelete
;~ ControlHide("CheckBox_25", "INTERFACE", $CheckBox_25)
$CheckBox_11 = GUICtrlCreateCheckbox("CheckBox_11", 20, 110, 100)
$CheckBox_12 = GUICtrlCreateCheckbox("CheckBox_12", 20, 130, 100)
$CheckBox_13 = GUICtrlCreateCheckbox("CheckBox_13", 20, 150, 100)
Case $Button_2
GUICtrlDelete($CheckBox_11)
GUICtrlDelete($CheckBox_12)
GUICtrlDelete($CheckBox_13)
$CheckBox_21 = GUICtrlCreateCheckbox("CheckBox_21", 20, 140, 100)
$CheckBox_22 = GUICtrlCreateCheckbox("CheckBox_22", 20, 160, 100)
$CheckBox_23 = GUICtrlCreateCheckbox("CheckBox_23", 20, 180, 100)
$CheckBox_24 = GUICtrlCreateCheckbox("CheckBox_24", 20, 200, 100)
$CheckBox_25 = GUICtrlCreateCheckbox("CheckBox_25", 20, 220, 100)
Case $Button_3
_GUICtrlListView_DeleteAllItems
EndSwitch
WEnd
Есть ошибки:
1) при переключении с 2 на 1, некорректно отображается содержимое, остаётся старое и тд
2) кнопки срабатывают не с первого раза
3) не закрывает окно по крестику, только кнопки (так же из меню)
Помогите пожалуйста с решением
Цель: написание интуитивно понятного интерфейса, вместо цифр на кнопках иконки, область под кнопками должна перерисовываться каждый раз, элементы самые разные.
Тема возможно обсуждалось, где то видел, но вновь найти не получается