Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_Additional.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.61 Mб
Скачать

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

Работа с компонентами вкладки «Additional» панели компонентов Delphi 7

Цели:

  • Приобрести практические навыки использования компонентов вкладки «Additional»;

  • Получить практический опыт использования арифметических и тригонометрических функций;

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ

Вкладка «Additional» представлена на рисунке 1, а сами компоненты перечислены в таблице 1.

Рисунок 1 – Вкладка «Additional» панели компонентов

Таблица 1 – Основные компоненты вкладки «Additional»

Изображение компонента

Наименование компонента

Описание

BitBtn

Кнопка, представляющая собой один из вариантов стандартной кнопки Button. В отличие от последней кнопка Delphi BitBtn умеет отображать на своей поверхности не только надпись, но и изображение, которое задаётся свойством Glyph

SpeedButton

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

MaskEdit

Данный компонент также, как и компонент Edit, является однострочным редактором. Но вдобавок к свойствам и функциям компонента Edit, MaskEdit дает дополнительную возможность ввода текста по заданному шаблону

StringGrid

Компонент для отображения различных данных в табличной форме. Ячейки компонента StringGrid могут содержать данные, имеющие тип String, а также отображать графику

DrawGrid

Этот компонент используется для представления изображений в табличном виде.

Image

Компонент для отображения изображений, в том числе пиктограмм и метафайлов.

Shape

С помощью этого компонента можно вставить на Форму правильную фигуру - прямоугольник, эллипс, окружность.

Bevel

Служит для выделения отдельных частей формы трёхмерными рамками и полосами.

ScrollBox

Панель с полосами прокрутки. В отличие от компонента Panel автоматически вставляет полосы прокрутки, если размещённые на нём компоненты отсекаются его границами.

CheckListBox

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

Splitter

Граница. Этот компонент создаёт границу между двумя видимыми компонентами и даёт возможность пользователю перемещать её.

StaticText

Статический текст. Отличается от стандартного компонента Label наличием собственного Windows-окна, что позволяет обводить текст рамкой или выделять его в виде "вдавленной" части Формы.

ControlBar

Панель управления. часто используют вместе с компонентом ToolBar. Он по своим свойствам и предназначению также как и компонент CoolBar относится к перестраиваемым панелям и его помощью можно реализовать создание сложных инструментальных панелей.

ApplicationEvents

Компонент событий приложения. Только во время выполнения программы доступен объект Application и для облегчения кодирования используется ApplicationEvents. Разместив компонент на форме мы можем на этапе проектирования через Инспектор объектов использовать события приложения. С его помощью возможно принимать и обрабатывать все сообщения, направляемые приложению, в одном месте. Данный компонент хорошо подходит, когда в приложении требуется обрабатывать сообщения Windows.

ValueListEditor

Компонент, представляющий список строк, которые содержат имя и значение

LabeledEdit

Данный компонент похож на компонент Edit, но основное отличие в том, что имеет собственную подпись, которая привязана к компоненту

ColorBox

Выпадающий список, в котором мы можно задать необходимый цвет

Chart

Диаграмма. Этот компонент облегчает создание специальных панелей для графического представления данных.

Компонент «BitBtn»

Компонент BitBtn - это пиктографическая кнопка, представляющая собой один из вариантов стандартной кнопки Button. В отличие от последней кнопка BitBtn умеет отображать на своей поверхности не только надпись, но и изображение, которое задаётся свойством Glyph. В состав Delphi входит большое количество готовых изображений, которые можно размещать на кнопках Delphi BitBtn. В стандартном случае они располагаются по адресу C:\Program Files\Common Files\Borland Shared\Images\Buttons.

Свойство Kind компонента BitBtn определяет один из стандартных вариантов кнопки BitBtn:

Рисунок 2 – Примеры стандартных вариантов кнопки «BitBtn»

