Методические указания. 1. Компонент ImageList (страница Win32)

1. Компонент ImageList (страница Win32)

Невизуальный компонентImageList представляет собой контейнер для хранения графических объектов (по умолчанию размером 16 x 16 пикселей). На ImageList могут ссылаться другие компоненты, например для получения пиктограмм. Для обращения к графическим объектам используются индексы, начинающиеся с 0.

Основные свойства:

¨ Width – ширина изображения

¨ Height – высота изображения

¨ DrawingStyle определяет способ отображения

Основные методы:

¨ Add – добавление объекта

¨ Delete – удаление изображения

¨ Clear – очищение списка

¨ FileLoad – загрузка изображения из графического файла

¨ GetBitmap возвращает указанное индексом изображение в виде битового образа, а GetIcon – в виде значка

Изображения в компонентTImageList могут быть загружены в процессе проектирования с помо­щью редактора списков изображений. Окно редактора вызывается двой­ным щелчком на компонентеTImageList или щелчком правой кнопки мыши и выбором команды кон­текстного меню ImageList Editor …. В окне редактора списков изображений можно добавить в списки изображения (кноп­ка Add), удалить изображение из списка (кнопка Delete), очистить весь список (кнопка Clear). При до­бавлении изображения в список появляется окно, в котором вы можете выбрать интересующий вас файл.

v Пример 1. Поместите на форму 2 компонента ImageList. В одном из них будем хранить битовые изображения размером 16x16, а в другом - 32x32. В ImageList1 загрузите из каталога Files\ Common Files\ Borland Shared\ Images следующие графические изображения outclose.bmpиз каталога Default, иconstr16.bmpи handsh16.bmp из каталога Icons. В свойствах Wedth и Height компонента ImageList2 измените размеры на 32, затем загрузите графический объект из каталога Icons файл handshak.ico.

2. Компонент TreeView (страница Win32)

Компонентслужит для отображения древовидных структур, где с каждым узлом дерева могут быть связаны некоторые данные.

Основное свойство компонента Items – элементы дерева. Каждый из них является объектом типа TTreeNodes и обладает своими свойствами и методами.

Ряд свойств компонентаTreeView:

¨ ShowButtons определяет показывать или нет кнопку «+»

¨ ShowLines показывает линии дерева

¨ ShowRoot отвечают за изображение линий связи с корневым элементом.

¨ SortType позволяет автоматически сортировать ветви и узлы дерева.

ú stText - узлы автоматически сортируются по алфавиту

ú stData - сортиров­ка по связанным с узлами объектамData

ú stBoth - сортиров­ка одновременно по тексту и объектам Data

¨ Count — число узлов, управляемых данным, т.е. дочерних уз­лов, их дочерних узлов и т.п. Если значениеCount узла равно нулю, то он является листом дерева.

¨ Indent показывает число раскрываемых потомков.

Создавать узлы дерева можно как программно, так и с помощью редактора узлов дерева. Он вызывается двойным щелчком на компоненте TreeView или на­жатием кнопки с многоточием около свойстваItems в окне Инспектора Объектов. Здесь кнопка New Item позволяет добавить в дерево новый узел, New Subltem позволяет добавить в дерево дочерний узел. Если нажать на Delete, можно удалить выделенный узел дерева. Кнопка Load позволяет загрузить струк­туру дерева из файла — обычный текстовый файл. Уровни узлов обозначаются отступами. Например, файл дерева, представленного на рисунке справа имел бы вид:

Компоненты

Standard

MainMenu

Label

Edit Рис 1. Вид дерева объектов

Additional

BitBtn

SpeedBtn MaskEdit

В панели Item Properties редактора узлов можно задать такие свойства, как Text — надпись, появляющаяся в дереве около данного узла, а так же Image Index и Selected Index определяют индекс пиктограммы, отображаемой для узла, который соответ­ственно не выделен и выделен пользователем в данный момент. Индексы начинаются с 0 и соответствуют списку изображений, хранящихся в отдельном компоненте ImageList. Указание на этот компо­нент можно задать в свойстве Images компонента TreeView. Значение по умолчанию равно -1 (пиктограммы изображаться не будут).

Доступ к информации об отдельных узлах осуществляется через свойст­во Item [intIndex].Например,чтобы обратитьсяк узлу дерева с индексом 0 и определить число дочерних узлов (на рис.1 это узел «Компоненты», число управляемых им узлов – 4), необходимо написать

TreeViewl.Items.Item[0].Count

Свойство Selected указывает узел, который выделен пользователем и доступно только во время выполнения программы. Если ни один узел не выбран, значение Selected равно NULL. При выделении пользователем нового узла происходит событие OnChange, в обработчик которого передает­ся параметр Node: TTreeNode — выделенный узел. В этом обработчике можно предусмотреть действия, которые должны производится при выделении узла. Например:

procedure TForm1.TreeView1Change (Sender: TObject, Node: TTreeNode)

begin

Edit1.Text:= Node.Tеxt; //Выводим в Edit1 надпись выделенного узла

end;

С каждым узлом может быть связан некоторый объект и данные о нем. Ссылка на этот объект содержится в свойствеузла Data.

Основные методы:

¨ AddChild – добавление дочернего узла

¨ Add – добавление узла

¨ Insert – вставка узла

¨ Clear – очищение дерева

¨ SaveToFile – сохранение структуры дерева в файл

Например, чтобы добавить узел «Компоненты», необходимо написать

TreeView1.Items.Add (NULL," Компоненты ");

v Пример 2. Пусть требуется создать дерево, узлами которого является номера групп, а при выборе соответствующего узла отображать сведения о студентах группы. Пусть пиктограммы, для отображения узла хранятся в компонентах ImageList1 и ImageList2 из примера 1. В основном модуле перед классом формы объявим класс Student и определим экземпляры этого класса:

Type

TStudеnt = Class

public:

Fam: String;

Name: String;

NomZach: integer; // номер зачетной книжки

Chit: integer; //номер читательского билета

construсtor Create (F: String; N: String; NZ: integer; C: integer)

end;

В секции implementation реализуем конструктор:

cоnstructor TStudent.Creаte (F: String; N: String; NZ: integеr; C: integer)

begin

Fam:=F; Name:=N; NomZach:=NZ; Chit:=S;

end;

Опишем переменные класса студент:

Var

Stud1, Stud2, Stud3, Stud4, Stud5: TStudent;

Инициализируем объекты:

