Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

OnColumnClick;

GridLines: boolean – разрешает или запрещает показ линий в режиме

ViewStyle = vsReport;

HideSelection: boolean – запрещает или разрешает сохранять выбор элементов при потере компонентом фокуса;

Items: TListItems – содержит список всех элементов;

LargeImages: TImageList – указывает источник крупных пиктограмм;

MultiSelect: boolean – разрешает/запрещает множественный выбор;

ReadOnly: boolean - запрещает/разрешает редактирование надписей;

ShowColumnHeaders: boolean - разрешает/запрещает показ заголовков колонок в режиме ViewStyle = vsReport;

SmallImages – указывает источник мелких пиктограмм;

SortType – указывает способ сортировки элементов, возможные значения stNone, stData, stText, stBoth;

StateImages – указывает источник пиктограмм для выбранных элемен-

тов;

Свойства и методы класса TListItems:

Item[Index: integer]: TListItem – открывает индексный доступ к элементам списка;

Count – содержит количество элементов в Item;

function Add: TListItem – добавляет очередной элемент к списку;

procedure Clear – очищает список;

procedure BeginUpdate – блокирует обновление экрана до тех пор,

пока не будет выполнен метод EndUpdate. Используется при одновременной вставке нескольких элементов списка для предотвращения мерцания экрана;

procedure Delete(Index: Integers) – удаляет элемент списка с

681

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

индексом Index;

procedure EndUpdate - отменяет блокировку обновления экрана мето-

дом BeginUpdate;

function IndexOf(Value: TListItem) – возвращает индекс эле-

мента Value;

function Insert(Index: integer): TListItem – вставляет но-

вый элемент после элемента, заданного Index;

Очень важное свойство SubItems: TStrings.

При помощи этого свойства с каждым элементом списка может быть свя-

зан целый набор строк и объектов. Сначала следует создать необходимое коли-

чество колонок. При этом следует учесть, что первая из них будет отведена под сам элемент списка. Последующие же колонки будут отображать тексты строк из свойства Items.SubItems.

Заполним программно TListView данными из рис. 6.78. В новом проекте поместите компонент TListView и в обработчике OnShow формы введите следующий код:

procedure TForm1.FormShow(Sender: TObject);

var

ListItem: TListItem;

begin

with ListView1 do

begin

ViewStyle:= vsReport;

// создаем колонку

Columns.Add;

// заголовок колонки

Columns.Items[0].Caption:='Должность';

682

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

// ширина колонки

Columns.Items[0].Width:= 100;

// создаем колонку

Columns.Add;

// заголовок колонки

Columns.Items[1].Caption:='Ф.И.О.';

// ширина колонки

Columns.Items[1].Width:= 100;

// создаем колонку

Columns.Add;

// заголовок колонки

Columns.Items[2].Caption:='Уч. степень';

// ширина колонки

Columns.Items[2].Width:= 100;

// создаем колонку

Columns.Add;

// заголовок колонки

Columns.Items[3].Caption:='Телефон';

// ширина колонки

Columns.Items[3].Width:= 100;

// добавляем первый элемент

ListItem:= Items.Add;

ListItem.Caption:= 'Ректор';

// добавляем подэлементы первого элемента

ListItem.SubItems.Add('Иванов И.И.');

ListItem.SubItems.Add('д.ф.-м.н., проф.');

ListItem.SubItems.Add('234-45-45');

// добавляем второй элемент

683

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

ListItem:= Items.Add; ListItem.Caption:= 'Проректор 1'; // добавляем подэлементы второго элемента

ListItem.SubItems.Add('Петров П.П.');

ListItem.SubItems.Add('д.т.н., проф.');

ListItem.SubItems.Add('122-12-12');

// добавляем третий элемент

ListItem:= Items.Add;

ListItem.Caption:= 'Проректор 2'; // добавляем подэлементы третьего элемента

ListItem.SubItems.Add('Сидоров С.С.');

ListItem.SubItems.Add('к.т.н., доц.');

ListItem.SubItems.Add('111-11-11');

end;

end;

Продолжим наши опыты с Проводником. Давайте, теперь реализуем пра-

вое окно Проводника. Для этой цели компонент TListView подходит как нельзя лучше. Создайте новый проект. Поместите на форму TTreeView, затем компонент TListView. Не забудьте поместить на форму также TMemo и TImageList.

Если мы посмотрим, как работает Проводник, то мы увидим, что при нажа-

тии кнопки раскрытия узла-каталога в левом окне, узел просто раскрывается, а

в правом окне ничего не появляется. Если же мы нажмем на сам узел-каталог,

то он также раскрывается и, в то же время, содержимое этого каталога (подка-

талоги и файлы) появляются в ListView1.

Для отображения содержимого узла-каталога можно использовать ту же самую процедуру Show_Only_Dir(), только найденные подкаталоги теперь

684

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

будут добавляться не только TTreeView, но и в TListView. Но эта процеду-

ра используется для вывода каталогов в левом окне, поэтому создадим проце-

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

FindFirst-FindNext будут искать уже не каталоги, а файлы. Причем скрытые файлы мы показывать не будем. Код программы:

unit Unit1;

{$mode objfpc}{$H+} interface

uses

Classes, SysUtils, FileUtil, LResources, Forms,

Controls, Graphics, Dialogs, ComCtrls, StdCtrls,

ExtCtrls, LCLType,

{$IFDEF UNIX}

unix;

{$ELSE}

Windows;

{$ENDIF}

type

{ TForm1 }

TForm1 = class(TForm)

ImageList1: TImageList;

ListView1: TListView;

Memo1: TMemo;

TreeView1: TTreeView;

procedure FormCreate(Sender: TObject);

685

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773