| Уроки, Туториалы, Мануалы со всего света! https://lessons.forumenko.com/ |
|
| Midlet Pascal. Работа с формами. https://lessons.forumenko.com/topic80.html |
Страница 1 из 1 |
| Автор: | DiAm [ 14-03, 16:46 ] |
| Заголовок сообщения: | Midlet Pascal. Работа с формами. |
Сейчас мы попробуем создать более сложное приложение, использующее визуальное оформление(форму). Пользователь должен будет ввести свое имя и возраст, а наша программа выведет их на экран. Нам понадобятся 2 переменные типа Integer(это будут ID объектов-текстовых полей), 2 типа String, и одна типа Command(кнопка). Пропишем их в поле var Код: var itemid1,itemid2:Integer; name,age:string; cmd:command Для начала работы с формами нужно перейти в режим формы командой ShowForm (чтобы вернуться обратно в режим рисования введите команду ShowCanvas) Добавим первое текстовое поле на экран: itemid1:=FormAddTextField('Введите ваше имя', '', 20, TF_ANY); FormAddTextField - добавляет текстовое поле на экран. Параметры-Название(будет написано над полем),Что будет написано в поле стандартно, позиция относительно надписи, и флаг. Первый параметр-Введите ваше имя,второй оставим пустым,третий желательно оставить 20, хотя можете поэкспериментировать. Относительно флагов: существует несколько флагов текстового поля. TF_ANY-можно вводить любые символы,TF_NUMERIC-только числа, TF_PASSWORD-все символы заменяются символом *. ietmid1-это ИД нашего объекта-текстового поля. Заметьте: Repaint Вводить ненужно, т.к. мы работаем с формой. Итак, продолжим. Аналогично добавим второе текстовое поле, но уже с флагом TF_NUMERIC itemid2:=FormAddTextField('Введите ваш возраст', '', 20, TF_NUMERIC); Теперь добавим кнопку. cmd:=CreateCommand('OK',CM_OK,1); CreateCommand-добавляет кнопку на форму. Первый параметр-надпись на кнопке, вторая-флаг, а третий параметр можно не трогать. Отличие кнопки от текстового поля в том, что кнопку нужно дополнительной командой добавить на форму. AddCommand(cmd) В качестве параметра указываем ID этой кнопки, который хранится в переменной cmd. Теперь нам нужно сделать задержку, чтобы приложение не закрывалось раньше времени. Однако delay тут уже не поможет-ведь пользователь может и не успеть написать текст, или напишет и будет ждать. Для задержки мы будем использовать кнопку и цикл repeat...until. С помощью процедуры GetClickedCommand мы можем узнать ID последней нажатой клавиши или кнопки. Итак, пишем цикл: repeat Delay(100) until GetClickedCommand=cmd То есть: повторять команду Delay(100)-задержка 0,1 секунды до тех пор, пока id нажатой кнопки не будет равен cmd-т.е. попросту пока мы не нажмем кнопку. После того, как кнопка была нажата, нужно считать данные с текстовых полей. Для этого существует процедура FormGetText(ID) - в ID нужно указывать ИД текстового поля. Итак, читаем данные в переменные name и age: name:=formgettext(itemid1) age:=formgettext(itemid2) Теперь нужно организовать вывод текста на экран. Для начала переключимся в режим холста(рисования) командой ShowCanvas Теперь выведем данные на экран командой DrawText, причем первую строчку сделаем красной, а вторую -синей: SetColor(255,0,0) DrawText('Ваше имя:'+name,0,0) SetColor(0,0,255) DrawText('Ваш возраст:'+age,0,30) Не забудем перерисовать данные с "виртуального" экрана и поставим 10-секундую задержку: repaint delay(10000) Готово! Полный листинг программы: Код: Program Forms; var itemid,itemid2:integer; cmd:command; name,age:string; Begin ShowForm; itemid:=FormAddTextField('Введите ваше имя:','',20,TF_ANY); itemid2:=FormAddTextField('Введите ваш возраст:', '', 20, TF_NUMERIC); cmd:=CreateCommand('OK',CM_OK,50); AddCommand(cmd); repeat Delay(100); until GetClickedCommand=cmd; name:=formgettext(itemid); age:=formgettext(itemid2); ShowCanvas; SetColor(255,0,0); DrawText('Ваше имя: '+name,0,0); SetColor(0,0,255); DrawText('Ваш возраст: '+age,0,30); Repaint; Delay(10000); End. |
|
| Автор: | neon [ 09-09, 15:06 ] |
| Заголовок сообщения: | |
а если в id и id2 целые числа, как организовать их сумму? |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|