Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Процедуры обработки событий




Для каждого объекта существует набор событий, на которые может реагировать объект. Алгоритм этой реакции задается процедурой поль­зователя обработки этого события либо стандартной процедурой (коман­дой), которая называется методом. Текст процедуры набирается в прог­рам­мном окне, которое вызывается двойным щелчком по полю зна­чения нуж­но­го события на странице Events Инспектора объектов. Имя процедуры состоит из имени формы, точки, имени объекта и имени события без первых двух букв «On».

Мышь

OnMouseDown/ OnMouseUp ‑ нажатие/отпускание любой кнопки мыши.

OnClick ‑ щелчок левой кнопкой мыши по объекту.При нажатии кнопки мыши генерируются события в порядке: OnMouseDown, OnClick (для левой кнопки), OnMouseUp.

OnDblClick ‑ двойной щелчок левой кнопкой мыши по объекту. События генерируются в порядке: OnMouseDown, OnClick, OnMouseUp, OnDblClick, OnMouseDown, OnMouseUp.

OnMouseMove ‑ перемещение указателя мышки над объектом.

Процедуры обработки этих событий могут иметь следующие параметры:

Sender ‑ указывает имя объекта над которым находится маркер мы­ши. Для получения значения имени объекта можно использовать выра­жение вида: (Sender As TControl).Namе.

Пример: Label1.Caption:= ‘Объект ‘+(Sender As TControl).Namе;

Shift ‑ указывает на состояние (нажатие) клавиш Alt, Ctrl, Shift и кнопок мыши в виде комбинации констант (в квадратных скобках через запятые): ssShift (нажата клавиша Shift), ssAtt (Alt), ssCtrl (Ctrl), ssLeft (левая кнопка мыши), ssMiddle (средняя кнопка мыши), ssRight (правая кнопка мыши), ssDouble (выполнен двойной щелчок).

X,Y ‑ координаты указателя мышки в пикселях относительно левого верхнего угла формы, начиная с нуля.

 

 

Пример:

Procedure TForm1.Button1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin If (Sender=button1) And (ssCtrl in Shift) Then {можно Shift=ssCtrl}

Label1.Caption:='Нажаты кнопка мыши и Ctrl над кнопкой Button1'; end;

Клавиатура

OnKeyDown ‑ непрерывно генерируется событие при удерживании любой клавиши в нажатом состоянии.

OnKeyPress ‑ при каждом нажатии любой клавиши, кроме Tab.

OnKeyUp ‑ при отпускании любой клавиши, кроме Tab.

События наступают в последовательности их описания.

Процедуры обработки этих событий могут иметь следующие параметры: Sender ( имя объекта), Shift (описан выше) и Key.

Параметр ‑ переменная Key задает символ, в KeyPress, или его код (именованная константа (п. 1.1.1)), который соответствует нажатой кла­ви­ше. Если в процедуре обработки события параметру Key задать символ с нулевым кодом (#0), то это вызовет отмену нажатия клавиши.

Пример ввода только цифровых символов, другие игнорируются:

Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

Begin If (key <'0') Or (key >'9') Then Key:=#0; End;

Перемещение объектов

OnStartDrag ‑ генерируется источником в начале перемещения. Обработчику передаются параметры: Source (объект ‑ источник), DragObject (адресат перемещения).

OnDragOver ‑ вызывается приемником, когда перемещаемый объект находится над приемником. Обработчику передаются параметры: Source (объект ‑ источник), Sender (объект ‑ приемник), X, Y (координаты указа­те­ля мышки), State (состояние перемещения), Accept (подтверждение перемещения ‑ True).

OnDragDrop ‑ вызывается приемником при размещении на нем объекта. Обработчику передаются параметры: Source (объект ‑ источник), Sender (объект ‑ приемник), X,Y (координаты указателя мышки).

OnEndDrag ‑ вызывается источником при завершении перемещения. Обра­бот­чику передаются параметры: Target (объект ‑ приемник), X,Y (координаты точки, в которой был отпущен объект ‑ источник Sender). Для перемещаемого объекта следует указать свойство DragMode=dmAutomatic.

Обычно для перемещения достаточно обработать события OnDragOver, OnDragDrop.

Пример перемещения поля Edit1 (DragMode=dmAutomatic):

Procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean); Begin Accept:=(Source=Edit1); End;

Procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);

Begin Edit1.Left:=X;Edit1.Top:=Y;End;//координаты нового положения

Пример перемещения элемента списка ‑ источника ListBox1 со свойством DragMode=dmAutomatic в список ‑ приемник ListBox2:

Procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

Begin Accept:=Source=ListBox1; End; //подтверждение переноса

Procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);

Begin With Source As TListBox Do Begin //присоединение объекта ListBox1

ListBox2.Items.Add(Items[ItemIndex]);//добавление элемента из ListBox1 в 2

Items.Delete(ItemIndex);{удаление скопирован. элемента из ListBox1}End;

Другие события

OnEnter/OnExit ‑ получение/потеря фокуса элементом управления.

OnHint ‑ указатель мыши неподвижен некоторое время на объектe.

OnResize ‑ событие происходит при изменении размеров объекта. В проце­ду­ре обработки этого события для формы можно изменить размеры объектов, расположенных на форме, или восстановить размеры формы.

OnChange ‑ событие происходит при изменении состояния объекта. В про­цедуре обработки этого события (например, при вводе данных), можно проверить правильность вводимой информации или блокировать (разбло­ки­ровать) отдельные объекты в зависимости от введенного значения.

Методы

Методом можно назвать команду, которая отдается объекту. При ссыл­ке на метод следует указать имя объекта (значение свойства Name), точ­ку и имя метода и далее параметры метода в круглых скобках.

Assign(Source:TPersistent) ‑ присвоение содержимого одно объекта друго­му совместимому объекту (копирование содержимого объекта (п.2.3.3.2)).

< тип создаваемого объекта >.Create(Self) ‑ создание объекта.

Пример создания формы Form3:

If Not Assigned (Form3) Then Form3:=TForm3.Create(Self);//создание

Clear ‑ очистка содержимого объекта с текстовой информацией.

Пример: ListBox2.Clear; RichEdit1.Clear; Edit1.Clear; Memo2.Clear;

Create и Free ‑ создание и удаление объекта.

LoadFromFile(S) ‑ загрузка файла под именем S (п.2.3.2.3).

Perform (Msg: Cardinal, WParam; LParam: LongInt): LongInt ‑ посылает сооб­щение (команду) с кодом Msg оконным объектам.

Пример посылки команды lb_GetCount подсчета числа элементом в списке ListBox1 и вывод полученного числа в надписи Label1:

Label1.Caption:=IntToStr(ListBox1.Perform(lb_GetCount,0,0));

Refresh ‑ повторное формирование и визуализация формы или объекта. Обычно используется после изменения свойств объекта для вывода его с новыми свойствами.

Пример: Button2.Caption:='Выход'; Button2.Refresh;

SaveToFile(S) ‑ вывод содержимого компонента в файл S (п.2.3.2.3).

ScrollInView(AControl:TControl) ‑ изменяет позиции полос прокрутки так, чтобы объект, указанный параметром AControl, стал виден (п.2.3.5.5).

SetFocus ‑ устанавливает фокус на определенном объекте. Установить фо­кус на объекте означает сделать объект текущим. Например, для текущего текстового поля курсор находится в данном поле, предлагая вводить данные в это поле. Естественно, не могут одновременно быть несколько объектов, на которые установлен фокус.

При попытке установить фокус на объект, который не может его получать (его свойство Enabled=False), возникает ошибка. Для проверки его доступности можно использовать функцию (метод) CanFocus, которая возвращает True, если объект может получать фокус или проверять значение свойства Enabled.

Пример: If Edit2.CanFocus Then Edit2.SetFocus //первый вариант

If Edit2.Enabled Then Edit2.SetFocus //второй вариант

Show/Hide ‑ показать/скрыть объект.

Глобальные объекты

