|
му паскаль и делфи. Методические рекомендации для студентов по выполнению практических работ для специальности 09. 02. 03 Программирование в компьютерных системах
Практическая работа № 13.
Простейшая математическая программа
Цели работы: Целью работы является практическое освоение методологии и принципов создания базовых стандартных элементов интерфейса Windows-программы в среде визуального проектирования.
В представленном ниже проекте используем следующий минимальный набор компонент.
Button – стандартная кнопка, обычно кнопка используется для запуска действия, при этом задействуют только метод OnEvent (реакция на нажатие). Свойство Default=True ассоциирует вводимый компонент с кнопкой Enter, Cancel=True – с кнопкой Esc. Свойства Color для оформления надписи (Caption) у кнопки нет. Амперсант, помещенный в тексте надписи, указывает быструю Alt-клавишу запуска, например, Caption=A&Ppend вызывает срабатывание кнопки при нажатии Alt-P. Свойство ModalResult=true определит обязательность нажатия для закрытия дочернего окна.
L abel – метка, используется как надпись или как область вывода информации для чтения. Как и для кнопки, для метки можно определить клавишу быстрого доступа, но она будет запускать связанный с меткой компонент (по FocusControl). Свойство AutoSize=True определит минимизацию размера метки под текст надписи, Aligment – центровку этого текста, WordWrap – возможность расположения текста в несколько строк, Transparent – прозрачность при наложении на другие элементы.
Edit – строка ввода. Заголовка (Caption) у этого компонента нет, но есть свойство Text как содержимое строки. Это свойство можно как считывать, так и присваивать (при необходимости с ограничением длины назначением свойства MaxLength). При вводе конфиденциальной информации указывают отображаемые символы (обычно "*"), при этом нужно переопределить свойство PasswordChar, задав его отличным от #0.
Составим проект для суммирования двух чисел, вводимых с клавиатуры.
При этом на форме нужно разместить четыре надписи (с задаваемыми свойствами Caption) и пятую надпись с пустой Caption – для отображения суммы. Определить две строки ввода для суммируемых чисел (против меток "первое" и "второе") и одну кнопку "Расчет" для запуска процедуры суммирования после ввода чисел.
После двойного щелчка на кнопке можно заполнить шаблон процедуры реакции на нажатие этой кнопки (рамкой выделен вводимый текст).
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c: real;
s: string; code: integer;
begin
{ввод данных из полей редактирования}
val(edit1.text,a,code);
val(edit2.text,b,code); c:=a+b;
str(c:–10:4,s); {перевод числа в строку}
label5.Caption:=s
end;
Практическая работа №14.
Элементы оформления проекта
Цели работы: Целью работы является практическое освоение методологии и принципов создания и оформления элементов интерфейса Windows-программы.
Приведенный выше вариант программы вполне работоспособен. Но в подобных программах обязательное требование в части их оформления – предусмотреть реакции на ввод символов в полях редактирования, например, защиту от ввода букв или второй десятичной точки. При нажатии Enter естественно переносить курсор в следующее поле редактирования или выполнять другие действия, если ввод данных завершен. В обработчиках событий (закладка Events инспектора событий Delphi) для полей ввода определим методы OnKeyPress, задав им имена, например, e1 и e2. Затем после двойного щелчка заполним шаблоны процедур.
procedure TForm1.e1(Sender: TObject; var Key: Char); begin
{защита поля редактирования на ввод числа }
case key of
'0'..'9',chr(8):;
'.': if pos('.',edit1.text)>0 then key:=chr(0);
'–': if length( edit1.text)>0 then key:=chr(0);
chr(13): edit2.SetFocus;
else key:=chr(0); end;
end;
Вторая процедура отличается от первой лишь реакцией на нажатие клавиши Enter
procedure TForm1.e2(Sender: TObject; var Key: Char); begin
... edit2.text ... chr(13): edit2.font.color:=clRed; ...
end;
Текст процедуры TForm1.Button1Click желательно оформить как самостоятельную процедуру, например, procedure Summa(edit1,edit2: tEdit; label5: TLabel);
и вызывать ее как внутри TForm1.Button1Click, так и в реакции на Enter в процедуре TForm1.e2, при этом окончание ввода данных сразу запустит вычисления.
Введем кнопку очистки полей ввода и вывода результата для нового расчета. Заголовок кнопки определим как Caption="новое", зададим реакцию OnClick (двойным щелчком на кнопке).
procedure TForm1.Button2Click(Sender: TObject);
begin
{очистка полей ввода} edit1.text:=''; edit2.text:=''; label5.caption:=''; edit1.SetFocus
end;
Введем кнопку выхода
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.close { завершение приложения}
end;
Практическая работа №15
Компоненты выбора и настройки параметров
Цели работы: Создание Windows-приложения, в котором при щелчке на радио-кнопке с названием цвета на светофоре загорается соответствующий цвет
Выбор и настройка параметров при работе с программным приложением считается стандартной частью работы пользователя с любым серьезным приложением. Это может быть как настройка самого приложения, так и определение параметров отображаемых или моделируемых в приложении процессов и явлений. Элементы интерфейса Windows-программы для основных операций такой работы в настоящее время практически стандартизированы. Рассмотрим создание этих элементов на примере работы с компонентами библиотеки VCL (Visual Component Library) в среде Delphi.
Б азовые элементы выбора и настройки параметров расположены на странице Standart палитры компонент Delphi. В представленном ниже проекте используем следующий классический набор компонент:
GroupBox – группа, которая визуально и логически объединяет наборы компонент, определяет порядок перемещения по компонентам на форме (при нажатии клавиши TAB). При помещении в группу новый компонент получает свойства ParentColor, ParentShowHint, ParentFont, ParentCtl3D этой группы. Свойства Left и Top сгруппированных объектов определяются по верхнему углу группы, а не формы;
RadioGroup – группа для объектов RadioButton (см. ниже); RadioButton – переключатели или радиокнопки, служат для выбора одной возможности из набора взаимоисключающих возможностей. Термин отражает сходство с набором кнопок выбора каналов радиоприемника. Эти кнопки обычно объединяют группой RadioGroup. Выбор кнопки отражает свойство Checked, свойство Alingment определяет положение поясняющей надписи относительно кнопки;
CheckBox – выключатель, выглядит как строка текста с окошком для установки отметки о выборе. Выключатели работают независимо, но их обычно группируют. При определении реакции на выбор можно использовать событие OnClick, но обычно устанавливают как индикатор свойство State по трем состояниям – cbChecked (есть), cbUnChecked (нет), cbGrayed (неопределенно) внутри программы. При этом для блокировки ручного изменения этого свойства нужно установить DragMode=Automatic.
Пример проекта с выбором параметров
Поместить компоненты Label, Panel, GroupBox, RadioButton (страница Standard) в форму. Установить следующие свойства объектов, используя Инспектор объектов:
Label1
| Caption
| Светофор
| Panel1,2,3Caption
|
|
| GroupBox1Caption
| Цвет
|
| RadioButton1Caption
| Красный
|
| RadioButton2
| Caption
| Желтый
| RadioButton3
| Caption
| Зеленый
|
|
|
| Записать код для процедуры обработки события Click (щелчок мыши) на объекте RadioButton1:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Panel1.Color := clRed;
Panel2.Color := clWhite;
Panel3.Color := clWhite;
end;
Самостоятельно записать код для процедур: TForm1.RadioButton2Click и TForm1.RadioButton3Click
Добавить печать информации "Стойте", "Внимание", "Идите" на панели с соответствующим сигналом белым цветом шрифта жирным начертанием 12п.
Практическая работа №16.
Создание Windows-приложения «Цифровые часы»
Цели работы: Создание Windows-приложения, в котором работают цифровые часы с разной скоростью
Поместить компоненты Label (вкладка Standard) и Timer (System) в форму Form1. Установить следующие свойства объектов
-
Объект
| Свойство
| Значение
| Form1
Label1
Label1
Label1
Label1
| Name
Caption
Color
Font.Size
Font.Color
| Clock
00:00:00 clYellow
24
Красный
|
Записать код обновления времени для процедуры TClock.Timer1Timer:
Label1.Caption:=TimeToStr(Time);
Добавление кнопок регулирования скорости обновления времени.
Добавить в форму компоненты GroupBox и RadioButton: Установить следующие свойства объектов:
-
GroupBox1
| Caption
| Скорость
| RadioButton1
| Caption
| Медленно
| RadioButton2
| Caption
| Умеренно
| RadioButton3
| Caption
| Быстро
|
4.3. Записать код для процедуры TForm1.RadioButton3Click: Timer1.Interval := 1000;
Самостоятельно записать код для процедур: TForm1.RadioButton1Click (3000) и
TForm1.RadioButton2Click (2000)
Практическая работа №17
Использование cписков ListBox – обычный список, этот компонент предназначен для работы с перечнем текстовых элементов (с ограничением по количеству до 5000 шт). Перечень можно создавать (в том числе загружать как строки из текстового файла), преобразовывать и выгружать в файл. Элементы списка могут быть выбраны с помощью клавиатуры или мыши. Классический пример использования ListBox в среде Windows – выбор файла из списка в пункте меню File/Open многих приложений.
Основное свойство списка – Items (массив строк), оно аналогично свойству Lines для компонента Memo. Индекс выбранного элемента списка хранится в переменной ItemIndex. Методы Add, Delete, Insert используются для добавления, удаления и вставки строк.
Свойство Sorted=True упорядочивает список по возрастанию кода символов строк. ItemHeight – вертикальный размер элементов, Columns – число колонок в списке, ExtendedSelect – возможность множественного выбора элементов (при удержании Shift), при этом для выбранных элементов свойство Selected[номер] равно True.
ComboBox – комбинированный список, дополнительно к обычному включает строку ввода. Из нескольких типов ComboBox наиболее популярен спадающий вниз (drop-down combo box).
Создадим типовой проект с компонентом ListBox
На форме (рисунок 3). кроме списка разместим ряд кнопок (или пунктов меню), а также две строки ввода Edit1, Edit2 и две метки Label1, Label2. По выбору пунктов организуем следующие операции со списком:
Загрузка строк из файла, имя которого предварительно набирается в строке ввода (пункт "файл")
Listbox1.Sorted:=false;
Listbox1.Items.LoadFromFile(Edit1.Text)
Сортировка списка (пункт "сортировать"):
Listbox1.Sorted:=true
Запись списка в файл, имя которого предварительно набирается в строке ввода (пункт "сохранить как"):
Listbox1.Items.SaveToFile(Edit2.Text);
MessageDlg('Создан файл '+Edit2.Text,mtInformation,[mbOK],0)
Загрузка списка экранных шрифтов (пункт "шрифт"):
Listbox1.Items:=Screen.Fonts
Добавление случайного числа в список с соблюдением сортировки, если она задана (пункт "добавить")
var s: string;
begin
str(random:10:8,s); { генерация случайного числа }
ListBox1.Items.Add(s) end; Добавление числа в нужное место списка (пункт "вставить")
var s: string;
begin
str(random:10:8,s); { генерация случайного числа }
ListBox1.Items.Insert(ListBox1.ItemIndex,s);
end; Удаление выбранного элемента списка (пункт "удалить")
ListBox1.Items.Delete(ListBox1.ItemIndex)
Выведем некоторые характеристики выбранного элемента на метках:
var code: integer; a: real;
begin
Label2.Caption:= ListBox1.Items[ListBox1.ItemIndex];
Val(Label2.Caption,a,code);
If code=0 then Label1.Caption :='число'
else Label1.Caption :='строка';
end; Практическая работа №18
Создание приложения «Картинная галерея» Цель работы: Создать Windows-приложение, в котором при нажатии по соответствующей кнопке появляется соответствующая картина.
1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Процедуры и функции преобразования данных
Компоненты Label, Edit и ряд других компонентов можно использовать для ввода и вывода данных. Обычно поля для отображения данных имеют тип String, поэтому при вводе и выводе числовых данных возникает проблема преобразования символьного представления числа в цифровую форму при вводе и преобразования цифрового представления числа в символьную форму при выводе. Для этого в Lazarus используются функции:
Функция FloatToStr(X) преобразует вещественное число X типа Extended в символьное представление (возвращает строку типа String).
Функция IntToStr(N) преобразует целое число N типа Integer в строку символов, содержащую символьное представление числа.
Функция StrToFloat(S) преобразует строку S типа String в двоичное вещественное число типа Extended.
Функция StrToInt(S) преобразует строку S в целое число типа Integer. 2 ОПИСАНИЕ ПЛАНА РАЗРАБОТКИ ПРОГРАММЫ
Назовите Форму – Картинная галерея (свойство Caption). Сохраните Модуль под именем UnitPictures (File – Save as) в своей папке и там же сохраните Проект под именем ProjectPictures. В эту же папку скопируйте три изображения из папки Collection. На Форму поместите два компонента Panel (панель) со страницы Standard. В свойстве Caption (заголовок) для обеих панелей удалите текст. В первую панель поместите три кнопки BitBtn со страницы Additional. В свойстве Caption для кнопок запишите: Первая картина, Вторая картина, Третья картина:
На вторую панель вставьте компонент Image со страницы Additional. Выделите компонет Image. Перейдите в Инспектор объектов в свойстов Picture, нажмите рядом на три точки. Выберите файл картинки. Когда она отобразится в вашей Форме, настройте ее размер и в свойстве Visible (видимость) выберите значение False. Это значит, что картинку не будет видно до тех пор, пока вы этого не захотите. Два раза щелкните по кнопке «Первая картина» в тело процедуры внесите следующий оператор:
begin
Form1.Image1.Visible:=true;
end;
Сохраните и запустите Проект. Добавьте еще один компонент Image так, чтобы его размеры были такими же, как и у имеющегося уже объекта Image1, в свойстве Visible также выберите False. В тело процедуры для кнопки «Вторая картина» вставьте операторы:
begin
Form1.Image1.Visible:=false;
Form1.Image2.Visible:=true;
end;
Процедура делает видимой вторую картину и невидимой – первую. Сохраните изменения и запустите Проект. Если щелкнуть по кнопке «Первая картина», то не увидите картинки. Для отображения картинки, в процедуру для первой кнопки следует добавить оператор:
Form1.Image2.Visible:= false;
Вставьте в Проект третий компонент Image, подберите размер и установите необходимые параметры. Создайте процедуру для третьей кнопки. Настройте процедуры для кнопок, таким образом, чтобы картинки в правильном порядке исчезали и появлялись на Форме. Теперь сделайте так, чтобы под каждой картинкой появлялась подпись. Для этого добавьте в Проект компонент Label (метка). Для того чтобы при щелчке на кнопку надпись появлялась, добавьте в процедуру для первой кнопки:
Form1.Label1.Caption:='Закат';
Form1.Label1.Visible:=true;
Название укажите для своей картинки. Добавьте аналогичные операторы и процедуры для двух остальных кнопок, меняя название картины. Сохраните изменения и запустите проект.
|
|
|