Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Столбцы сетки

Else begin

End

Begin

s:=Tablel.FieldByName(Column.FieldName).AsString;

r:=Rect;

if (Column.FieldName='Debt') then begin

DBGridl.Canvas.Brush.Color:=clRed;

DBGridl.Canvas.Font.Color:=clYellow;

DBGridl.Canvas.Font.Style: = [fsltalic];

DBGridl.Canvas.FillRect(Rect);

if Tablel.FieldByName(Column.FieldName).AsCurrency>1000 then begin

ImageListl.Draw(DBGridl.Canvas, Rect.Left+2, Rect.Top+2, 2);

r.Left:=r.Left+ImageListl.Width+4;

end;

DBGridl.Canvas.TextOut(r.Left, r.Top+2, s);

DBGridl.Canvas.Brush.Color:=clWhite;

DBGridl.Canvas.FillRect(Rect);

DBGridl.Canvas.Font.Color:=clBlack;

DBGridl.Canvas.Font.Style:=[];

DBGridl.Canvas.TextOut(r.Left, r.Top+2, s);

end;

end;

Здесь для столбца сетки, который соответствует полю Debt (Задолженность) на­бора данных, устанавливается красный цвет фона, а данные выводятся желтым цветом и курсивом. Кроме того, если задолженность превышает 1000 (рублей или других денежных единиц), то в поле Debt соответствующей записи слева от числа выводится рисунок, находящийся в компоненте ImageListl (третий по счету). Список с рисунками можно подготовить заранее при разработке прило­жения и загрузить динамически в процессе выполнения программы.


При прорисовке ячеек используется свойство canvas элемента DBGridl, а также параметр Rect. Если обработчик события OnDrawColumnCeii является общим для нескольких компонентов DBGrid, то при отображении их ячеек вместо названия конкретного компонента (в примере это DBGridl) необходимо ставить конструк­цию (sender as TDBGrid) или TDBGrid(Sender). Например, оператор

(Sender as TDBGrid).Canvas.Font.Color:=clRed;

устанавливает красный цвет для символов ячеек сетки, указываемой параметром Sender.

 

Отдельный столбец Column сетки представляет собой объект типа TColumn. По умолчанию для каждого поля набора данных, связанного с компонентом DBGrid, автоматически создается отдельный столбец, и все столбцы в сетке доступны. Такие столбцы являются динамическими. Для создания статических столбцов используется специальный Редактор столбцов. Если хотя бы один столбец сетки является статическим, то динамические столбцы уже не создаются ни для од­ного из оставшихся полей набора данных. Причем в наборе данных доступными являются статические столбцы, а остальные столбцы считаются отсутствующи­ми. Изменить состав статических столбцов можно с помощью Редактора столб­цов на этапе разработки приложения.

Взаимодействие между динамическими и статическими столбцами, а также Ре­дактором столбцов аналогично взаимодействию между динамическими и стати­ческими полями набора данных и Редактором полей.

Характеристики и поведение сетки и ее отдельных столбцов во многом опреде­ляется полями набора данных (а также сответствующими объектами типа TField), для которых создаются объекты типа TColumn.

Функционирование динамических столбцов зависит от свойств объекта поля: при изменении свойств объекта типа TField соответственно изменяются свойст­ва объекта типа TColumn. К примеру, динамический столбец получает от поля такие характеристики, как название и ширину.

Достоинством статических столбцов является то, что для их объектов можно установить значения свойств, отличные от свойств соответствующего поля и не зависящие от него. Например, если для некоторого статического столбца уста­новить свое название, то оно не будет меняться даже в случае, если с этим столбцом связывается другое поле набора данных. Кроме того, объекты типа TColumn статических столбцов создаются на этапе разработки приложения, и их свойства доступны через Инспектор объектов.

Для запуска Редактора столбцов (рис. 8.3) можно вызвать контекстное меню компонента DBGrid и выбрать в нем пункт Columns Editor.... Редактор столбцов можно вызвать также щелчком мыши на свойстве Columns в Инспекторе объектов.

В заголовке Редактора столбцов выводится составное имя массива столбцов, например, DBGridl.Columns. Под заголовком находится панель инструментов, видимостью которой можно управлять с помощью пункта Toolbar контекстного меню Редактора. Большую часть Редактора столбцов занимает список статиче­ских столбцов, при этом столбцы перечисляются в порядке их создания (этот порядок может отличаться от исходного порядка полей в наборе данных).


