Что нового

[Окна, Диалоги] Диалоговое окно с пунктами меню

forfrends

Новичок
Сообщения
176
Репутация
3
Друзья помогите написать диалоговое окно с возможностью выбора пунктов, примерно как на рисунке:

5a986bd94649.png


ну и кнопками "Ок" и "Отмена"
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Окна, Диалоги] создание пунктов меню

А что мешает использовать Koda?
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
я пробовал, но незнаю что делать с эти кодом
например:

$a = MsgBox(4, "Текст", "Текст2")

если я выберу "Да" то $a = 1
если я выберу "Отмена" то $a = 2

а в коде, котрый мне выдала Koda какую кнопку я бы не жал ответ один и тотже


Добавлено:
Сообщение автоматически объединено:

Вот код, который мне выдала Koda
Как мне узнать что нажата клавиша "Ок" или "Отмена" или какой пункт выбран?

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Игорь\Рабочий стол\Form2.kxf
$Form2 = GUICreate("Форма работы", 357, 187, 293, 213)
GUISetIcon("D:\009.ico")
$GroupBox1 = GUICtrlCreateGroup("", 8, 8, 257, 161)
$Radio1 = GUICtrlCreateRadio("Radio1", 16, 24, 17, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 16, 64, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio3 = GUICtrlCreateRadio("Radio3", 16, 112, 17, 17)

$Label1 = GUICtrlCreateLabel("Экстримал", 40, 24, 85, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Занятой", 40, 64, 66, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Хранитель", 42, 111, 83, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Больльшой зароботок, но и большой риск", 32, 40, 218, 17)
$Label5 = GUICtrlCreateLabel("Стандарт - тихая работа, небольшой риск", 32, 80, 215, 17)
$Label6 = GUICtrlCreateLabel("Минимальный риск, и маленький но", 32, 128, 190, 17)
$Label7 = GUICtrlCreateLabel("и доход", 32, 96, 42, 17)
$Label8 = GUICtrlCreateLabel("стабильный доход", 32, 144, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("&OK", 272, 16, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("&Cancel", 272, 48, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

Case $Radio2
EndSwitch
WEnd
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
forfrends
Вот мой пример, надеюсь подойдет...

Код:
; НАЧАЛО

 $D=fDIALOG()

 if BitAND($D,32) then
  MsgBox(0,"Внимание!","Нажата кнопка Ok")
 else
  MsgBox(0,"Внимание!","Нажата кнопка Отмена")
 endif

 Func fDIALOG()

  $DIALOG=GUICreate("Диалоговое окно",300,150)

  $Y=10

  $CB1=GUICtrlCreateCheckbox("Запустить программу в режиме совместимости",10,$Y,-1,-1)
  $CB2=GUICtrlCreateCheckbox("256 цветов",10,$Y+25,-1,-1)
  $CB3=GUICtrlCreateCheckbox("Разрешение экрана 640x480",10,$Y+50,-1,-1)
  $CB4=GUICtrlCreateCheckbox("Отключить визуальное оформление",10,$Y+75,-1,-1)

  $BOK=GUICtrlCreateButton("Ok",10,$Y+100,100,25)
  $BCANCEL=GUICtrlCreateButton("Отмена",150,$Y+100,100,25)

  GUISetState()

  $R=0

  while true

   switch GUIGetMsg()
    case -3

     exitloop

    case $BOK
     
     if GUICtrlRead($CB1)=1 then $R=BitOR($R,2)
     if GUICtrlRead($CB2)=1 then $R=BitOR($R,4)
     if GUICtrlRead($CB3)=1 then $R=BitOR($R,8)
     if GUICtrlRead($CB4)=1 then $R=BitOR($R,16)
     $R=BitOR($R,32)
     Return $R

    case $BCANCEL

     if GUICtrlRead($CB1)=1 then $R=BitOR($R,2)
     if GUICtrlRead($CB2)=1 then $R=BitOR($R,4)
     if GUICtrlRead($CB3)=1 then $R=BitOR($R,8)
     if GUICtrlRead($CB4)=1 then $R=BitOR($R,16)
     Return $R
 
   endswitch

  wend

 EndFunc

; КОНЕЦ
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
Супер!!!!

а как сделать что бы мог быть выбранным только один пункт типа:

4121bce34200.png


и как отпределить какой пункт выбран а какой - нет?
Просто дезнаю что это за код:

Код:
if GUICtrlRead($CB1)=1 then $R=BitOR($R,2)
     if GUICtrlRead($CB2)=1 then $R=BitOR($R,4)
     if GUICtrlRead($CB3)=1 then $R=BitOR($R,8)
     if GUICtrlRead($CB4)=1 then $R=BitOR($R,16)
     $R=BitOR($R,32)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Попробуйте так:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Игорь\Рабочий стол\Form2.kxf
$Form2 = GUICreate("Форма работы", 357, 187, 293, 213)
GUISetIcon("D:\009.ico")
$GroupBox1 = GUICtrlCreateGroup("", 8, 8, 257, 161)
$Radio1 = GUICtrlCreateRadio("Radio1", 16, 24, 17, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 16, 64, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio3 = GUICtrlCreateRadio("Radio3", 16, 112, 17, 17)

$Label1 = GUICtrlCreateLabel("Экстримал", 40, 24, 85, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Занятой", 40, 64, 66, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Хранитель", 42, 111, 83, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Больльшой зароботок, но и большой риск", 32, 40, 218, 17)
$Label5 = GUICtrlCreateLabel("Стандарт - тихая работа, небольшой риск", 32, 80, 215, 17)
$Label6 = GUICtrlCreateLabel("Минимальный риск, и маленький но", 32, 128, 190, 17)
$Label7 = GUICtrlCreateLabel("и доход", 32, 96, 42, 17)
$Label8 = GUICtrlCreateLabel("стабильный доход", 32, 144, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("&OK", 272, 16, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("&Cancel", 272, 48, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
	Select
		Case $nMsg = $GUI_EVENT_CLOSE
			ExitLoop
		Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) = $GUI_CHECKED
			MsgBox(64, 'Info:', 'You clicked the Radio 1 and it is Checked.')
		Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) = $GUI_CHECKED
			MsgBox(64, 'Info:', 'You clicked on Radio 2 and it is Checked.')
		Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio3), $GUI_CHECKED) = $GUI_CHECKED
			MsgBox(64, 'Info:', 'You clicked on Radio 3 and it is Checked.')
	EndSelect
WEnd
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
Что - то не получается.
Нужно что бы после нажатия кнопки "Ок" или "Отмена" диалоговое окно закрылось и программа шла далее, но окно остается "висеть" пока программа не бедет закрыта.
Как завершить работу этого окна?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
forfrends сказал(а):
Что - то не получается.
Нужно что бы после нажатия кнопки "Ок" или "Отмена" диалоговое окно закрылось и программа шла далее, но окно остается "висеть" пока программа не бедет закрыта.
Как завершить работу этого окна?

Можно так:
Код:
; ...
#EndRegion ### END Koda GUI section ###

Dim $i = 0

While 1
$nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $Button2
			_Exit()
        Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) = $GUI_CHECKED
			My_Func()
        Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) = $GUI_CHECKED
			My_Func()
        Case $nMsg = $Button1 And BitAND(GUICtrlRead($Radio3), $GUI_CHECKED) = $GUI_CHECKED
			My_Func()
    EndSelect
WEnd

Func My_Func()
	GUISetState(@SW_HIDE)
	MsgBox(0,"Go!","Программа работает дальше!")
		While $i < 10
			MsgBox(0,"Считаем!",$i)
			$i += 1
		WEnd
	Exit
EndFunc

Func _Exit()
	If MsgBox(36, 'Выход!', 'Хотите закрыть программу?') = 6 Then Exit
EndFunc
 
Верх