Нажатие на любую из них (кроме кнопок со свойством BitBtn.Kind, равным bkCustom или bkHelp) приводит к закрытию модального окна, в котором она установлена, а результат, возвращаемый в программу равен mrName (Name - Yes, Abort, Cancel и т.д. - название кнопки). Отличие есть у кнопки Close, её нажатие (после закрытия модального окна) приводит к возвращению не mrClose а mrCancel, а для главное окно программы просто закрывается, поэтому работа программы сразу завершается.

В случае если пиктограмма Glyph у кнопки Delphi BitBtn была изменена, система Delphi автоматически изменит и её значение BitBtn.Kind, которое станет равным bkCustom.

Специфические свойства компонента - пиктографической кнопки «BitBtn» перечислены в таблице:

Таблица 2 – Специфические свойства компонента «BitBtn»

Glyph: TBitmap

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

Kind

Определяет одну из разновидностей кнопки BitBtn (см. рисунок вверху).

Layout

Определяет к какому краю кнопки будет прижиматься пиктограмма:

  • blGlyphLeft - к левому;

  • blGlyphRight - к правому;

  • blGlyphBottom - к нижнему;

  • blGlyphTop - к верхнему.

Margin

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

NumGlyph

Определяет сколько растровых изображений размещается в файле, содержащем пиктограмму (*см. ниже).

Spacing

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

Style

Определяет как выглядит кнопка в зависимости от стиля предпочтительной операционной системы. Значение bsNew соответствует современным вариантам Windows. Стиль bsAutoDetect приводит оформление кнопки к стилю операционной системы, управляющей работой программы в настоящий момент.

Рисунок с изображениями для кнопки может состоять из нескольких (до 4-х) частей. Стандартная пиктограмма имеет размер 16х16 пикселов. Соответственно, если рисунок состоит из 2-х частей (для активного или неактивного состояния кнопки - именно такие изображения содержатся в стандартной поставке Delphi), то рисунок будет иметь размер 32х16. Количество пиктограмм задаётся свойством Glyph. Однако, если изображение состоит из нескольких квадратных пиктограмм одного размера, система Delphi сама распознает их количество.    Если в растре задана только одна пиктограмма, то Delphi сама может менять её изображение: в состоянии "нажата" изображение на кнопке смещается на 1 пиксель вниз-вправо, а в состоянии "недоступная" (Enabled=False) все цвета, кроме чёрного, меняются на светло-серый, а чёрный - на белый, что создаёт эффект вдавленности.

Компонент «SpeedButton»

Компонент Delphi SpeedButton (быстрая кнопка) расположен на странице Additional Палитры компонентов. Он по функционалу и виду похож на кнопку с рисунком BitBtn. Но является не оконным элементом, в следствии чего не может получить фокус ввода. Используется для создание панелей с "быстрыми" командными кнопками.

На данной кнопке может располагаться рисунок (значок). Для его установки нужно двойным щелчком напротив свойства Glyph  в инспекторе объектов зайти в редактор рисунков и загрузить картинку в формате bmp. Большой набор рисунков для кнопок поставляется вместе с Delphi, они сохраняются при установке в каталоге  \Program Files\Common Files\Borland Shared\Images\Buttons.

По сравнению с кнопкой BitBtn имеется еще одно состояние, когда кнопка нажата, соответственно рисунок  на поверхности кнопки SpeedButton может иметь четыре, а не три картинки. Четвертая картинка будет видна, когда кнопка находиться в выбранном (утопленном) состоянии (свойство Down равно TRUE).

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

Все кнопки в группе работают согласованно - при нажатии на любую кнопку в группе  выбор других кнопок будет отменен. Группирование кнопок позволяет обойтись без программной организации взаимодействия кнопок между собой.

Чтобы кнопку вернуть в обратное состояние повторным щелчком, свойство AllowAllUp необходимо установить в TRUE. Если мы хотим перевести кнопку в нажатое состояние при проектировании нужно с свойству Down присвоить значение TRUE.

Свойство Flat со значением TRUE формирует плоский вид кнопки, границы которой видны при наведении на нее мыши.

Кнопка SpeedButton, в отличии от других кнопок может выполнять функции переключателя. Используя четвертое состояние выбора кнопки, когда кнопка утоплена. Для примера посмотрите на панель форматирования хорошо нам известного редактора Word (Рисунок 3).