stud1:= TStudent.Create('Митрохина','Ольга’,1496,7015);

stud2:= TStudent.Create(‘Федоров','Алексей',1355,7047);

stud3:= TStudent.Create('Суровикова',’Вера’,3792,6034);

stud4:= TStudent.Create(‘Иванова’,’Ольга’,4550,7532);

stud5:= TStudent.Create(‘Пронин’,’Андрей’,4567,7542);

Добавим на форму компонент TreeView. Пусть дерево отображается при нажатии кнопки Button1 с надписью «Загрузить». Тогда в обработчике события Click необходимо программно заполнить узлы дерева значениями (это также можно сделать, внося изменения в свойство Items… компонента TreeView).

procedure TForm1.Button3Click(Sender: TObject)

var

Nd: TTreeNode; //указатель на объект типа TTreeNodes

begin

TreeView1.Items.Clear;

Nd:= TreeView1.Items.Add(NULL,"Группа ПИМ-Д21");

FillViewList (Nd,stud1); //заполнение дочерних узлов

FillViewList (Nd,stud2);

FillViewList (Nd,stud3);

Nd:= TreeView1.Items.Add(NULL," ГруппаПИЮ-Д21");

FillViewList (Nd,stud4); //заполнение дочерних узлов

FillViewList (Nd,stud5);

end;

Здесь для каждого дочернего узла вызывается функция FillViewList (), которую необходимо заранее определить в секции interface модуля как

private: procedure FillViewList(Nd: TTreeNode, stud: TStudent);

и реализовать в секции implementation:

procedure FillViеwList(Nd: TTreeNode, stud: TStudent);

var

NdChild: TTreeNode;

begin

NdChild:=TreеView1.Items.AddChild (Nd, stud.Fam);

NdChild.Data:=stud; //заполнение узла данными

NdChild.ImageIndex:=1;

NdChild.SelectedIndex:=1;

end;

Теперь прочитать данные, связанные с узлом, например, имя можно так:

Edit1.Text:= TStudent(Nd.Data).Name; //Nd-выделенный узел

3. Компонент ListView (страница Win32)

Компонент ListViewпозволяет представить данные в виде списков, таблиц, крупных и мелких пиктограмм, дает возможность представления иерархических структур. Смысл дочерних узлов другой: это информация, которая появляется только в режиме vsReport - в виде таблицы.

Ряд свойств компонентаListView:

¨ Items – объекты типа TListItem, доступ к которым осуществляется с помощью редактора свойств или программно

¨ ViewStyle - стиль отображения информации. Может принимать следующие значения:

ú vsIcon - крупные значки

ú vsSmallIcon - мелкие значки

ú vsList - список

ú vsReport - таблица

¨ Columns – определяет список заголовков в режимеотображения таблицыvsReport, объекты типа TListColumn. При этом свойство ShowColumnHeadersдолжно быть установлено в true

¨ Largelmages указывает на компонент, хранящий пиктограммы для отображения больших иконок (режимvsIcon)

¨ SmallImages указывает на компонент, хранящий пиктограммы для режимовvsSmallIcon, vsList и vsReport

Свойство Items в свою очередь имеет ряд свойств, относящихся к определенному узлу и доступные только во время выполнения программы:

ú SubItems – определяет дочерний узел, т.е. колонки табличного списка

ú Caption - надпись, появляющаяся около пиктограммы Для дочерних узлов это свойство соответствует надписи, появляющейся в ячейках таблицы в режимеvsReport.

ú ImageIndex - определяет пиктограммы, индексы которых соответствует спискам изображений в компонентахImageList. Указания на эти компоненты можно задать в свойствахLargelmages и SmallImages

Эти свойства можно задать в редакторе Items кнопками NewItem - новые узлы и NewSubltem - дочерние узлы. Здесь также задаются свойства Caption и ImageIndex. СвойствоColumns также можно задать в специальном редакторе заголовков, вызываемым двойным щелчком на компоненте ListView или через Инспектор Объек­тов. При этом следует задавать значение свойства Caption

Основные методы компонента ListView:

¨ Clear - очистка списка

¨ Add - добавление элемента

¨ Delete – удаление элемента

v Пример 3. Продолжим рассмотренный выше пример. Добавим на форму компонент ListView и з ададим начальный режим отображения списка, т.е. в виде списка

procedure TForm1.FormCreate(Sender: TObject)

begin

ListView1.ViewStyle: = vsList;

end;

Заполним свойство Columns, добавив в него 4 элемента с надписями (свойство Caption) «Фамилия», «Имя», «Номер зачетной книжки», «Номер читательского билета». Это будут заголовки столбцов в табличном режиме отображения списка. Теперь сделаем так, чтобы при выборе пользователем конкретного узла дерева (группы или студента) информация о нем отображалась бы в окне списка ListView. Необходимо обрабатывать событие OnChange дерева:

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode)

var

i: integer;

begin

ListView1.Items.Clear; //очистка списка

if (Node.Level > 0) //если выбран дочерний узел

then SetViewList (Node); //выводим сведения об отдельном студенте

else //если выбран корневой каталог с номером группы

for i:=0; to Node.Count do

SetViewList (Node.Item[i]); //выводим сведения о всей группе

end;

Здесь для каждого узла вызывается функция SetlViewList, которую необходимо заранее определить в классе формы как

private: procedure SetViewList(Nd: TTreeNode);

и реализовать:

procedure TForm1,SetViewList(Nd: TTreeNode)

var

Item1: TListItem; //новый элемент списка

begin

Item1:=ListView1.Items.Add; //добавляем элемент

Item1.Caption:=TStudent(Nd.Data).Fam; //надпись для пиктограммы

//заполняем колонки табличного списка, т.е. добавляем дочерние элементы

Item1.SubItems.Add(TStudent(Nd.Data).Name);

Item1.SubItems.Add(IntToStr(TStudent(Nd.Data).NomZach));

Item1.SubItems.Add(IntToStr(TStudent(Nd.Data).Chit));

Item1.ImageIndex:=2; //значок элемента

end;

4. Компонент OpenDialog (страница Dialogs)

Это компонент, вызывающий стандартную диалоговую панель открытия файла.

Отметим, что все компоненты со страницы Dialogs обладают методом Execute (), осуществляющим вывод соответствующей диалоговой панели на экран. Основные свойства компонента:

¨ FileName – имя открываемого файла

¨ DefaultExt - расширение имени файла по умолчанию

¨ Title - заголовок окна

¨ Filter - набор шаблонов имен файлов. Заполняется с помощью редактора

¨ FilterIndex определяет, какая из масок используется по умолчанию

¨ Options имеет набор подсвойств, описывающих настройки диалогового окна

Важно помнить, что данный компонент отвечает только за вывод диалоговой панели. Для реального открытия файла следует написать код, использующий свойство FileName компонента.

На этой же странице имеется похожий компонент SaveDialog, вызывающий стандартную диалоговую панель сохранения файла. Основные свойства те же, что и у OpenDialog.

v Пример 4. Дополним наш пример: сохраним созданное дерево в текстовый файл

procedure TForm1.Button1Click(Sender: TObject)

begin

SaveDialog1.Title: = ‘Save File’; // заголовок окна

SaveDialog1.Filter = ‘Text files (*.txt)|*.TXT’; //шаблон имени файла

if (SaveDialog1.Execute)

then if (FileExists (SaveDialog1.FileName))

then TreeView1.SaveToFile(SaveDialog1.FileName);

end;

5. Компонент FontDialog (страница Dialogs)

Компонент, вызывающий стандартную диалоговую панель выбора шрифта.

Основные свойства компонента:

¨ Font - шрифт, появляющийся в диалоговой панели (или выбранный пользователем)

¨ Options - набор подсвойств, описывающих настройки диалогового окна (например, определить, какие типы шрифтов предлагать пользователю)

6. Компонент ColorDialog (страница Dialogs)

Компонент, вызывающий стандартную диалоговую панель выбора цвета.

Основные свойства компонента:

¨ Color – выбранный цвет

¨ Options - набор подсвойств, описывающих настройки диалогового окна (например, отображение окна вместе с панелью выбора дополнительных цветов и др.)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: