Язык паскаль онлайн
ПРАКТИЧЕСКАЯ РАБОТА № 6 – Использование кнопок и их свойства
-
Browse: Home / Паскаль практические работы / ПРАКТИЧЕСКАЯ РАБОТА № 6 – Использование кнопок и их свойства
Практически закрепить знания и умения использования возможностей среды Delphi для создания кнопок и их свойства
Ход работы
procedure TForm1.Button1Click (Sender: TObject);
var s, t, v: real; begin
s = StrToFloat (Edit1.text) t = StrToFloat (Edit2.text) v = s / t;
label4.Caption: = ‘Скорость V =’ + FloatToStr (v) + ‘км / ч.’;

Если теперь запустить программу на выполнение, то при нажатии на кнопку 1 она будет увеличиваться, а кнопка 2 смещаться вправо вниз, при этом кнопка 3 остается на месте без изменений в размерах (рис. 4.15)
Теперь после запуска программы и нажатия на кнопку 1 первые две кнопки ведут себя по-прежнему, а третья уменьшается в размерах (рис. 4.16).
Теперь кнопка 1 ведет себя так, как это описано в самом начале (см. Рис. 4.13).

Метод, который выполняется в результате нажатия на кнопку 2, фактически повторяет действия метода кнопки 1, но меняет все числовые значения в обратном направлении. Другими словами, когда процедура в кнопке 1 увеличивает какой-то параметр, то процедура в кнопке 2 — уменьшает, и наоборот. Подобные операции легко запрограммировать, скопировав содержание кнопки 1 на кнопку 2 и заменив знаки «+» на «-» и наоборот. Очевидно, что для этого будет использован метод TForm1.Button2Click:
-
Закрытие формы с помощью кнопки 3 осуществляется вызовом процедуры закрытия формы:
Задания для самостоятельной работы
- Записать процедуры, содержащиеся в кнопках 1 и 2. В результате нажатия кнопки 1 ее ширина уменьшается на 6 пикселей за счет увеличения кнопок 2 и 3, а в результате нажатия кнопки 2 все происходит наоборот. нажатием кнопки 3 форма закрывается.

- Записать процедуры, содержащиеся в кнопках 1 и 2. В результате нажатия кнопки 1 она становится шире и выше на 5 пикселей за счет кнопок 2 и 3. Если нажать кнопку 2, все происходит наоборот. нажатием кнопки 3 форма закрывается.

- Записать процедуры, содержащиеся в кнопках 1 и 2. В результате нажатия кнопки 1 она становится шире на 5 пикселей за счет кнопки 3, одновременно увеличивается и кнопка 2. Если нажать кнопку 2, все происходит наоборот. нажатием кнопки 3 форма закрывается.

- Записать процедуры, содержащиеся в кнопках 1 и 2. В результате нажатия кнопки 1 она вместе с кнопкой 2 перемещается в правую часть формы, а кнопка 3 — в левую. Если нажать кнопку 2, все три кнопки возвращаются обратно. Считать, что по ширине кнопки 1 и 3 занимают всю форму (между ними нет просвета). нажатием кнопки 3 форма закрывается.

- Записать процедуры, содержащиеся в кнопках 2 и 3. В результате нажатия кнопки 2 она меняется, как это показано на рисунке. Кнопка 3 занимает место кнопки 2. Если нажать кнопку 3, это перемещение происходит в обратном порядке. нажатием кнопки 1 форма закрывается.

