Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №21.pdf
Скачиваний:
17
Добавлен:
16.03.2015
Размер:
1 Mб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Лабораторная работа № 21 Работа с таблицами

Введение

В лабораторной работе рассматривается два компонента работы с таблицами TStringGrid и TDrawGrid. Приведены примеры программ использующих программную прорисовку ячеек таблицы. Также рассмотрены компоненты TBitBtn и TSplitter.

TBitBtn – кнопка с изображением

Графическая кнопка TBitBtn представляет собой популярную разновидность

стандартной кнопки TButton. Ее отличительная особенность – свойство Glyph, с помощью которого определяется растровое изображение на поверхности кнопки. Компонент TBitBtn расположен на вкладке Additional палитры компонентов (рисунок 1).

Рисунок 1 – Компонент TBitBtn в палитре компонентов

В комплект Delphi входит множество рисунков, разработанных специально для размещения на этих кнопках1. Свойство Kind определяет одну из 11 стандартных разновидностей кнопок показанных на рисунке 2.

Рисунок 2 – Вид кнопки в зависимости от значения свойства Kind

Щелчок на любой из показанных на рисунке 1 кнопок, кроме кнопок bkCustom bkHelp, закрывает модальное окно и возвращает в программу результат mrXXX (bkOk – mrOk, bkCancel – mrCancel и т.д.). Кнопка bkClose для модального окна возвращает значение mrCancel, а для главного окна программы закрывает его и завершает работу программы. Кнопка bkHelp автоматически вызывает раздел справочной службы, связанный со свойством HelpContext формы, на которую кнопка помещена. Если у кнопки был изменен рисунок (свойство Glyph), Delphi автоматически присвоит свойству Kind кнопки значение bkCustom. Это произойдет также в случае, когда кнопка указана как кнопка по умолчанию (Default=True), но при этом свойство Kind не содержит значение bkOk или bkYes, и, кроме того, когда ее свойство Cancel содержит значение True, а свойство Kind не содержит значение bkCancel или bkNo.

Свойства Cancel, Default и ModalResult кнопка TBitBtn унаследовала от своего родительского класса TButton, остальные специфические свойства перечислены в таблице

1.

1 Про умолчанию рисунки для кнопок размещаются в папке Program Files\Common Files\Borland Shared\Images\Buttons

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Таблица 1 – Свойства компонента TBitBtn

Свойство

Описание

 

 

property Glyph: TBitmap;

Определяет от 1 до 4 связанных с кнопкой

 

растровых изображений

TBitBtnKind = (bkCustom, bkOk,

Определяет разновидность кнопки

bkCancel, bkHelp, bkYes, bkNo,

 

bkClose, bkAbort, bkRetry, bkIgnore,

 

bkAll);

 

property Kind: TBitBtnKind;

 

TButtonLayout = (blQlyphLeft,

Определяет край кнопки, к которому

blGlyphRight, blGlyphTop,

прижимается рисунок:

blGlyphBottcm);

blGlyphLeft – к левому;

property Layout; TButtonLayout;

blGlyphRight – к правому;

blGlyphTop к верхнему;

 

 

blGlyphBottom – к нижнему.

property Margin: Integer;

Определяет расстояние в пикселах от края кнопки

 

до рисунка. Если значение равно –1 (значение по

 

умолчанию), то изображение и текст

 

центрируются.

TNumGlyphs: 1.. 4;

Определяет количество растровых изображений

property NumGlyphs: TNumGlyphs;

 

property Spacing: Integer;

Определяет расстояние в пикселах от рисунка до

 

надписи на кнопке

TButtonStyle= (bsAutoDetect, bsWin31,

Определяет стиль оформления кнопки, зависящий

bsNew);

от операционной системы.

property Style: TButtonStyle;

Стиль bsNew соответствует 32-разрядным

 

версиям Windows.

 

Стиль bsAutoDetect изменяет оформление кнопки

 

в зависимости от ОС, под управлением которой

 

работает программа в данный момент.

 

 

При разработке собственных растровых изображений для использования на кнопках следует учесть, что изображения должны меняться при изменении состояния кнопки; Таких состояний может быть четыре: нормальное состояние, кнопка недоступна, кнопка нажата и кнопка утоплена (последнее используется только в кнопках TSpeedButton). В соответствии с этим разрабатывается до 4 изображений, расположенных по горизонтали в виде одного длинного растра. Например, стандартный размер изображения для размещения на кнопке равен 16x16 пикселов. Если создаются 3 изображения то размер растра должен составлять 16x48. Количество изображений в растре задается свойством NumGlyphs. Если каждое изображение квадратное, и длина растра делится без остатка на его высоту, Delphi автоматически распознает количество изображений. Если задано только одно изображение, оно меняется автоматически: в состоянии "кнопка нажата" изображение смещается на один пиксел вправо и вниз, а в состоянии "кнопка недоступна" все цвета кроме черного, меняются на светло-серый, а черный – на белый, что

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

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

