КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Компонент События приложения(TApplicationEvents) Данный компонент может использоваться совместно с компонентом TActionList. Он позволяет принимать и обрабатывать все сообщения, адресованные приложению (объект Application), в одном месте. Этот компонент удобно применять, в частности, когда требуется обрабатывать сообщения Windows, Объекты класса TApplicationEvents могут быть размещены на любых формах проекта. Все они будут получать копии сообщений, предназначенных для программы. Эти объекты способны также обрабатывать события (табл. 4.40), которые не обслуживаются компонентом TActionList, если он тоже имеется на форме. Таблица 4.40. События, обрабатываемые компонентам TApplicationEvents СобытиеДействие OnActionExecute Действие, не обслуживаемое компонентом TActionList On ActionUpdate Состояние ожидания (Ontlpdate), не обслуживаемое компонентом TActionList OnActivate Активизация приложения OnDeactivate Пользователь переключился на другую программу Windows OnException Возникновение исключительной ситуации, не обрабатываемой никаким блоком try OnHelp Запрос справочной системы OnHint Указатель находится над объектом, способным отображать всплывающую подсказку Onldle Состояние ожидания (например, когда приложение ждет действия пользователя и процессорное время не тратится) OnMessage Получение программой сообщения от Windows OnMinimize Приложение должно быть свернуто OnRestore Приложение должно быть восстановлено из свернутого состояния к нормальному размеру OnShortCut Пользователь нажал клавишу. Приложение получает это сообщение до посылки сообщения о нажатии клавиши элементу управления OnShowHint Происходит вывод подсказки
После того как компонент TApplicationEvents размещен на форме, надо задать обработчик конкретных событий. Допустим, мы хотим показывать координаты щелчков мыши в пределах окна с помощью надписи Labell. Этот объект надо заранее установить на форму. Для формы можно создать обработчик события OnMouseUp, но это не позволит отслеживать щелчки на различных элементах управления внутри формы, так как переадресация соответствующих сообщений скрыта внутри ком- понентов Da/phi 7. Для этой цели удобно применить компонент TApplicationEvents, определив реакцию на событие OnMessage. Заголовок обработчика будет выглядеть так: procedure TForml.ApplicationEventslMessage( var Msg: tagMSG; var Handled: Boolean); Здесь самый важный параметр — это Msg (его тип на самом доле называется TMsg). Он описывает сообщение, полученное от Windows, перед тем как оно уйдет дальше в программу. Важнейшее поле типа TMsg называется message и содержит стандартный код сообщения, полученного отWindows (коды всех сообщений Windows хранятся в модуле Messages).__ В нашем случае надо –«поймать» сообщение WMJ-BUTTONUP (отпускание левой кнопки мыши). Экранные координаты щелчка хранятся в структуре типа TMsg, имеющей имя pt (тип TPoint). Их можно предварительно пересчитать в координаты окна с помощью стандартной функции ScreenToCLient, получающей в качестве аргумента запись типа TPoint и возвращающей запись такого же типа, только с пересчитанными координатами. Целиком обработчик запишется так: procedure TForml.ApplicationEventslMessagef var Msg: tagMSG; varHandled: Boolean); var P: TPoint; begin if Msg.message = WM_LBUTTONUP then begin P := ScreenToClient(Msg.pt); Label1.Caption := IntToStr(P.x) + ',' + IntToStr(P.y); end; end; Теперь если даже на форме разместить кнопку, то при щелчке на ней надпись Labell будет отображать координаты точки щелчка.
Компонент Таблица строк(TStringGrid) Использование многими пользователями электронных таблиц типа Excel стало практически неотъемлемой частью применения компьютеров. В системе Delphi 7 имеются два компонента, которые позволяют до некоторой степени сымитировать работу электронной таблицы, оставляя при этом, конечно, основную работу по реализации конкретных функций такой таблицы программистам. Первый компонент — это таблица строк, позволяющая работать с текстовой информацией в двумерной таблице, имеющей столбцы и строки (их размеры можно менять с помощью мыши). Дополнительно, к каждой ячейке таблицы можно «привязать» свой объект, характеристики которого программист представит в виде строки, расположенной в этой ячейке. Основное свойство таблицы строк — это двумерный массив Cells, позволяющий обращаться к содержимому ячеек и изменять их содержимое. Первое измерение - это номер строки, второе — номер столбца. ЗАМЕЧАНИЕНумерация элементов в таблице строк начинается с нуля. Число столбцов задается в свойстве ColCount, число строк — в свойстве RowCount. Следующий код программы изменяет размер таблицы, помещенной на форму в режиме проектирования (по умолчанию принят размер 5x5 элементов), на размер 10x10 ячеек и заполняет ячейки строками, содержащими их координаты (рис, 4.5), procedureTForml.FormCreatefSender: TObject); var с,г; integer; begin StringGridl.ColCount := 10; StringGridl.RowCount := 10; for с := 0 to StringGridl.ColCount-1 do for r := 0 to StringGridl.RowCount-1 do StringGridl.Cells[c,r] := '{' + IntToStr(c) • * - ' , ' + IntToStr(r) •*•')'; end; Обратите внимание, что левый столбец и верхняя строка, хотя и содержат текстовую информацию, фактически являются заголовочными областями. Использовать их наравне с другими ячейками не совсем правильно. ЗАМЕЧАНИЕЧисло строк и столбцов, имеющих характер заголовка, задается свойствами FixedCols и FixedRows. Если таблица не содержит заголовочной информации, эти свойство должны принимать значение 0. Можно получить доступ ко всем элементам одного столбца или одной строки. Соответствующие свойства Col и Row имеют тип TStrings, позволяющий обращаться к нужному элементу по номеру. Чтобы привязать к ячейке объект (наследник класса TObject), надо использовать свойство Objects, представляющее собой такой же массив, как Cells, но содержащий не строки, а объекты. Эти объекты должны создаваться, а также уничтожаться программистом вручную, иными словами, весь контроль над состоянием этого массива полностью возлагается на разработчика. Свойство Objects предоставляет только доступ к нужному объекту. Остальные свойства, предназначенные для оформления таблицы строк, приведены в табл. 4.41.
Компонент Список с флажками (TCheckListBox) Данный список ничем не отличается от обычного списка за исключением дополнительных флажков в начале каждой строки. При создании такою списка дополнительно настраиваются свойства, указанные ниже. Таблица 4.42. Свойства класса TCheckListBox
|