Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Открытие и закрытие файлов с использованием стандартных диалоговых окон




Begin

Begin

Begin

Begin

Type

Begin

Виды событий

End.

......

......

Begin

......

Read fOnMyEvent

Тype

//описание процедурного типа:

TMyEvent = procedure(Sender:TObject;var a:integer) of object;

TObj1 = class //описание класса TObj1

fOnMyEvent:TMyEvent; //описание поля класса

property OnMyEvent:TMyEvent //свойство процедурного типа

write fOnMyEvent;

end;

TObj2 = class //описание класса TObj2

procedure EventProc1(Sender:TObject; var a: integer);

procedure EventProc2(Sender:TObject; var a: integer);

end;

var Obj1: TObj1;

Obj2: TObj2;

Obj1:=TObjl. Create;

Obj2:=TObj2.Create;

Obj1.OnMyEvent:=Obj2. EventProc1;

Obj1.OnMyEvent:=Obj2. EventProc2;

Этот пример показывает, что при делегировании можно присваивать методы других классов! Здесь обработчиком события OnMyEvent объекта Obj1 по очереди выступают методы EventProc1 и EventProc2 объекта Obj2.

Но при этом должно быть полное соответствие списков параметров обработчиков событий со списком параметров про­цедурного типа события.

 

 


Выделяют две основные категории: события, обусловленные действиями пользователя (пользовательские события) и системные события (программно-управляемые).

Процедуры обработки пользовательских событий составляют главную часть программ­ного кода приложения. Они обеспечивают интерактивное взаимодействие приложения и пользователя. В Delphi для этой цели применяются предварительно определенные обработчики событий.

Например, обработчик события OnClick - щелчка на кнопке Button1 – можетиметь вид:

procedure TForml.ButtonlClick(Sender: TObject);

var x,y:real;

x:=strtofloat(Edit1.Text);

//переменной x присваивается преобразованное строков.значение

//из компонента Edit1

y:=sqr(x);

Edit2.Text:=floattostr(y);

//преобразованное в строку значение y

//записывается в компонент Edit2

end;

где функция strtofloat(t) преобразует строку t в вещественное число; функция floattostr(t) преобразует вещественное число t в строку символов.

События мыши возникают в любом визуальном потомке класса TControl. События клавиатуры возникают только в оконных компонентах (в потомках класса TWinControl).

Самый простой обработчик события клавиатуры – OnKeyPress. Он перехватывает нажатие символьных клавиш.

Обработчик события OnKeyPress имеет тип TKeyPressEvent:

Property OnKeyPress:TKeyPressEvent;

Процедурный тип обработки этого события имеет вид:

TKeyPressEvent=procedure(Sender:Tobject;var Key:char) of

object;

Параметр Key содержит символ клавиши, нажатой пользователем на клавиатуре.

Обработчик события OnKeyPress вызывается, когда пользователь нажимает клавишу с чи­таемым символом из набора ASCII. Клавиши, не имеющие символьного значения (например, Shift, F1), не генерируют событий OnKeyPress. Обработчик события – нажатия символьной клавиши в компоненте Edit1 может иметь вид:

procedure TForm1.Edit1KeyPress(Sender:TObject;

var Key:Char);

var x,y:real;

begin if key=#13 then

x:=strtofloat(Edit1.Text);

y:=sqr(x);

label2.Caption:=floattostr(y);

//преобразованное в строку значение y становится

//надписью метки label2

end;

end;

К системным относятся события активизации, завершения, события изменения состояния отдельных компонентов и т.д., которые являются косвенным результатом действия пользова­теля. Примеры системных событий: OnCreate, OnActivate, OnPaint и др.

Обработчик события OnCreate вызывается при создании формы. В процедуре обработки события OnCreate следует определить те действия, которые должны быть выполнены в момент появления формы прежде, чем пользователь начнет с ней работать.

Property OnCreate:TNotifyEvent;

Обработчик события OnCreate для формы Form1 может иметь вид:

procedure TForm1.FormCreate(Sender: TObject);

end;

 

Обработчик события OnActivate вызывается, если приложение или форма становятся ак­тивными (т.е. когда оно запускается, или когда вы переключаетесь на работу с этим приложением после работы с другим).

Обработчик события OnAclivate описывается:

Property OnActivate:TNotifyEvent;

Обработчик события OnActivate для формы Form1 имеет вид:

procedure TForm1.FormActivate (Sender: TObject);

end;

Обработчик события OnPaint вызывается при получении сообщения Windows o необходимости нарисовать (перерисовать) изображение.

Обработчик события OnPaint описывается:

Property OnPaint:TNotifyEvent;

Обработчик события OnPaint для формы Form1 имеет вид:

procedure TForm1.FormPaint (Sender: TObject);

end;

Диалоги. Работа с файлами.

В состав Windows входит ряд типовых диалоговых окон, таких как окно выбора загружаемого файла, окно настройки принтера и т.д. В Delphi реализованы классы, объекты которых дают удобные способы создания и использования таких окон.

Работа со стандартными диалоговыми окнами осуществляется в три этапа:

1. Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств.

2. На втором этапе осуществляется вызов стандартного для диалогов метода Execute, который создает и показывает на экране диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, обработчик пункта меню Открыть файл может вызвать метод Execute диалога TOpenDialog, обработчик пункта меню Сохранить может вызвать такой же метод у компонента TSaveDialog. Только после обращения к Execute на экране появляется соответствующее диалоговое окно. Окно диалога является модальным окном, поэтому сразу после обращения к Execute дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно. (Окна бывают модальные и немодальные. Немодальное окно работает одновременно с первым, они обычно открываются в одном методе и закрываются в другом. Модальное окно полностью берет на себя управление программой, поэтому оператор, следующий за обращением к методу Execute, получит управление только после закрытия этого окна.) Поскольку Execute – логическая функция, она возвращает в программу True, если результат диалога с пользователем был успешным.

3. Проанализировав результат Execute, программа может выполнить третий этап - использование введенных с помощью диалогового окна данных – имени файла, настроек принтера, выбранного шрифта и т.д.

 

TOpenDialog и TSaveDialog – диалоги открытия и сохранения файлов (страница DIALOGS)

 

Свойство FileName:String содержит маршрут поиска и выбранный файл при успешном завершении диалога. Программа может использовать это свойство для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog). Пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтении отсутствие файла может привести к аварийному завершению программы. Чтобы избежать этого, можно использовать механизм обработки исключительных ситуаций или можно проверить существование файла глобальной функцией FileExists.

Например, создадим простую программу для просмотра содержимого текстового файла. На форму поместим компонент TOpenDialog, а также кнопку TButton и редактор TMemo. Событие OnClick – щелчка по кнопке будет сигналом о необходимости загрузить в редактор новый файл.

Создадим обработчик события OnClick:

 

Procedure TForm1.Button1Click(Sender: TObject);




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 305; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.