Рисунок 3 – Панель форматирования редактора Word

Компонент «MaskEdit»

Компонент Delphi MaskEdit (Шаблон ввода) расположен на странице Additional Палитры компонентов. Он также, как и компонент Edit, является однострочным редактором. Но вдобавок к свойствам и функциям компонента Edit, MaskEdit дает дополнительную возможность ввода текста по заданному шаблону.

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

Шаблон (маска) задается с помощью свойства EditMask и состоит из трех полей разделенных между собой символами точка с запятой. В первом поле находиться сам шаблон (маска). Второе поле определяет, войдут ли вспомогательные символы в итоговый текст (по умолчанию 1). Если стоит 0, то они не будут в итоговом результате, а видны на дисплее при редактировании.  Любой иной символ разрешает такое включение. Третье поле отвечает за вывод незаполненных (пустых) символов в поле ввода (по умолчанию это символ подчеркивания). При не заданных значениях второго и третьего полей, действуют значения по умолчанию.

В шаблоне (маске)  используются  следующие специальные символы:

!   — Наличие этого символа в маске означает, что необязательные символы вставляются перед шаблоном, если отсутствует то после шаблона;

> —  символы, следующие за этим символом переводятся в верхний регистр;

< — символы, следующие за этим символом, переводятся в нижний регистр;

<> — прекращение преобразования символов;

\ — символ следующий далее вставляется в шаблон (маску). Это необходимо для того чтоб произвольные символы могли быть частью шаблона;

L — в данной позиции должна стоять буква;

I — в данной позиции разрешен ввод буквы, но возможно ничего не вводить;

A —  в данной позиции возможен ввод цифры или буквы;

a — возможно в данной позиции вставить цифру, букву или оставить пустой;

C — в данной позиции возможен ввод любого символа;

0 — в данную позицию необходимо ввести цифру;

9 — в данной позиции может находиться цифра или она будет пустой;

# —  в данной позиции может быть цифра, +, -. Позиция может быть оставлена пустой;

: — используется для разделения часов, минут и секунд в  показаниях времени;

_ — в данном месте автоматически будет вставлен пробел.

Символы не описанные выше вставляются в результирующий текст без изменений.

Для вызова редактора маски компонента MaskEdit делаем двойной щелчок в области многоточия (Рисунок 4).

Рисунок 4 – Свойство, задающее маску

Вид данного редактора показан на рисунке 5.

Рисунок 5 – Редактор маски компонента «MaskEdit»

Маску можно  выбрать из образцов в поле Sample Masks или ввести вручную в поле Input Mask. Легче выбрать из образцов наиболее близкую маску и отредактировать ее.  Поле Character for Blanks задает вид незаполненной позиции во входной строке. Значок Save Literal Characters отвечает за включение в маску литеральных символов. В поле Test Input проверяется функциональность маски и мы можем увидеть какой будет вид пустого поля в приложении.

Компонент «StringGrid»

StringGrid - компонент для отображения различных данных в табличной форме. Как следует из названия, ячейки компонента StringGrid Delphi могут содержать данные, имеющие тип String, а также отображать графику.

Таблица StringGrid состоит из выделенных серым FixedCols и FixedRows - зафиксированных ячеек-заголовков, и обычных, белых ячеек. Содержимое Fixed ячеек недоступно редактированию, и меняется только программно. За возможность редактирования обычных ячеек отвечает одно из значений свойства Options.

Итак, компонент StringGrid имеет возможность адресации каждой отдельной ячейки по номеру столбца и строки. Содержимое ячейки (i, j), где где i - номер столбца, j - номер строки, имеет вид StringGrid1.Cells[i, j] и доступно как для чтения, так и для записи. Здесь, как и всегда, номера столбцов ( i ) и строк ( j ) отсчитываются от 0.

Выделенная ячейка таблицы имеет:

  • номер столбца StringGrid1.Col;

  • номер строки StringGrid1.Row.

Поэтому содержимое выделенной ячейки будет адресоваться так:     S:=StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];

Для более сокращенной записи можно воспользоваться оператором оператором присоединения with:

with StringGrid1 do     S:=Cells[Col, Row];

За многие свойства компонента Delphi StringGrid отвечает свойство Options. В Инспекторе Объектов Options - это раскрывающийся список, представляющий собой элементы данного множества. Если значение элемента равно True, то он присутствует в множестве, если False - то нет (рисунок 6).

Рисунок 6 – Свойства компонента StringGrid

Описание данных свойств представлено в таблице 2.

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

Свойство

Значение

goFixedVertLine

Наличие вертикальных разделительных линий между "фиксированными" ячейками

goFixedHorzLine

Наличие горизонтальных разделительных линий между "фиксированными" ячейками

goVertLine

Наличие вертикальных разделительных линий между "обычными" ячейками

goHorzLine

Наличие горизонтальных разделительных линий между "обычными" ячейками

goRangeSelect

Возможность выделить диапазон ячеек

goDrawFocusSelected 

Закрашивание ячейки с фокусом ввода

goRowSizing

Возможность менять высоту строк мышкой

goColSizing

Возможность менять ширину столбцов мышкой

goRowMoving

Возможность менять номер строки, то есть перемещать её, мышкой

goColMoving

Возможность менять номер столбца, то есть перемещать его, мышкой

goEditing

Возможность редактировать содержимое ячейки с клавиатуры

goTabs

При значении True фокус смещается на следующую ячейку в таблице, False - на следующий компонент

goRowSelect

Выделяется вся строка с "фокусированной" ячейкой

goAlwaysShowEditor

При значении True содержимое ячейки при получении фокуса сразу доступно редактированию, False - сначала необходимо щёлкнуть по ней мышкой, либо нажать Enter или F2 (прим.: не действует при goRowSelect=True)

goThumbTracking

При значении True перемещение "бегунка" прокрутки мышкой вызывает немедленное перемещение ячеек, False - ячейки перемещаются только при отпускании "бегунка"

Как следует из таблицы, за возможность редактировать содержимое ячеек с клавиатуры отвечает элемент goEditing свойства-множества Options. В Инспекторе Объектов установите его значение в True. Чтобы управлять этой возможностью программно, нужно включить или исключить из множества данный элемент:

StringGrid1.Options:=StringGrid1.Options+[goEditing];  //Включаем редактирование,

//другие элементы не трогаем

StringGrid1.Options:=StringGrid1.Options-[goEditing];  //Выключаем редактирование,

//другие элементы не трогаем

StringGrid1.Options:=[goEditing, goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect];   //Задаём список необходимых элементов

Если элементы заданы списком, это аналогично присвоению в Инспекторе Объектов этим элементам значения True, остальным - False.

Ячеек в таблице, как правило, много, и в рамках компонента видна только часть из них. В программе доступна информация как об общем количестве строк и столбцов, так и номерах и количестве строк и столбцов, видимых в рамках таблицы.     Количество строк в Delphi StringGrid равно StringGrid1.RowCount.     Количество столбцов в Delphi StringGrid равно StringGrid1.ColCount.     Если ячейки не помещаются в таблице, появляются полосы прокрутки. При прокручивании:

  • StringGrid1.LeftCol - Номер столбца, видимого самым левым

  • StringGrid1.TopRow - Номер строки, видимой самой верхней

  • StringGrid1.VisibleColCount - Количество столбцов, видимых в рамках таблицы

  • StringGrid1.VisibleRowCount - Количество строк, видимых в рамках таблицы

У таблицы StringGrid также есть свойство и для управления размером ячеек. Для всех ячеек:

  • DefaultRowHeight - высота строк по умолчанию

  • DefaultColWidth - ширина столбцов по умолчанию

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

  • RowHeights - массив, содержащий высоты строк. То есть, например, RowHeights[5] - высота строки с индексом 5

  • ColWidths - массив, содержащий ширины столбцов. То есть, например, ColWidths[5] - ширина строки с номером 5.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]