10230

Компоненты TStringGrid, TTreeView, TPageControl, THeaderControl и THeader

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №7 Компоненты TStringGrid TTreeView TPageControl THeaderControl и THeader Цель работы: изучить часто используемые для организации вводавывода компоненты TStringGrid TTreeView TPageControl THeaderControl и THeader. TStringGrid Компонент TStringGrid представляет собой таблицу содержащую строки. Т

Русский

2013-03-24

68.5 KB

6 чел.

Лабораторная работа №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 не нашла указанный тип звука, она пытается воспроизвести стандартный звук. Если и он не установлен или если компьютер не снабжен звуковой картой, то звук воспроизводится через динамик компьютера.

Задание на разработку:

  1.  Создайте приложение, позволяющее создавать древовидную структуру какого-либо явления или процесса. Результат сравните с примером, который находится в каталоге с лабораторной работой \Example1.
  2.  Поместите на форму компоненты THeaderControl, TImageList и два TMemo. Расположите визуальные компоненты как показано на рисунке.

Задайте синхронное изменение ширины компонента Memo1 при изменении ширины секции компонента HeaderControl1. Результат сравните с примером, который находится в каталоге с лабораторной работой \Example2.

  1.  Создайте приложение в котором изменение ширины колонок компонента TStringGrid регулируется компонентом THeaderControl.

Результат сравните с примером, находящимся в каталоге \Example3.

  1.  Создайте приложение, в котором  в одной закладке TPageControl вводятся предложения в TMemo, а на другой странице в TStringGrid отображается в каждом столбце соответствующее предложение, разбитое на отдельные слова.  

Контрольные вопросы

  1.  Для каких целей можно использовать компонент TStringGrid?
  2.  Какую структуру имеет класс TTreeView? Для чего он используется?
  3.  Расскажите о секционном отображении информации в приложениях. Какие компоненты для этого используются?
  4.  Каким образом можно сформировать одномерный (двумерный) массив? Предложите компоненты VCL, которые, как вам кажется, наиболее подходят для этой цели.
  5.   Как можно вывести содержимое массивов на экран?
  6.  Предложите способ ввода-вывода информации о человеке (ФИО, дату, место рождения, рост, вес, место жительства, телефон).
  7.  Предложите способ ввода информации о структуре государственного управления РФ.


 

А также другие работы, которые могут Вас заинтересовать

78814. Слава тебе, трудовой человек! (посвящено 75-ти летию Стахановского движения) 199.5 KB
  Стаханова разных лет; Фотографии орудий шахтерского труда; Фотографии памятников А. Стаханову; Вырезки из газет о трудовых подвигах советских людей Ход урока I. Прошлых лет поднимем занавес В днях былых большая сила: И ударник и стахановец До сих пор звучит красиво.
78815. Ми до тебе, казко, в гості завітали 44 KB
  Сьогодні ми зібралися тут всі разом для того, щоб побувати в гостях у казки. Діти дуже люблять слухати казки, а дорослі з великим задоволенням розповідають, читають їх дітям. Казка жила, живе і вічно буде жити. Вона буде існувати стільки, скільки будуть жити люди.
78816. Нехай Україна у щасті буя, - у тім нагорода і втіха моя… 51.5 KB
  Народе мій убожеством прибитий Знеможений і темністю сповитий Що вже забув і поважать себе Потративши свої колишні сили Як я любив твої сумні могили Україно Як я любив тебе на мультимедійній дошці з’являється портрет Михайла Старицького.
78817. Слава страстям, Твоїм Господи 231 KB
  Вона почуває себе винною В тому що її колючки ранили голову Христа. Побачивши Христа її обняв великий жаль і співчуття. Думаю що кожен з нас під час великого посту зробив собі іспит совісті і підтвердив що замість щирої подяки ми своїми гріховними вчинкми наново розпинаємо Христа.
78818. Свято Стрітення 131.5 KB
  Мета: розказати про історію виникнення свята Стрітення і традиції пов’язані з ним; дати поняття про те що свічка -– це світло Боже символ життя; ознайомити з легендою народними звичаями; поглибити знання про значення свічки як одного з символів християнської етики...
78820. Выступление агитбригады «Светофорчик» 58.5 KB
  По пути домой из школы Пригодятся правила Знак дорожный он достоин Твоего внимания Эти книги не простые И наука не легка Целый свод дорожных правил Надо знать наверняка 8. Ни на миг не забываем Знак дорожный каждый Всех к порядку призываем Это очень важно Все: Не нарушайте правила дорожного движения...
78821. ПОСВЯТА В СТАРШОКЛАСНИКИ 68.5 KB
  Мета. Виховувати повагу до вчителів, бажання продовжувати вчитися у старших класах; розвивати артистизм, логічне мислення; зв’язне мовлення; сприяти згуртуванню учнівського колективу.