|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать для каждого поля свой идентификатор |
|
[решено] Как сделать для каждого поля свой идентификатор
|
Старожил Сообщения: 410 |
Добрый день. Вот возникла идейка написать программу для тестирования знаний сотрудников = )
Вот написал оболочку, она состоит из формы, там несколько полей ввода, радиокнопки, поля с датами. Подскажите как сделать чтобы после нажатия кнопки всё что записано в полях сохранялось в файл, а если нажать другую кнопку, то поля очищались Как сделать для каждого поля свой идентификатор, чтобы патом можно было понять с какого поля пришла инфа? |
|
------- Отправлено: 16:38, 28-04-2012 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:
Цитата:
|
|
------- Отправлено: 17:30, 28-04-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 410
|
Профиль | Отправить PM | Цитировать Creat0R, постоянно ты ко мне придираешься по этому поводу
![]() А что, никто не знает? |
------- Отправлено: 08:54, 30-04-2012 | #3 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать А в чем собственно проблема?
вы же уже все это делали в предыдущем проекте, и в файл записывали и читали из него. |
Отправлено: 12:17, 30-04-2012 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата McLotos:
![]() |
||
------- Отправлено: 14:55, 30-04-2012 | #5 |
Старожил Сообщения: 410
|
Профиль | Отправить PM | Цитировать ferget, просто я не любитель использовать уже готовый код, иногда проще написать с нуля, так лучше понимается код. = )
Тем более что в первом проекте всё оказалось намного проще, вовсе не обязательно было создавать кучу функций, обошлись комбинацией (один массив+один селект+одна функция) = ) И кстати, наш вариант работает даже в тех случаях если изменилось разрешение экрана, или например заменили монитор, т.е. расставляет ориентируясь по новым параметрам, а не по старой сетке = ) А в этом проекте использовать ту же логику не получится - специфика другая, и я тут подумал что файл это скорее временный вариант, скорее всего тест.админ будет просто отправлять вопросы и варианты ответов всем тест.клиентам по сети, а после ответов собирать с них данные. Кстати вот что получилось! #include <Date.au3> #include <GUIConstants.au3> #include <Array.au3> #include <File.au3> #NoTrayIcon #Require Admin Dim $qCount Dim $bLoop = 1 Dim $GUIConstant=10 ;эта константа нужна чтобы в случае необходимости изменить размеры не пришлось искать в коде все переменные, а заменить только её значение Dim $ProgramName='Администратор тестирования' Opt("GUIOnEventMode", 1) GUICreate($ProgramName,$GUIConstant*80,$GUIConstant*50) ;при появлении события запускаем нужную функцию GUISetOnEvent($GUI_EVENT_CLOSE, "SystemKeys") GUISetOnEvent($GUI_EVENT_MINIMIZE, "SystemKeys") GUISetOnEvent($GUI_EVENT_RESTORE, "SystemKeys") GUICtrlCreateContextMenu () GUISetState (@SW_SHOW) GUISetHelp("notepad");пока не придумал как сделать чтобы вместо пустого блокнота открывалась справка, скорее всего этот блокном будет заполняться скриптом после открытия =) GUISetFont($GUIConstant+$GUIConstant/2, 300) While $bLoop = 1 Local $qCount = InputBox("Введите количество", "Укажите сколько будет вопросов в тесте и нажмите ОК."&@CRLF&@CRLF&"ВНИМАНИЕ! Количество вопросов не должно быть меньше 10и!") If $qCount < 10 Then MsgBox(4096, "Ошибка", "Вы неверно ввели число. Повторите попытку") Else $bLoop = 0 EndIf WEnd ;для удобства, разделим ЮИ админа на 2 вкладки, "создание теста" и "просмотр результатов" $tab=GUICtrlCreateTab ($GUIConstant,$GUIConstant, $GUIConstant*78,$GUIConstant*30) $tab1=GUICtrlCreateTabitem ("Вопросы") GUISetFont($GUIConstant, 300) GUICtrlCreateGroup ("Создано вопросов",$GUIConstant*65,$GUIConstant*5,$GUIConstant*13,$GUIConstant*5) GUISetFont($GUIConstant*2, 300) GUISetFont($GUIConstant+3, 300) GUICtrlCreateLabel("Введите вопрос",$GUIConstant*2,$GUIConstant*5,$GUIConstant*13,$GUIConstant*2) GUICtrlCreateInput("",$GUIConstant*2,$GUIConstant*7,$GUIConstant*30,$GUIConstant*2+$GUIConstant/2) GUICtrlCreateLabel("Вариант1",$GUIConstant*2,$GUIConstant*10,$GUIConstant*10,$GUIConstant*2) GUICtrlCreateInput("",$GUIConstant*2,$GUIConstant*12,$GUIConstant*30,$GUIConstant*2+$GUIConstant/2) GUICtrlCreateRadio("",$GUIConstant*33,$GUIConstant*12+$GUIConstant/2,$GUIConstant,$GUIConstant+$GUIConstant/2) GUICtrlCreateLabel("Вариант2",$GUIConstant*2,$GUIConstant*15,$GUIConstant*10,$GUIConstant*2) GUICtrlCreateInput("",$GUIConstant*2,$GUIConstant*17,$GUIConstant*30,$GUIConstant*2+$GUIConstant/2) GUICtrlCreateRadio("",$GUIConstant*33,$GUIConstant*17+$GUIConstant/2,$GUIConstant,$GUIConstant+$GUIConstant/2) GUICtrlCreateLabel("Вариант3",$GUIConstant*2,$GUIConstant*20,$GUIConstant*10,$GUIConstant*2) GUICtrlCreateInput("",$GUIConstant*2,$GUIConstant*22,$GUIConstant*30,$GUIConstant*2+$GUIConstant/2) GUICtrlCreateRadio("",$GUIConstant*33,$GUIConstant*22+$GUIConstant/2,$GUIConstant,$GUIConstant+$GUIConstant/2) $clear = GUICtrlCreateButton ( "Очистить", $GUIConstant*2, $GUIConstant*27+$GUIConstant/2,$GUIConstant*8) GUICtrlSetOnEvent(-1, "ButtonPressed") $Add = GUICtrlCreateButton ("Добавить", $GUIConstant*11,$GUIConstant*27+$GUIConstant/2, $GUIConstant*8) GUICtrlSetOnEvent(-1, "ButtonPressed") $tab2=GUICtrlCreateTabitem ("Результаты") GUICtrlSetState(-1,$GUI_SHOW) GUICtrlCreateTabitem ("") GUICtrlCreatePic("C:\testbg.bmp",$GUIConstant,$GUIConstant*31,$GUIConstant*70+$GUIConstant*8-2,$GUIConstant*15) GUISetState () ;Команды и параметры принимаемые окном ; -3 закрыть окно ; -4 свернуть окно ; -5 вернуть окно ; 19 очистить форму ; 20 добавить ; 21 закрыть ; 8 поле вопроса ; 10 вариант1 ; 13 вариант2 ; 16 вариант3 ; 11 радио1 ; 14 радио2 ; 17 радио3 ; 4 нулевое состояние радиокнопки ; 1 отмеченная радиокнопка Func ButtonPressed() Local $Questions="C:\Questions.qst" Local $count=_FileCountLines($Questions)/4 Local $quest=GUICtrlRead(8) Local $var1=GUICtrlRead(10) Local $var2=GUICtrlRead(13) Local $var3=GUICtrlRead(16) Local $r1=GUICtrlRead(11) Local $r2=GuiCtrlRead(14) Local $r3=GuiCtrlRead(17) Local $p1 Local $p2 Local $p3 Local $WDAY Local $msg Local $TimeIn=@MDAY&'-'&@MON&'-'&@YEAR&'('&@YDAY&' день года)'&@CRLF&$WDAY&@CRLF&@HOUR&':'&@MIN&':'&@SEC If Not FileExists($Questions) Then _FileCreate($Questions) Else FileOpen($Questions) EndIf GUISetFont($GUIConstant, 300) GUICtrlCreateLabel($count+1&"/"&$qCount,$GUIConstant*67,$GUIConstant*7) Select Case @GUI_CtrlId=19 Case @GUI_CtrlId=20 Case @GUI_CtrlId=21 Exit EndSelect Select Case @WDAY='1' $WDAY='Воскресенье' Case @WDAY='2' $WDAY='Понедельник' Case @WDAY='3' $WDAY='Вторник' Case @WDAY='4' $WDAY='Среда' Case @WDAY='5' $WDAY='Четверг' Case @WDAY='6' $WDAY='Пятница' Case @WDAY='7' $WDAY='Суббота' EndSelect ;какая радио-кнопка отмечена, та и будет правильным ответом, по дефолту это 3 If $r1=1 Then $p1='(ответ)' ElseIf $r2=1 Then $p2='(ответ)' Else $p3='(ответ)' EndIf FileWriteLine($Questions,$count+1&'.'&$quest&@CRLF&'1. '&$var1&$p1&@CRLF&'2. '&$var2&$p2&@CRLF&'3. '&$var3&$p3&@CRLF) EndFunc Func SystemKeys() Select Case @GUI_CTRLID = $GUI_EVENT_CLOSE Exit Case @GUI_CTRLID = $GUI_EVENT_MINIMIZE Case @GUI_CTRLID = $GUI_EVENT_RESTORE EndSelect EndFunc While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop Wend |
------- Отправлено: 06:50, 02-05-2012 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Программа тестер | AJI | Программирование и базы данных | 4 | 12-04-2011 08:57 | |
Прочее - Лан тестер из ноут бука | Molchun78 | Сетевые технологии | 0 | 19-03-2011 11:29 | |
Тестер двигателя автомобиля под 98 виндой | zip_ukraine | Microsoft Windows 95/98/Me (архив) | 7 | 13-12-2008 01:30 | |
Тестер блока питания? | SergOst | Прочее железо | 12 | 15-09-2005 20:47 |
|