Формы (Form)

Форма является основой разработки приложения и на ней разме­щаются все необходимые компоненты. Форма служит окном Windows. Для создания новой формы нужно обратиться к репозиторию командой File/New и выбрать нужный тип формы. В приложении может быть несколько форм (окон), но одна из них называется главной, и она первой появляется после запуска приложения и ее закрытие прекращает работу при­ложения. Можно сменить главную форму командой Project/Op­tions/Form/Main Form.

Формы бывают двух типов: модальные (требуют обязательного закрытия перед обращением к другой форме) и немодальные (допускают переключение на другие формы без ее закрытия). Приложения бывают однодокументальные (SDI ‑ Single Document Interface), в которых ни одно окно не содержит в себе другие окна, и многодокументальные (MDI ‑ Multiple Document Interface) ‑ главное окно содержит дочерние окна.

Форма включает клиентскую и не клиентскую части. Не клиентская часть занята рамкой, заголовком, системными кнопками окна и строкой главного меню формы, если она есть. Клиентская часть доступна для размещения объектов.

Свойства

Active/ChildActiveForm ‑ обычное/дочернее окно активно, т.е. имеет фокус ввода (True). Родительское окно не может быть активным.

ActiveControl ‑ определяет дочерний элемент, содержащий фокус.

ActiveMDIChild ‑ определяет дочернее MDI ‑ окно с фокусом.

AutoScroll‑ автоматическое появление полос прокрутки (True).

BorderIcon ‑ определяет наличие в окне кнопок: biSystemMenu (меню), biMinimize (минимизации), biMaximize (максимизации), biHelp (помощи).

BorderStyle ‑ стиль рамки окна: bsNone (заставка, нет рамки и заголовка, не может перемещаться и изменяться мышкой), bsSigle (размеры рамки не изменяются), bsSizeable (размеры рамки изменяются), bsDialog (диалоговое окно не означает, что окно модальное), bsToolWindow (панель инстру­мен­тов), bsSizeToolWind (панель инструментов с изменяемыми размерами). Воз­можность изменения или неизменения размеров окон относится к мышке, а программно всегда можно изменить размеры окон.

ClientHeight, ClientWidth ‑ высота и ширина клиентской части формы.

FormStyle ‑ стиль формы: fsNormal (стандартный), fsMDIChild (дочерняя форма), fsMDIForm (родительская форма), fsStayOnTop (всегда вверху, для вывода заставки или системной информации).