Замечание

При изменении порядка столбцов сетки автоматически изменяется порядок связанных с ними полей набора данных, что необходимо учитывать при досту­пе к полям по номерам объектов типа TField, а не по именам объектов.

 

Рис. 8.3. Окно Редактора столбцов

 

Первоначально список статических столбцов пуст, показывая тем самым, что все столбцы сетки являются динамическими. Редактор столбцов позволяет:

· создать статический столбец;

· удалить статический столбец;

· изменить порядок следования статических столбцов.

 

Кроме того, для любого выбранного в Редакторе статического столбца (объекта типа TColumn) через Инспектор объектов возможно задание или изменение его свойств и определение обработчиков его событий. Это допустимо потому, что соответствующие статическим столбцам объекты типа TColumn доступны уже на этапе разработки приложения.

Статический столбец можно создать следующими способами:

· нажатием кнопки панели инструментов Редактора столбцов;

· выбором пункта Add контекстного меню Редактора столбцов;

· нажатием клавиши <Insert>.

 

В любом случае к списку добавляется строка, соответствующая новому статиче­скому столбцу. В левой части строки содержится номер этого столбца в массиве столбцов, в правой — имя поля набора данных, с которым связан столбец. Сра­зу после добавления к списку столбец не связан ни с одним полем и вместо имени поля указывается TColumn. При выполнении приложения подобный стол­бец окажется пустым. Чтобы связать столбец с каким-либо полем, необходимо установить значение его свойству FieldName.


Для добавления в список статических столбцов, соответствующих всем полям набора данных, следует нажать кнопку ЦЦ панели инструментов Редактора столбцов или выбрать в его контекстном меню пункт Add All Fields.

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

· нажать кнопку панели инструментов Редактора столбцов;

· выбрать пункт Delete контекстного меню Редактора столбцов;

· нажать клавишу <Delete>.

 

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

Если значения свойств были изменены через Инспектор объектов и необходимо восстановить их первоначальные значения, то это можно выполнить нажатием кнопки 1 или выбором пункта Restore Defaults (Восстановить параметры по умолчанию) контекстного меню Редактора столбцов.

Объект столбца доступен через свойство columns типа TDBGridCoiumns. При про­ектировании приложения свойства этого объекта (т. е. столбца, выбранного в списке Редактора столбцов) доступны через Инспектор объектов.

Перечислим наиболее важные свойства объекта столбца.

· Alignment типа TAlignment — управляет выравниванием значений в ячейках столбца и может принимать следующие значения:

• taLeftJustify — выравнивание по левой границе;

• taCenter — выравнивание по центру;

• taRightJustify — выравнивание по правой границе.

 

· Count типа integer — указывает число столбцов сетки.

· Field типа TField — определяет объект поля набора данных, связанный со столбцом.

· FieidName типа String — указывает имя поля набора данных, с которым свя­зан столбец. При установке этого свойства с помощью Инспектора объектов значение можно выбирать из списка.

· PickList типа TStrings — представляет собой список для выбора заносимых в поле значений. Текущая ячейка совместно со списком PickList образуют своего рода компонент сошЬоВох или DBComboBox. Если для столбца сформи­рован список выбора, то при попытке редактирования ячейки этого столбца справа появляется стрелка, при нажатии на которую список раскрывается и позволяет выбрать одно из значений. При этом можно ввести в ячейку любое допустимое значение.

· Title типа TColumnTitle — представляет собой объект заголовка столбца. В свою очередь этот объект имеет такие свойства, как Caption, Alignment, Color и Font, определяющие название, выравнивание, цвет и шрифт заголов­ка, соответственно.


Свойства столбца, управляющие форматированием, видимостью или возмож­ностью модификации значений, не отличаются от соответствующих свойств поля.

Рассмотрим пример по установке свойств для столбцов сетки.

В наборе данных определено пять полей, для каждого из которых с помощью Редактора столбцов создан статический столбец. Текст процедуры, выполняемой при создании формы приложения, имеет следующий вид:

 

// Значения этих свойств можно установить также через Инспектор объектов

procedure TForml.FormCreate(Sender: TObject);

<== предыдущая лекция | следующая лекция ==>
Характеристики сетки | Использование модифицированной сетки
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 422; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.