
- •Часть I
- •Содержание
- •Лабораторная работа №1. Интегрированная среда разработки Delphi. Обзор основных компонентов.
- •Пример создания простейшего Windows-приложения.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №2. Способы организации файлового ввода-вывода. Динамические массивы.
- •Переменные TextFileName и GraphFileName указывает путь к файлу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №3. Обработка исключительных ситуаций в Delphi.
- •Вывод сообщений
- •Пример создания приложения с обработкой ис.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №4. Изучение графических возможностей Delphi.
- •Пример создания приложения, использующего графические возможности Delphi.
- •Содержание отчета.
- •Контрольные вопросы.
- •Литература.
Вывод сообщений
Для вывода окна с сообщением предусмотрено несколько функций.
MessageDlg(const Msg: string; AType: TMsgDlgType;AButtons: TMsgDlgType;
HelpCtx: Longint):Word;
Отображает окно с сообщением Msg, с пиктограммой, задаваемой параметром AType, с набором кнопок, задаваемым параметром AButtons, и с темой справки, задаваемой параметром HelpCtx. Возвращает результат, указывающий, какую кнопку в диалоговом окне нажал пользователь.
MessageDlgPos(const Msg: string; AType: TMsgDlgType; Buttons: TMsgDlgType;
HelpCtx: Longint; X,Y: integer):Word;
Отображает окно с сообщением Msg, с пиктограммой, задаваемой параметром AType, с набором кнопок, задаваемым параметром AButtons, и с темой справки, задаваемой параметром HelpCtx. Параметры X и Y задают экранные координаты верхнего левого угла окна. Возвращает результат, указывающий, какую кнопку в диалоговом окне нажал пользователь.
ShowMessage(const Msg: string);
Отображает окно с сообщением Msg, с кнопкой OK.
Пример создания приложения с обработкой ис.
Задание. Создать Windows-приложение для отображения матрицы. Матрица должна загружаться из файла, выбранного с помощью компонента OpenDialog.
Для выполнения этого задания на форме необходимо разместить следующие компоненты:
Страница - компонент OpenDialog .
Страница
- компонент StringGrid
.
Страница - компонент Button .
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.1.
При работе с
массивами ввод и вывод информации на
экран удобно организовывать с помощью
компонента StringGrid.
Компонент StringGrid
используется для отображения информации
в виде таблицы. Пиктограмма
компонента StringGrid
находится на странице Additional
Палитры Компонентов. Таблица содержит
две зоны – фиксированную и рабочую.
Фиксированная
зона служит
для вывода наименований строк и столбцов
рабочей зоны и управления их размерами
с помощью “мыши”. Фиксированная зона
выделена другим цветом и в нее запрещен
ввод информации с клавиатуры.
StringGrid
OpenDialog
Рис.1.
Количество строк и столбцов фиксированной зоны устанавливается в свойствах FixedRows и FixedCols соответственно. Рабочая зона содержит RowCount строк и ColCount столбцов информации, которую можно изменять как программно, так и с помощью “мыши” или клавиатуры. Доступ к содержимому ячеек в программе осуществляется с помощью свойства Cells[ACol, ARow: integer]: string, где ACol-номер столбца, а ARow – номер строки таблицы, причем нумерация начинается с нуля. По умолчанию в компонент StringGrid запрещен ввод информации с клавиатуры, для разрешения ввода информации в ячейки необходимо в Инспекторе Объектов дважды щелкнуть “мышью” на символе + свойства +Options и в открывшемся списке опций установить значение goEditing в True.
Так как в нашем задании фиксированная зона не используется, то в Инспекторе Объектов значения свойств FixedCols и FixedRows можно установить равными 0. Организуем файл таким образом, чтобы в первой строке находилось количество строк матрицы, во второй – количество столбцов, а каждый элемент матрицы - в отдельной строке. Тогда, прочитав первые 2 цифры, можно установить значения свойств RowCount и ColCount компонента StringGrid. Так как при работе с файлами могут возникать ошибки ввода-вывода, то необходимо использовать защитные конструкции try..except и try..finally. В общем случае метод-обработчик события onClick для компонента Button будет выглядеть следующим образом:
procedure TForm1.LoadClick(Sender: TObject);
var f1:textfile;
c,r,i,j,k:integer;
begin
if opendialog1.Execute then
if FileExists(OpenDialog1.FileName) then
begin
assignfile(f1,opendialog1.FileName);
try
try
reset(f1); // здесь возможна ошибка EInOutError
readln(f1,c); // здесь возможна ошибка EInOutError
readln(f1,r); // здесь возможна ошибка EInOutError
stringgrid1.ColCount:=c;
stringgrid1.rowCount:=r;
for i:=0 to r-1 do
for j:=0 to c-1 do
begin
readln(f1,k); // здесь возможна ошибка EInOutError
stringgrid1.Cells[j,i]:=inttostr(k);// здесь возможна ошибка
EConvertError
end;
finally
closefile(f1);
end;
except
on E:EInOutError do showmessage('Ошибка при работе с файлом: '+inttostr(E.Errorcode));
on EConvertError do showmessage('Ошибка преобразования типов');
end;
end
else showmessage('Файл не найден');
end;