Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №7
Компоненты TStringGrid, TTreeView, TPageControl, THeaderControl и THeader
Цель работы: изучить часто используемые для организации ввода-вывода компоненты (TStringGrid, TTreeView, TPageControl, THeaderControl и THeader).
TStringGrid
Компонент TStringGrid представляет собой таблицу, содержащую строки. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным и не прокручиваться. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующие в окне компонента. Каждой ячейке таблицы может быть поставлен в соответствие некоторый объект.
Таблица предназначена в первую очередь для отображения текстовой информации, но в ней можно отображать и графическую информацию.
Основные свойства компонента, определяющие отображаемый текст: Cells - строка, содержащаяся в ячейке с заданными индексами столбца и строки, Cols - список строк, содержащихся в столбце с заданным индексом, Rows - список строк, содержащихся в строке с заданным индексом, Objects - объект, связанный со строкой, содержащейся в ячейке с заданными индексами столбца и строки. Все эти свойства доступны во время выполнения.
Свойства ColCount и RowCount определяют соответственно число столбцов и строк, свойства FixedCols и FixedRows - число фиксированных, не прокручиваемых столбцов и строк. Цвет фона фиксированных ячеек определяется свойством FixedColor. Свойства LeftCol и TopRow определяют соответственно индексы первого видимого на экране в данный момент прокручиваемого столбца и первой видимой прокручиваемой строки.
Свойство ScrollBars определяет наличие в таблице полос прокрутки. Причем полосы прокрутки появляются и исчезают автоматически в зависимости от того, помещается таблица в соответствующий размер, или нет.
Свойство Options является множеством, определяющим многие свойства таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine и goFixedHorzLine) и не фиксированных (goVertLine и goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColSizing и goRowSizing), перемещать столбцы и строки (goColMoving и goRowMoving) и многое другое. Важным элементом в свойстве Options является goEditing - возможность редактировать содержимое таблицы.
Для отображения изображений компонент TStringGrid имеет канву Canvas. Имеется метод CellRect, который возвращает область канвы, отведенную под ячейку с заданными индексами столбца и строки.
Иерархическое отображение данных
Компонент TTreeView
(страница Win32)служит для отображения иерархических данных в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы. С каждым узлом дерева могут быть связаны некоторые данные.
Основным свойством TTreeView, содержащим информацию об узлах дерева, является индексированный список узлов Items типа TTreeNodes. Каждый узел является объектом типа TTreeNode, обладающим своими свойствами и методами.
Во время проектирования формирование дерева осуществляется в окне редактора узлов дерева, которое вызывается двойным щелчком на компоненте TTreeView или нажатием кнопки с многоточием около свойства Items в окне Инспектора Объектов. Для каждого нового узла дерева можно указать ряд свойств: Text - надпись, появляющаяся в дереве около данного узла, ImageIndex и SelectedIndex - индексы пиктограмм, отображаемых для узла, который соответственно не выделен и выделен пользователем в данный момент. Эти индексы соответствуют списку изображений, хранящихся в отдельном компоненте TImageList, на который указывает свойство Images компонента TTreeView. Свойство узла - StateIndex позволяет добавить вторую пиктограмму в данный узел, не зависящую от состояния узла. Подобная пиктограмма может просто служить дополнительной характеристикой узла. Индекс, указываемый как StateIndex, соответствует списку изображений, хранящихся в отдельном компоненте TImageList, указанном в свойстве StateImages компонента TTreeView.
При выполнении программы узлы могут быть добавлены методами TTreeNodes AddChildFirst, AddChild, AddChildObjectFirst, AddChildObject, AddFirst, Add, AddObjectFirst, AddObject and Insert.
Пример создания дерева:
var Tree:TTreeNode;
begin
if TreeView1.Items.Count=0
then Tree:=TreeView1.Items.AddFirst(nil,Text)
else Tree:=TreeView1.Items.Add(TreeView1.Selected,Text);
Tree.ImageIndex:=1; {Заранее в компонент TimageList добавлены рисунки }
Tree.SelectedIndex:=0;
end;
Секционное отображение данных
TPageControl
Компонент TPageControl относится к группе многостраничных панелей, которые позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания. Выбор пользователем страницы производится щелчком на соответствующей закладке. Для создания компонента многопозиционного переключателя с одной единственной страницей вместо TPageControl нужно использовать TTabControl.
Во время проектирования работу со страницами проще всего производить, щелкнув на компоненте правой кнопкой мыши и выбрав из всплывшего меню соответствующий раздел: NewPage - создать новую страницу, NextPage или Previous Page - перейти к следующей или предыдущей странице. Каждая создаваемая страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п. Ее основные свойства:
Name Имя, по которому можно ссылаться на страницу
Caption Надпись, которая появляется на ярлычке закладки
PageIndex Индекс, по которому можно ссылаться на страницу
ImageIndex Индекс изображения, которое может появляться на ярлычке закладки
Из общих свойств компонента TPageControl можно отметить следующие:
Style Определяет стиль отображения компонента
MultiLine Определяет, будут ли закладки размещаться в несколько рядов, если все они не помещаются в один ряд
TabPosition Определяет место расположения ярлычков закладок
TabHeightиTabWidth Высота и ширина ярлычков закладок
Images Ссылка на компонент TImageList, который содержит список изображений на ярлычках
ScrollOpposite Определят способ перемещения закладок при размещении их в несколько рядов
ActivePage Имя активной страницы
Pages[Integer] Доступ к странице по индексу
PageCount Количество страниц
В компоненте имеется ряд методов, позволяющих оперировать страницами, создавать их, уничтожать, переключать. Основные события компонента - OnChanging и OnChange. Первое из них происходит непосредственно перед переключением на другую страницу после щелчка пользователя на новой закладке. При этом в обработчик события передается по ссылке параметр AllowChange - разрешение переключения. Если в обработчике задать AllowChange = false, то переключение не произойдет. Событие OnChange присходит сразу после переключения.
THeaderControl
Компонент THeaderControl (страница Win32) позволяет вводить в приложение заголовок, состоящий из ряда секций, причем пользователь во время выполнения приложения может их перемещать.
Описание компонента находится в модуле ComCtrls.
Основное свойство компонента THeaderControl - Sections. Оно является списком объектов типа THeaderSection, каждый из которых описывает одну секцию заголовка.
Свойство Sections можно задать во время проектирования, с помощью редактора заголовков, который можно вызвать, нажав кнопку с многоточием рядом с этим свойством в инспекторе объектов или просто сделав двойной щелчок на компоненте THeaderControl. Свойство Style определяет стиль заголовков: hsButtons- как кнопки,
hsFlat плоские. Свойство HotTrack определяет подсвечивание заголовков при прохождении над ними курсора мыши (работает только для стиля hsButtons).
В редакторе заголовков можно добавлять секции, а затем в окне Инспектора Объектов задавать их свойства: Text - текст заголовка, MinWidth и MaxWidth - соответственно минимальная и максимальная ширина секции в пикселях, Width - значение ширины по умолчанию.
При изменении ширины секции во время выполнения генерируется событие OnSectionResize. В обработчик этого события надо вставить операторы, синхронно изменяющие ширину того, заголовком чего является секция: это может быть столбец какой-то таблицы, какая-то панель и т.п.
Свойство AllowClick, равное по умолчанию true, определяет поведение секции как кнопки при щелчке пользователя на ней. В этом случае при щелчке генерируется событие OnSectionClick компонента HeaderControl, в обработчик которого и надо вставить операторы, выполняющие необходимые действия.
Свойство секции Style может иметь значение hsText - в этом случае в заголовке отображается значение свойства Text, или hsOwnerDraw - в этом случае отображается то, что рисуется непосредственно на канве Canvas операторами, записанными в обработчике события OnDrawSection компонента HeaderControl. В секции можно отобразить рисунок, находящийся в контейнере TImageList. Для этого нужно связать компоненты, в поле Images компонента THeaderControl указать имя ImageList1 и в заголовке задать номер рисунка в поле ImageIndexs.
Компонент THeader (страница Win 3.1) обладает существенно меньшими возможностями, чем HeaderControl. В нем свойство Sections имеет тип TStrings и содержит только тексты заголовков, не позволяя регулировать пределы изменения ширины секций, их функционирование как кнопок и т.д.
Вывод звуковой информации
MessageBeep (UINT : uType) воспроизводит звуковой сигнал. Звуки, соответствующие различным типам сигналов, хранятся в реестре в разделе [sounds] и устанавливаются пользователем с помощью программы Панель управления щелчком на пиктограмме Звук.
Целый без знака параметр uType функции MessageBeep определяет воспроизводимый звук. Для него предопределены следующие константы:
Значение Звук
MB_ICONASTERISK Звездочка
MB_ICONEXCLAMATION Восклицание
MB_ICONHAND Критическая ошибка
MB_ICONQUESTION Вопрос
MB_OK Стандартный звук
При успешном завершении функция возвращает ненулевое значение (true). Если функция вернула нулевое значение, то получить информацию об ошибке можно с помощью вызова GetLastError.
После инициализации воспроизведения звука функция MessageBeep возвращает управление в точку вызова и воспроизведение звука производится асинхронно.
Если функция MessageBeep не нашла указанный тип звука, она пытается воспроизвести стандартный звук. Если и он не установлен или если компьютер не снабжен звуковой картой, то звук воспроизводится через динамик компьютера.
Задание на разработку:
Задайте синхронное изменение ширины компонента Memo1 при изменении ширины секции компонента HeaderControl1. Результат сравните с примером, который находится в каталоге с лабораторной работой \Example2.
Результат сравните с примером, находящимся в каталоге \Example3.
Контрольные вопросы