- •Работа с типизированными файлами.
- •Варианты заданий
- •Теоретические сведения, необходимые для выполнения курсовой работы
- •1. Система программирования Delphi
- •2. Основные свойства компонентов
- •3. События компонентов
- •4. Компоненты Delphi
- •5. Работа с формами
- •6. Пример обработки исключительных ситуаций
- •7. Пример реализации приложения
5. Работа с формами
Как известно, существуют информационные окна (формы) и диалоговые. Информационное окно предназначено в основном для вывода информации пользователю. Диалоговые окна – специальные формы, предназначенные для организации диалога пользователя с программой посредством этого окна. Здесь возможна двусторонняя передача информации – как программе, так и пользователю.
Окна могут быть также модальными и немодальными. При открытии окна в немодальном режиме, возможен переход на окно, его вызвавшее, и на другие. При вызове окна в модальном режиме невозможен переход на другие окна до тех пор, пока не закроется модальное окно.
Вызов модального окна осуществляется с помощью метода ShowModal:
Имя_формы.ShowModal;
Немодальное окно вызывается методом Show.
Метод Close закрывает окно (при этом возникает событие закрытия окна OnClose), Hide – делает скрытым (для его отображения используется метод Show).
С каждой формой связан модуль (*.pas). Определив глобальные переменные, например, в главной форме, их можно сделать доступными в дочерних окнах с помощью пункта меню File – Use unit и указать модуль, содержащий описание глобальных переменных.
Обратиться к компоненте другой формы можно, указав сначала имя формы, затем имя компоненты и требуемое свойство. Например,
If Form2.Edit1.Text = '' {Если не введено значение} then
Begin
// Выдаем сообщение об ошибке
ShowMessage('Пустое поле!');
// Устанавливаем курсор на Edit1 для ввода
Form2.Edit1.SetFocus;
End;
6. Пример обработки исключительных ситуаций
Пусть на форме размещены: StringGrid1(5x5), Button1. Таблица должна хранить матрицу целых чисел. При нажатии на кнопку данные из таблицы должны сохраниться в массив, с которым впоследствии можно производить различные действия. При этом должна пройти проверка правильности введенных в ячейки значений. Если есть ошибка, то выдать сообщение и обнулить значение ячейки с ошибочными данными. Код модуля выглядеть следующим образом.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;
type
EError = class(Exception)
end;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A: array[0..4,0..4] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
//Заполняем матрицуA введенными в StringGrid1 значениями
for i:=0 to StringGrid1.RowCount-1 do
for j:=0 to StringGrid1.ColCount-1 do
begin
try //начало опасного блока
A[i,j]:=StrToInt(StringGrid1.cells[i,j]);
if abs(A[i,j])>1000 then
//создаем собственное исключение
raise EError.Create('Число должно быть в диапазоне [-1000,1000]!');
except // обработка исключительных ситуаций
on E: EError do ShowMessage(E.Message);
on EConvertError do begin
StringGrid1.Cells[i,j]:='0';
ShowMessage('Ошибка в записи числа!');
end;
end;
end;
end;
end.
Для исключения возможных ошибок ввода следует использовать компоненты MaskEdit – ввод с маской, SpinEdit, ComboBox, ListBox, RadioGroup, CheckBox, позволяющие выбрать возможные значения из фиксированного набора.