Уроки, Туториалы, Мануалы со всего света!

На этом форуме, будет находится огромное количество уроков и мануалов, сделайте небольшой вклад, и опубликуйте хотя бы один урок.
Текущее время: 19-05, 14:36

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Midlet Pascal. Работа с формами.
СообщениеДобавлено: 14-03, 16:46 
Не в сети
Пока что, только учусь!
Аватара пользователя

Зарегистрирован: 13-03, 17:36
Сообщения: 5
Сейчас мы попробуем создать более сложное приложение, использующее визуальное оформление(форму). Пользователь должен будет ввести свое имя и возраст, а наша программа выведет их на экран.

Нам понадобятся 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.

_________________
Изображение
Изображение
Изображение
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09-09, 15:06 
Не в сети
Пока что, только учусь!
Аватара пользователя

Зарегистрирован: 09-09, 14:38
Сообщения: 1
Откуда: Украина
а если в id и id2 целые числа, как организовать их сумму?

_________________
ни на что не жалуюсь, доктор! только изредка какие-то помутнения и потом трупы вокруг.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB