Этап 1. Создание внешнего вида окна приложения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Этап 1. Создание внешнего вида окна приложения



è Шаг 1. Размещение компонентов на форме

1. Запустить Delphi.

2. Разместить на главном окне компоненты согласно рис. 9.

Рис. 9. Размещение компонентов на форме

Примечание: Компоненты GroupBox и BitBtn находятся на странице Standard.

Для более удобного интерфейса кнопки, отвечающие за требуемые действия (заполнение, анализ, очистка) и результаты обработки (то есть справочная информация), скомпонованы в групповых окнах (TGroupBox), расположенных на странице Standard.

3. Сохранить новый проект в отдельном каталоге. Каталогу дать имя «Лаб9_пример».

è Шаг 2. Задание свойств компонентов

Внимание! На шаге 2 задаются свойства компонентов:

· Label – метка;

· StringGrid – таблица строк;

· BitBtn – командная кнопка.

 

1. Заполнить свойство Caption компонентов Label1, Label2, Label3, Label4, Label5, GroupBox1, GroupBox2, Button1, Button2, Button3, BitBtn1 подписями согласно рис 19. Значение свойства Text сомпонентов Edit1 и Edit2 сделать равным 5.

Справка

Компонент BitBtn – это кнопка с картинкой.

Свойства:

Cancel: если его установить в True, то нажатие Esc будет эквивалентно нажатию на эту кнопку. Это удобно для кнопок «Отмена» в различных диалоговых окнах.

Kind: определяет тип кнопки. По умолчанию = bkCustom – заказная кнопка. Другие значения задают один из предопределенных типов, в которых уже сделаны соответствующие надписи, определены изображения и другие свойства.

2. Для того, чтобы компонент StringGrid можно было использовать для ввода чисел с клавиатуры, установить свойство Options / goEditing в значение true.

3. Для задания количества строк и столбцов по умолчанию установить для свойств ColCount и RowCount значение 5.

4. Для организации завершения работы приложения при нажатии на кнопку «Выход», установить в свойстве Kind компонента BitBtn1 сандартное значение bkClose.

 

Этап 2. Создание обработчиков событий

Внимание! На этапе 2 создаются обработчики событий:

· нажатия на кнопку «Заполнение»;

· нажатия на кнопку «Анализ»;

· нажатия на кнопку «Очистка».

 

1. Перейти в окно редактора кода.

2. В разделе var модуля объявить две глобальные переменные:

n, m: integer; // размерность матрицы

3. Активизировать окно проектировщика формы.

4. Выполнить двойной щелчок л.к.м. на кнопке «Заполнение». Delphi автоматически генерирует шаблон кода обработчика.

5. Полный текст обработчика должен быть таким:

Примечание. Обратите внимание на то, что при обращении к элементу двумерного массива первым индексом указывается строка, а вторым – столбец. При обращении к ячейке компонента StringGrid наоборот: первым индексом указывается столбец, а вторым – строка.

 

6. Выполнить двойной щелчок на кнопке «Анализ».

7. Заполнить шаблон обработчика кодом. Полный текст процедуры должен быть таким:

Здесь: В цикле перебираются все элементы матрици, сначала переводятся из строки в целое число, а затем сравниваются с максимальным. По окончании цикла соответсвующим образом изменяются тексты надписей, касающихся максимального элемента.

 

8. Выполнить двойной щелчок л.к.м. на кнопке «Очистка». Delphi автоматически генерирует шаблон кода подпрограммы.

9. Полный текст обработчика должен быть таким:

10. Сохранить проект.

11. Запустить программу на исполнение. Окно после запуска должно выглядеть, как показано на рис. 19, но компонент StringGrid1 должн быть пустым.

12. Проверить правильность ее работы.

13. Завершить работу приложения.

Лабораторная работа № 10

Обработка списков в Delphi

Цель работы:

Разработать программу, которая формирует два списка, в которых записаны символы и соответствующие им коды. Один список необходимо отсортировать в алфавитном порядке по символу, а другой по коду символа. Списки необходимо вывести в многострочное редактируемое поле Memo.

 

Указания к работе

1. Перенесите на форму кнопку и компонент Memo.

2. Запишите обработчик события кнопки.

procedure TForm1.Button1Click(Sender: TObject);

var

k: Byte;

List1, List2: TStringList;

S: String;

Begin // создаем 2 списка

List1:=TStringList.Create;

List1.Sorted:=True;

List2:=TStringList.Create;

for k:=32 to 255 do // цикл наполнения списков кодами

begin

S:=IntToStr(k); // код символа

if k<100 then

s:='0'+s; // двузначное число дополняется ведущим нулем

List1.add(Char(k)+ #9 + S); // формируем списки

List2.add(s+#9+Char(k));

end;

List1.Sorted:=False; // отключаем сортировку списка List1

for k:=0 to list1.Count-1 do

list1[k]:=list1[k]+#9+List2[k]; // объединяем 2 списка

Memo1.Lines.Assign(List1);

List1.Free; // уничтожаем списки

List2.Free;

end;

3. Запустите программу на исполнение (F9). Проанализируйте соответствие обоих списков.

Лабораторная работа №11.
Файлы, записи

Цели работы:

изучить принципы и средства работы с файлами в Паскале,

научиться использовать файлы в своих программах;

изучить тип данных «запись» и его использование на примере работы с файлами.

Примеры разработки программ

Пример 1. При нажатии на кнопку Button1 из текстового файла считываются все строки и выводятся на экран. Перед этим происходит анализ того, существует ли файл на диске. Имя файла вводится в компонент Edit1, вывод файла осуществляется в компонент Memo1.

Фрагмент программы

procedure TForm1.Button1Click(Sender: TObject);

var f:TextFile;

i:integer;

FileName,s: string;

Begin

Memo1.Clear;

FileName:=Edit1.Text;

AssignFile(f,FileName);

{$I-}

reset(f);

{$I+}

if IOResult=0

Then

Begin

while not eof(f) do

Begin

readln(f,s);

Memo1.Lines.Add(s);

end;

CloseFile(f);

End

else ShowMessage('Такого файла нет');

end;

Примечание. Директива компилятора {$I-} отключает проверку выполнения операций ввода/вывода. Функция IOResult возвращает значение 0, если последняя операция ввода/вывода прошла успешно, в противном случае она возвращает код ошибки.

Пример 2. Создать файл целых чисел. Найти в нем наибольшее число, принадлежащее интервалу [-10, 10]. Примерный внешний вид окна приложения при запуске и после обработки файла приведены на рис. 22.

Пояснения к интерфейсу: Числа вводятся в компонент Memo1. После этого при нажатии кнопки Запись в файл происходит их запись в файл и вывод в компонент Label1 их количества. При нажатии кнопки Обработка файла в компонент Memo2 происходит вывод чисел, принадлежащих [-10,10] и максимального из них.

Рис. 22. Вид приложения при запуске и после обработки файла

Решение

var //---------- Описание глобальных переменных--------

Form1: TForm1;

f: file of integer; // описание файловой переменной

 

Implementation

{$R *.dfm}

Обработчик нажатия кнопки «Запись в файл»:

Обработчик нажатия кнопки «Обработка файла»:

Пример 3. Отсортировать числа в файле по возрастанию. Вид окна и интерфейс такой же, как в примере 2.

Решение

Обработчик кнопки «Обработка файла»

Пример 4

Создать приложение, имеющее удобный интерфейс для создания и просмотра файла со сведениями о студентах вуза: фамилия (15 знаков), имя (10 знаков), отчество (10 знаков), год рождения, пол (1 – мужской, 0 – женский). Примерный вид интерфейса показан на рис. 23.

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

Рис. 23. Примерный вид окна приложения при запуске и после вывода созданного файла

Решение

Объявление переменных (перед словом implementation):

Type

stud= record //пользовательский тип запись для хранения

fam: string [15]; //сведений об одном студента

name: string [10];

pat: string [10];

year:integer;

sex:integer;

end;

Var

f: file of stud; //типизированный файл из компонентов

//типа запись stud

Обработчик кнопки «Создать файл»:

Обработчик кнопки «Закончить запись в файл»:

Обработчик кнопки «Записать»:

Обработчик кнопки «Вывод файла»:

Обработчик события создания формы:

procedure TForm1.FormCreate(Sender: TObject);

Begin

Form1.Width:=200;

end;


СПИСОК КОНТРОЛЬНЫХ ВОПРОСОВ

1. Назначение и возможности Delphi. Особенности версии Delphi 7.

2. Назначение окон в Delphi (главное окно, окно формы, окно кода программы, окно дерева объектов, окно инспектора объектов, окно браузера кода, окно дерева объектов).

3. Основные команды главного меню. Инструментальные кнопки.

4. Структура проекта, структура модуля Delphi.

5. Принцип объектно-ориентированного программирования. Взаимодействие формы и модуля. Обработчик события OnClick (щелчок по кнопке). Реакция на события мыши и клавиатуры.

6. Назначение компонент вкладки Standart.

7. Назначение компонент вкладки Additional.

8. Назначение компонент вкладок System, Dialogs.

9. Назначение компонент вкладок Samples, Activex.

10. Массивы в Delphi.

11. Записи в Delphi.

12. Строки в Delphi.

13. Операции с файлами в Delphi.

14. Оператор присваивания, составной оператор, условный оператор в Delphi.

15. Операторы, предназначенные для организации циклов в Delphi.

16. Процедуры и функции в Delphi. Локальные и глобальные переменные. Понятие рекурсии.

 

CПИСОК ЛИТЕРАТУРЫ

1) Бобровский С. И. «Delphi 7. Учебный курс» - СПб.: Питер, 2005 г.

2) Культин Н.Б. Программирование на Object Pascal.

3) Фаронов В. В. «Delphi 6. Учебный курс». Москва, 2001 г.

4) Фаронов В. В. «Delphi 6. Программирование на языке высокого уровня: Учебник для вузов» - СПб.: Питер, 2005г.

5) Писарев Т. В. «Программирование в Delphi6».

М.: ДМК Пресс 2002 г.

6) Архангельский А. Я. «Интегрированная среда разработки Delphi

от версии 1 до версии 5». М.: Изд. БИНОМ, 1999 г.

 

 


 



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 274; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.59.187 (0.043 с.)