Домашнее задание
- Создать проект, «Свойства формы».В этом проекте мы рассмотреть свойства формы. Для этого на форму установить кнопки (компонент Button) и дать им названия: уменьшить форму, растянуть форму, спрятать кнопки, показать кнопки, а также создать две кнопки для задания цвета формы и форма на весь экран, свернуть окно, закрыть окно.
- Создать форму и разместить компоненты на форме;
- Задать свойства компонентов:
- Форме дать название «Работа с кнопками»
- предоставляем названия кнопкам Button
- Расположите кнопки на форме лучше и задайте им нужные свойства.
Form1.Height = Form1.Height-100; Form1.Width = Form1.Width-50; end;
procedure TForm1.Button2Click (Sender: TObject); begin
Form1.Height = Form1.Height + 200; Form1.Width = Form1.Width + 100; end;
procedure TForm1.Button3Click (Sender: TObject); begin
Button1.Visible = False; Button2.Visible = False; Button3.Visible = False; Button4.Visible = False; Button5.Visible = False; end;
procedure TForm1.Button6Click (Sender: TObject); begin
Button1.Visible = True; Button2.Visible = True; Button3.Visible = True; Button4.Visible = True; Button5.Visible = True; end;
Midlet Pascal. Изображения и кнопки
Всем привет! Продолжаем изучать Midlet Pascal. В прошлой статье я рассказал о самых основах этого языка. В этой статье погорим о вещах более интересных — немного порисуем, рассмотрим вывод изображений и обработку нажатий пользователя на кнопки.
Стандартные фигуры изображать в Midlet Pascal очень даже просто. Вот, например, нарисуем синий прямоугольник 100х100 и в нем белым текстом напишем что-нибудь. Делается это так. За цвет отвечает процедура SetColor, где в скобках указываются три цвета, из которых получится тот, который нам нужен. Цвета указываются в таком порядке: красный, зеленый, синий. Значение каждого из них может быть от 0 до 255. Например, если написать так:
то мы получим ярко-зеленый цвет, а если так:
Поехали дальше. Прямоугольник мы возьмем закрашенный — для это есть процедура FillRect, где в скобках пишутся координаты левого верхнего угла это прямоугольника, ширина и высота. В итоге получаем что-то вроде этого:
Прямоугольники с линиями — это, конечно, хорошо, но явно недостаточно, чтобы сделать хорошую игрушку. Неплохо было бы показать какую-нибудь красивую картинку, чем мы сейчас и займемся. С картинками в Midlet Pascal дело обстоит неважно, поддерживается только формат PNG. Поэтому все изображения, которые Вы хотите вывести на экран нужно переводить именно в этот формат. Для конвертирования изображений есть много программ и я не буду на этом останавливаться. Скажу лишь, что лично мне ближе Photoshop. Там можно и картинку отредактировать и сохранить ее как нужно. Ну так вот. Нашли Вы хорошую картинку, теперь самое время добавить ее к нашей программе. Для этого в меню выбираем «Project -> Import resource file», находим нашу картинку и добавляем ее. Она должна появиться в списке файлов слева (вкладка «Files»). Если у Вас нет такой вкладки, ее можно включить через «View -> Files». Допустим Ваша картинка называется «picture.png». Теперь в программе пишем:
Означает это примерно следующее. LoadImage загружает картинку из ресурсного файла (символ «/» перед названием писать обязательно, иначе ничего не выйдет). DrawImage выводит загруженную картинку на экран в точку с координатами (10, 10). Можно (а иногда даже и нужно) сделать немного по-другому. Сначала загрузить изображение в какую-нибудь переменную (которая в этом случае будет иметь тип image), а потом уже действовать через эту переменную. Т.е. примерно так:
Для чего это нужно? Дело в том, что последний вариант работает гораздо быстрее. Это, в принципе, не имеет значения, если Вам нужно вывести одно-два небольших изображения, а вот если этих изображений несколько десятков и пишете Вы очень динамичную игру — тогда лучше делать через переменные. Да и с переменными удобнее работать, особенно если оформить это дело в массив.
Ну что ж — с картинками более-менее разобрались (хотя настоятельно советую поэксперементировать самостоятельно — я рассказал только основы, а еще есть много чего интересного по этой теме). Допустим Вы нарисовали замечательную картинку (например, главного героя игры), изобразили ее на экране и все вроде бы хорошо. Но чего-то не хватает. А не хватает движений. Пользователь будет упорно жать на все кнопки подряд, но ничего не случится.
Герой игры не сдвинется с места. А все потому, что нужно было еще запрограммировать и обработку нажатий на клавиши. Ну что ж, займемся этим. Здесь все очень просто. Поэтому объясню вкраце. Есть две основных функции: GetKeyClicked и GetKeyPressed, которые возвращают код нажатой клавиши. Разница между ними лишь в том, что первая возвращает последнюю нажатую клавишу, а вторая — клавишу, нажатую в данных момент. Разные телефоны (и устройства вообще) могут возвратить для одной и той же клавиши разные коды и тогда программа, которая прекрасно работала на одном телефоне, совершенно откажется работать на другом. Эту проблему решает функция KeyToAction, которая сама определяет, какая клавиша была нажата и выдает ее значение в виде константы. Например, если был нажат джойстик вверх, то значение будет GA_UP, если вправо, то — GA_RIGHT. А теперь поясню все вышесказанное на практике:
Этот пример был взят из помощи по Midlet Pascal. Данный цикл (а значит и программа в данном случае) будет работать до тех пор, пока не будет нажат центр джойстика. Подробнее про константы читайте в справке.
Ну что же. Вы узнали немного о выводе изображений и обработке нажатий на клавиши. А теперь я хочу показать, как все это применить на практике. Напишем небольшую игрушку, применяя сказанное выше. По правде говоря, это даже и не игрушка пока, а лишь заготовка под нее, но для примера вполне сойдет. Мы будем управлять летающей тарелкой. Для этого надо нарисовать картинку самой тарелки и фон космоса, где, собсвенно и будет происходить действие. Далее приведу просто текст программы. Здесь полно комментариев и, я думаю, Вы разберетесь здесь без проблем.
Эта программа полностью рабочая, но сделана довольно упрощенно. Вы можете попробовать сделать ее лучше. Картинки я прикладывать не стал, ибо художник из меня неважный.
Ну вот и все на сегодня. В следующий раз мы добавим к нашей игре музыкальное сопроводжение.
Программирование на языке паскаль
Назначение кнопки – формирование события при нажатии на нее. В ИСР определены классы кнопок:

Компонент Страница Описание TButton Standard Метка. Для вывода текстов разного назначения: названия, заголовки, пояснения и др. TBitBtn Additional Кнопка с рисункм и надписью, которые иллюстрируют ее функциональное назначение. TSpeedButton Additional Быстрая кнопка. Не может получать фокус ввода и потому быстрая. TColorButton Misc Цветная кнопка. Для кнопок программируется обработчик события (по умолчанию onClick – нажатие). При возникновении события свойство кнопки ModalResult принимает значение True и обработчик срабатывает.
Для кнопки BitBtn определены стандартные сорта разного назначения, для которых есть свои обработчики. Чтобы несколько кнопок BitBtn работали независимо, каждому сорту назначается свое значение ModalResult. Определены сорта кнопок BitBtn: