Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать для каждого поля свой идентификатор

Ответить
Настройки темы
[решено] Как сделать для каждого поля свой идентификатор

Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Изменения
Автор: McLotos
Дата: 30-04-2012
Добрый день. Вот возникла идейка написать программу для тестирования знаний сотрудников = )
Вот написал оболочку, она состоит из формы, там несколько полей ввода, радиокнопки, поля с датами. Подскажите как сделать чтобы после нажатия кнопки всё что записано в полях сохранялось в файл, а если нажать другую кнопку, то поля очищались
Как сделать для каждого поля свой идентификатор, чтобы патом можно было понять с какого поля пришла инфа?

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 16:38, 28-04-2012

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:

Цитата:
2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе и Правилах форумов.

3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему?).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:30, 28-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Creat0R, постоянно ты ко мне придираешься по этому поводу
А что, никто не знает?

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 08:54, 30-04-2012 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


А в чем собственно проблема?

вы же уже все это делали в предыдущем проекте, и в файл записывали и читали из него.

Отправлено: 12:17, 30-04-2012 | #4


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата McLotos:
постоянно ты ко мне придираешься по этому поводу »
Видимо есть причина .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 14:55, 30-04-2012 | #5


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить 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
Здесь пока не все кнопки работают, и данная версия просто сохраняет вопрос с вариантами ответа в файл, планируется что она будет ещё и шифровать вопросы и ответы к ним, и плюс будет связываться с клиентами через интернет и собирать у них результаты тестирования. Я уже проверил, AutoIt, на способность работы в Интернет, остаётся нерешённой только 1 проблема, я не погу подключить к себе более одного клиента одновременно = )

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 06:50, 02-05-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать для каждого поля свой идентификатор

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход