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.  Предложите способ ввода информации о структуре государственного управления РФ.


 

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

11004. Соотношение философии и науки по предмету. Предмет философии как отношение человека к миру 73.5 KB
  Соотношение философии и науки по предмету. Предмет философии как отношение человека к миру 1. Соотношение философии и науки по предмету. Множество определений философии. Существует множество определений философии и ее предмета1. Древнегреческий философ Платон пола...
11005. Жизнь и философствования Сократа 62 KB
  Жизнь и философствования Сократа Поворотным пунктом в развитии античной философии явились воззрения Сократа 469 399 до н.э.. Его имя стало нарицательным и служит для выражения иди мудрости. Сам Сократ ничего не писал был близким к народу мудрецом; философствовал на улиц...
11006. Основные черты средневекового христианского мировоззрения.(Бог, человек и мир в средневековой христианской философии) 38 KB
  Основные черты средневекового христианского мировоззрения.Бог человек и мир в средневековой христианской философии. Особенности философии СредневековьяВыделяют следующие особенности философии Средневековья: философское учение теоцентрично философия Средневеко
11007. Рационалистическая метафизика 17 века (Декарт, Спиноза, Лейбниц) 38 KB
  Рационалистическая метафизика 17 века Декарт Спиноза Лейбниц Рационализм направление признающее разум основой познания и поведения людей. Начал складывать в результате развития математики и естествознания. Исходит из идеи естественного порядка. Утверждает опр
11008. Полемика славянофилоф и западников в русской философии 74 KB
  Полемика славянофилоф и западников в русской философии Своеобразным направлением в русской философии явилось славянофильство ярким представиетелм которого были А.С.Хомяков 18041860 и И.В.Киреевский 18061856 оказавшие значительное воздействие на развитие русской мыс
11009. Истоки философии. Хронология и краткая характеристика основных этапов 46 KB
  Тема. Истоки философии Хронология и краткая характеристика основных этапов. Причины возникновения философии являются и причиной её развития. Данный вопрос является дискуссионным. Основные этапы развития мировой философии преимущественно связываются только с развит...
11010. Гносеология или теория познания 55 KB
  Гносеология. Гносеология или теория познания это раздел философии в котором изучаются природа познания и его возможности отношение знания к реальности выявляются условия достоверности и истинности познания. Термин Гносеология происходит от греческих слов g...
11011. Закономерности исторического развития техники 46 KB
  Закономерности исторического развития техники. Проблема периодизации. Предметная сторона Т. Техника и наука. Т как деятельность. ФТ выделяет общие закономерности и стадии исторической эволюции Т потом это будет конкретизировано в истории Т. В отличие...
11012. Социальная роль техники 47 KB
  Социальная роль техники. Техника как основа социального прогресса. Информационное общество. Понятие техногенной цивилизации. Антитехницизм и его основания. Рассмотрены различные периодизации истории техники. Каждая новая стадия в развитии техники в