Как и в кнопках TButton, программист не может управлять цветом поверхности кнопки, но, в отличие от TButton, может менять цвет надписи на ней. С помощью свойства Default кнопку можно сделать кнопкой, выбранной по умолчанию, – в этом случае нажатие клавиши <Enter> автоматически вызывает обработчик ее события OnClick. Однако кнопками, выбранными по умолчанию, можно сделать только кнопки bkYes и bkNo, остальные значения свойства Kind будут заменяться на bkCustom при вводе в

свойстве Default значения True, и наоборот – в свойство Default автоматически помещается значение False при установке в свойстве Kind любого значения, кроме bkYes, bkNo или bkCustom.

В качестве примера использования компонента TBitBtn переделаем программу из лабораторной работы №14, заменив кнопки TButton на TBitBtn. Скопируйте программу набранную в 14 лабораторной работе в новый каталог. Откройте проект. Удалите с формы все компоненты TButton. Поместите на форму два компонента TBitBtn. Установите значения свойств Name этих компонентов Button1 и Button2. Настройте внешний вид кнопок как показано на рисунке 3.

Рисунок 3 – Вид окна программы после замены кнопок

Для того чтобы выровнять значки на кнопках по левому краю, необходимо установить значение свойства Margin равным 3 для обеих кнопок. Установите для кнопок соответствующие обработчики событий. Запустите программу и проверьте ее работоспособность.

TSplitter

Компонент TSplitter предназначен для ручного (с помощью мыши) управления

размерами контейнеров TPanel, TGroupBox и им подобных вовремя прогона программы. Визуально он представляет собой небольшую вертикальную или горизонтальную полосу, располагающуюся между двумя соседними контейнерами или на "свободной" стороне одного их них. Компонент TSplitter расположен на вкладке Additional палитры компонентов (рисунок 4).

Рисунок 4 – Компонент TSplitter в палитре компонентов

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Непременным условием правильной работы компонента является выравнивание контейнера, размерами которого он управляет вдоль одной из сторон окна или охватывающего контейнера. Свойства компонента TSplitter представлены в таблице 2.

Таблица 2 – Свойства компонента TSplitter

Свойство

Описание

 

 

property Beveled: Boolean;

Управляет трехмерным изображением

 

компонента. Если имеет значение False,

 

компонент виден как узкая полоса фона между

 

разделяемыми им компонентами

NaturalNumber = 1 … High(Integer);

Содержит минимальный размер любого из

property MinSize: NaturalNumber;

компонентов, которых разделяет компонент

TSplitter. Если выравнивание имеет значение

 

 

alLeft или alRight – минимальная ширина

 

компонента слева и справа от вешки разбивки,

 

если alTop или alBottom – минимальная высота

 

компонента выше или ниже от нее

TResizeStyle = (rsNone, rsLine,

Определяет вид разделителя при его перемещении

rsUpdate, rsPattern);

мышью.

property ResizeStyle: TResizeStyle;

rsNone – при перемещении мышью разделитель

 

 

не отображается;

 

rsLine – при перемещении мышью разделитель

 

отображается в виде линии.

 

rsUpdate – при перемещении мышью разделитель

 

отображается и автоматически модифицируется

 

содержимое контейнеров.

 

rsPattern – при перемещении мышью разделитель

 

отображается в виде линии.

property AutoSnap:Boolean;

Если равно True, то устанавливает размер

 

выравниваемого объекта равным нулю, если его

 

размер стал меньше чем MinSize.

 

 

Для компонента определено событие OnMoved, которое вызывается при любом перемещении компонента мышью.

Рассмотрим пример на использование компонента TSplitter. Создайте новый проект.

На форму frmSplitterDemo поместите три компонента TPanel (pnTopPan, pnLeftPan, pnRightPan). Установите значение свойства Align компонента pnTopPan равным alTop. Поместите на форму компонент TSplitter (HSplitter). Установите значение свойства Align этого компонента равным alTop. Установите значение свойства Align компонента pnLeftPan равным alLeft. Поместите на форму компонент TSplitter (VSplitter). Установите значение свойства Align этого компонента равным alLeft. Установите значение свойства

Align компонента pnRightPan равным alClient.

Вид окна программы приведен на рисунке 5.