Пятница, 03.05.2024, 15:05

Delphi

Приветствую Вас Гость

Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня были:
Самые активные пользователи

Меню сайта
Категории каталога
Основы [8]
Исходники [2]
Наш опрос
Чему уделять больше внимания?
Всего ответов: 64
Главная » Статьи » MIDletPascal » Основы

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

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; Эта функция имеет четыре параметра:

  1. prompt : string. Это текст, который отобразится над полем ввода, то есть TITLE.
  2. defaultValue: string Это текст, который будет отражён в новом поле ввода. Чтоб поле было пустое, ставь вместо параметра ''.
  3. maxSize: integer; Это максимальное количество символов, которое пользователь сможет забить в поле ввода.
  4. 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; Эта функция имеет три параметра:
  1. label:string; Это название кнопки. Название должно быть довольно коротким.
  2. priority:integer; Это приоритет будущей кнопки. Чем меньше значение, тем больше приоритет.
  3. 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); которая имеет четыре параметра:
  1. title: string; Название текстового пространноства.
  2. initialContents: string; Это текст, который будет выведен сразу по созданию элемента.
  3. maxSize: integer; Максимальное количество символов, которое может быть забито.
  4. constraints:integer; Это ограничение ввода. Я уже про них говорил. Вот какие значения может принимать параметр constraints здесь:
  • TF_ANY - можно писать любые знаки;
  • TF_EMAIL - только адресса электронной почты;
  • TF_NUMERIC - только числа;
  • TF_PHONENUMBER - можно вводить только номер телефона, в 10-ти значном формате;
  • TF_URL - только URL;
С помощью этой процедуры ты можешь создать полноценный текстовый редактор на мобилу, а у нас этот элемент интерфейса используется только для отображения информации, которую ввёл пользователь. После того, как текст вывелся мы снова создаём команду и применяем цикл задержки. Всё очень просто! Теперь ты знаешь основные приёмы создания пользовательского интерфейса для приложений на мобилы. Но элементов, которые мы рассматрели может быть мало, поэтому я покажу тебе исходник более продвинутой формы, а разобраться в нём попробуй сам:

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.

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






Взято с сайта http://www.liveofpc.3dn.ru/

Категория: Основы | Добавил: Ivin (22.03.2008)
Просмотров: 2481 | Рейтинг: 0.0/0 |