Уроки, Туториалы, Мануалы со всего света!
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/