Icon ‑ имя файла с пиктограммой окна. Можно программно задать пик­тограмму (Form3.Icon.LoadFromFile(‘Book.ico’).

KeyPreview ‑ форма обрабатывает событие от клавиатуры перед обработ­кой активным объектом (True).

MDIChildCount ‑ число дочерних окон в MDI ‑ окне.

MDIChildren[I] ‑ открывается доступ к I‑му дочернему окну в MDI‑окне.

Menu ‑ имя главного меню формы (п.2.3.8.1).

ModalResult ‑ целочисленный результат диалога для модального окна. Position ‑ положение и размеры окна при появлении окна: poDesigned (запроектированное), poDefault (Windows), poDefaultPosOnly (положение при проектировании, размеры ‑ Windows), poDefaultSizeOnly (размеры при проектировании, положение ‑ Windows), poScreenCenter (в центре экрана).

PrintScale ‑ определяет масштабирование формы при печати на принтере: poNone (нет, каждый пиксель выводится одной точкой), poProportional (пропорционально), poPrintToFit (пропорционально с заполнением листа).

Scale ‑ разрешается масштабирование формы при различии значений свойств разрешающей способности PixelPerInch для формы и экрана.

TitleMode ‑ стиль расположения дочерних окон при упорядочении мозаикой.

VertScrollBar, HorzScrollBar ‑ управление вертикальной и горизонтальной полосами прокрутки при AutoScroll=False.

WindowMenu ‑ определяет пункт главного меню MDI‑окна, к которому добавляются опции дочернего окна.

WindowState ‑ состояние окна при его появлении: wsNormal (проектное), wsMinimized (свернутое), wsMaximized (на весь экран).

 

Методы

ArrangeIcons ‑ упорядочение пиктограмм закрытых дочерних окон.

Cascade/Tile ‑ каскадное/мозаичное расположение дочерних окон.

Close ‑ окно закрывается без его уничтожения и, по возможности, удаляет­ся с экрана. Можно его снова показать методом Show. Метод помещает константу 2 (mrCancel) в свойство формы ModalResult.

Закрытие главной формы завершает выполнение приложения.

CloseQuery ‑ возвращает True, если можно закрыть окно.

Application.CreateForm( <тип формы>,<имя формы> ) ‑ создание формы.

Пример: Application.CreateForm(TForm2,Form2)

DefocusControl( Control:TwinControl,R ) ‑ отбирает фокус у дочернего элемента Control и, если R=True, то фокус получает форма.

FocusControl( Control:TwinControl ) ‑ передает фокус дочернему элементу Control.

Free, Release, Destroy ‑ уничтожает окно и ее дочерние окна и освобождает память. Обращение к уничтоженным окнам вызовет ошибку. Рекомен­ду­ется использовать метод Free, который проверяет возможность удаления.

GetFormImage ‑ содержит текущее изображение формы.

Hide ‑ скрыть форму. Метод не изменяет значение свойства ModalResult. После скрытия свойство Visible:=False.

Next/Previous ‑ переход к следующему/предыдущему MDI‑окну.

Print ‑ распечатка окна на принтере.

SendCancelMode(Sender:Tcontrol) ‑ восстанавливает начальное состояние окна.

SelectNext(CurControl as TWinControl;GoForward,CheckTabStop:Boolean) ‑ передает фокус следующем/предыдущему (GoForward:=True/False) объекту, относительно объекта CurControl с учетом свойства TabStop (CheckTabStop:=True) объекта ‑ адресата (п.2.3.2.1).

SetFocus ‑ передает фокус активной и видимой форме.

Show ‑ показ формы в немодальном режиме. После свойство Visible:=True.

ShowModal:Integer ‑ показ формы в модальном режиме и возвращение результата диалога. После возвращения свойство Visible:=True.

События

OnActive ‑ активизация окна Sender при получении фокуса.

OnClose ‑ непосредственно перед закрытием окна Sender. Параметр‑пе­ре­мен­ная Action задает режим: caNone (не закрывать окно), caHide (скрыть окно,), caFree (уничтожить окно), caMinimize (свернуть окно). При закрытии (Close)/уничтожении окна Action= caHide / caFree.

Событие возникает при закрытии окна щелчком по системной кнопке закрытия окна или при вызове метода Close. При закрытии главного окна все остальные окна закрываются без генерации этого события.

OnCloseQuery ‑ перед закрытием окна Sender. Обработчик задает парамет­ру‑переменной CanClose значение True при закрытии окна.

Пример подтверждения закрытия окна:

CanClose:=MessageDlg(‘Закрыть?’,mtConfirmation,[mbYes,mbNo],0)=MrYes

OnCreate ‑ при создании окна перед его появлением на экране. Можно, например, установить начальные свойства формы и ее объектов, открыть фай­лы, сформировать значения полей, списков, установить фокус, забло­кировать или разблокировать объекты.

OnDeactivate ‑ при потере фокуса.

OnDestroy ‑ перед разрушением окна для освобождения ресурсов.

OnHelp ‑ при обращении к справочной системе. Если обработчик укажет параметру‑переменной CallHelp=True, то получение помощи разрешается

OnHide,OnShow ‑ момент исчезновения/появления окна.

OnPaint ‑ при перерисовке окна, например, при активизации формы, если ее часть была закрыта другими формами.

OnResize ‑ при изменении размеров окна. В обработчике можно изменить размеры объектов в окне пропорционально изменениям окна.

При закрытии и уничтожении формы генерируются события в пос­ле­довательности: OnCloseQuery, OnClose, OnDeactivate, OnHide, OnDestroy.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...