Авторизироваться
Меню сайта
Категории раздела
Для начинающих [16]
С этих статей вырасли все, кто сейчас программирует на MP. Именно с этих статей надо начинать новичку, качество у них не всегда хорошее, но почитать стоит.
Разбираем.Обьясняем [1]
В этой категории обьясняем, разьясняем библиотеки,примеры,мидлеты и т.д.
Прочее [4]
Прочее, что не касается программирования: как настроить MP, что нужно для работы и др...
Наш опрос
Стоит ли на нашем сайте публиковать мобильные новости?
Всего ответов: 190
Мини-чат
210
Статистика

Онлайн : 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Midlet Pascal » Для начинающих

2.Вступаем в контакт!
Ты уже написал своё первое приложение для мобилы на MIDLETPascal. Но там ничего особенного не происходило - просто текст на дисплее двигался, по нашему велению конечно. Это были основы Чудо-Языка : ты увидел структуру программы, познакомился с основными функциями. Теперь бы пора написать что-нибудь посерьёзнее, например форму. Простую форму для контактирования приложения с пользователем. Это всегда очень важно - ведь чтоб твоя прога была востребована, она должна быть простой в понимании и управлении, и даже самые сложные функции должны быть показаны пользователю, как простое нажатие на кнопочку. Ну, хватит трёпа лишнего, давай кодить! Открывай МобильныйПаскаль, создовай новый проект и доведи его до вида, показанного на Листинге. Листинг:

Code
program Form;  

var NameId, NumberId, AgeId : Integer;  
  Name, Number, Age : string;
cmdNext, cmdexit : command;
begin
showForm;//показываем форму  
NameId := FormAddTextField('Enter your name', '', 20, TF_ANY);
NumberId := FormAddTextField('Enter your phone', '', 20, TF_PHONENUMBER);
AgeId := FormAddTextField('Enter your age', '', 20, TF_NUMERIC);
cmdNext := createCommand('Next', CM_OK, 1); //создаём команду(кнопку)
AddCommand(cmdNext);
repeat
until GetClickedCommand = cmdNext;
  Name := FormGetText(NameId);//берём текст, введёный пользователем
Number := FormGetText(NumberId);
Age := FormGetText(AgeId);
  ShowTextBox('Information', 'Hello ,' + Name+ ' Your age - ' + Age + ' Your Number - ' + Number, 200, TF_ANY); //выводим информацию на дисплей
cmdExit := CreateCommand('Exit', CM_EXIT, 1);
AddCommand(cmdExit);
repeat
delay(100);
until GetClickedCommand = cmdExit;
end.

Это и есть сегодняшний пример. Простая прога с формой, на которой расположены элементы ввода. Юзер вводит туда свои данные, потом прога их анализирует и выводит всё в нужных местах. Давай попробуем разобраться, что мы тут понаписали? Блок Var - это блок объявления переменных, всё как в обычном Паскале. Здесь у нас введены три строковые пременные, две команды и три преременные, через которые будут создаваться поля ввода текста, т.е. это индификаторы. Сложно? Не сложнее чем всегда! Щас всё станет понятнее. Далее идёт главный блок begin...end. , в котором расположено тело программы. Всё начинается с процедуры ShowForm. Эта процедура выводит на дисплей форму, которая может содержать в себе ярлыки, картинки, поля текста и другие пользовательские элементы интерфейса. Именно на созданной форме мы и будем размещать наши поля ввода. Далее, собствено, идёт создание полей ввода функцией FormAddTextField. Давай посмотрим на неё поближе: function FormAddTextField(prompt, defaultValue: string; maxSize: integer; constraints:integer ):integer; Эта функция имеет четыре параметра:
prompt : string. Это текст, который отобразится над полем ввода, то есть TITLE.
defaultValue: string Это текст, который будет отражён в новом поле ввода. Чтоб поле было пустое, ставь вместо параметра ''.
maxSize: integer; Это максимальное количество символов, которое пользователь сможет забить в поле ввода.
constraints:integer; Это ограничение ввода. Т.е. можно вводить только то, что здесь указанно. Например, номер телефона, значит вводиться будут только цифры, да и то определённое количество. Вот какие значения может принимать параметр constraints:

TF_ANY - можно писать любые знаки; 
TF_EMAIL - только адресса электронной почты;
TF_NUMERIC - только числа;
TF_PHONENUMBER - можно вводить только номер телефона, в 10-ти значном формате;
TF_URL - только URL;
TF_PASSWORD - все знаки будут скрыты под звёздочками, типа пароль;

Дальше мы создаём команду (типа кнопку), функцией CreateCommand: function CreateCommand(label:string; commandType:integer; priority:integer): command; Эта функция имеет три параметра: 
label:string; Это название кнопки. Название должно быть довольно коротким.
priority:integer; Это приоритет будущей кнопки. Чем меньше значение, тем больше приоритет.
commandType:integer; Это параметр определяет намерения команды. Например, надо создать кнопку "назад", значит ставим параметр в CM_BACK. Это чертовски повышает читабильность кода в большом проекте. Вот какие значения может принимать параметр commandType:
CM_SCREEN - любой тип команды.
CM_BACK
CM_CANCEL
CM_OK
CM_HELP
CM_STOP
CM_EXIT
CM_ITEM

В нашем случае кнопка будет подтверждть ввод пользователя, поэтому в качестве параметра commandType укажем CM_OK. Итак, мы создали форму, на ней три поля ввода с разной возможностью ввода : числа, буквы и номер телефона, ещё мы создали кнопку, по нажатию на которую нам надо двигаться дальше. Для этого применяем цикл repeat until GetClickedCommand = cmdNext; Функция function GetClickedCommand: command возвращает последнюю нажатую команду. Значит в программе ничего не будет происходить, пока юзер не нажмёт на кнопку "Next". А если он всё таки нажмёт на кнопку, то переменным мы присваиваем введённые в поля ввода значения, с помощью функции function FormGetText(textFieldID:integer):string. Эта функция возвращает значения, введённые в поле ввода, по индификатору элемента интерфейса. После работы с переменными, мы создаём и показываем полноэкранное текстовое поле процедурой : procedure showTextBox(title: string; initialContents: string; maxSize: integer; constraints: integer); которая имеет четыре параметра:
title: string; Название текстового пространноства.
initialContents: string; Это текст, который будет выведен сразу по созданию элемента.
maxSize: integer; Максимальное количество символов, которое может быть забито.
constraints:integer; Это ограничение ввода. Я уже про них говорил. Вот какие значения может принимать параметр constraints здесь:
TF_ANY - можно писать любые знаки;
TF_EMAIL - только адресса электронной почты;
TF_NUMERIC - только числа;
TF_PHONENUMBER - можно вводить только номер телефона, в 10-ти значном формате;
TF_URL - только URL;

С помощью этой процедуры ты можешь создать полноценный текстовый редактор на мобилу, а у нас этот элемент интерфейса используется только для отображения информации, которую ввёл пользователь. После того, как текст вывелся мы снова создаём команду и применяем цикл задержки. Всё очень просто! Теперь ты знаешь основные приёмы создания пользовательского интерфейса для приложений на мобилы. Но элементов, которые мы рассматрели может быть мало, поэтому я покажу тебе исходник более продвинутой формы, а разобраться в нём попробуй сам:

Code
program MegaForm;
  var  
stringID, textID, passID, imgID, gaugeID, choiceID, maleID, femaleID: integer;
  cmdExit: command;
  begin
  ShowForm;  
//создаём разные элементы управления
stringID := FormAddString('Just some title');  
textID := FormAddTextField('Enter name', 'Вася', 20, TF_ANY);  
passID := FormAddTextField('Enter password', '', 20, TF_PASSWORD);
  imgID := FormAddImage(LoadImage('/icon.png'));
  gaugeID := FormAddGauge('Choose your age', true, 100, 18);
  choiceID := FormAddChoice('Select your gender', CH_EXCLUSIVE );
  maleID := ChoiceAppendString(choiceId, 'Male');
  femaleID := ChoiceAppendString(choiceId, 'Female');
  cmdExit := CreateCommand('Exit', CM_EXIT, 1);
AddCommand(cmdExit);
  repeat  
until GetClickedCommand = cmdExit;  
end.

Ну вот и всё, что хотел сказать. Надеюсь, до встречи!Остальное позже...

Автор: Васючков Андрей aka Soffrick

Категория: Для начинающих | Добавил: admin (28.10.2008)
Просмотров: 1843 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]