Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika-otvety (2).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
493.88 Кб
Скачать
  1. Многолистовые и инструментальные доски

  2. Инструменты TabControl PageControl ToolBar CoolBar StatusBar

Пейдж контрол

Компонент delphi PageControl позволяет в ходе проектирования объединять на одной форме несколько вкладок, которые содержат разные элементы управления. Доступ к каждой из вкладок осуществляется при помощи корешков с названиями. На сегодняшний день большинство окон для настройки в программах Windows построены именно по такому принципу (Например, «Свойства обозревателя» в Internet Explorer, средства настройки Delphi 7 и т. д.). Данный компонент позволяет компактно расположить все элементы управления.

Изначально PageControl пустой, т. е. не содержит в себе ни одной страницы. При помощи команды New Page из контекстного меню создается новая страница, при этом в Инспекторе объектов создается новый объект TabSheet1. Изменить его название можно в свойстве Caption в Инспектора объектов.

Пример:

Первая страница программы содержит кнопку, а вторая – текстовое поле. При щелчке по кнопке в текстовом поле отображается строка «Hello!».

После того, как на вкладках размещены объекты, необходимо определить обработчик щелчка по кнопке.

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Edit1.Text := 'Hello!';

end;

end.

property RaggedRight: Boolean;

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

property Caption: TCaption;

Применяется для изменения названия, которое указано на корешке объекта TabSheet

property MultiLine: Boolean;

Позволяет разместить корешки в несколько рядов. Если False, корешки будут размещаться в один ряд.

propertyScrollOpposite: Boolean;

Используется для перемещения строк корешков согласно выбранной странице. Если True, выбранная строка корешков переместится в противоположную сторону компонента, зависимо от свойства TabPosition, принимающего значения:- tpLeft (Корешки слева)- tpTop (Сверху),

- tpRight (Справа),

- tpBottom (Снизу)

property HotTrack: Boolean;

Если значение True текст корешка при наведении курсора подсвечивается ярким цветом

property Images: TCustomImageList;

Картинки, отображаемые на корешках вместе с текстом. Номер картинки соответствует номеру страницы

property Style: PageControlStyleType;

Определяет стиль объекта:- tsTabs (Стандартный),- tsButtons (Корешки в виде выпуклых кнопок),

- tsFlatButtons (Корешки в виде плоских кнопок)

property TabWidth: Smallint;

Используется для указания ширины корешка, в пикселях

property TabHeight: Smallint;

Используется для указания высоты корешка, в пикселях

property TabPosition: TTabPosition;

Определяет местоположение ярлычков закладок:- tpTop - вверху компонента,- tpRight – справа,

- tpBottom - внизу,

- tpLeft – слева.

Кул бар

Компонент Delphi CoolBar представляет собой ToolBar. CoolBar это компонент-контейнер управления, как правило, содержащий два или более TCoolBands которые могут быть изменены и переставлены пользователем во время выполнения.

CoolBand это субъект управления, который может содержать другие объекты управления, в основном, панели инструментов, поля ввода, поля со списком и анимация. Пример компонента CoolBar можно наблюдать в Word, где вы можете с легкостью перемешать группированные компоненты.

На этом примере изображен один CoolBar на котором находится 2 CoolBand которые вы можете перемещать и менять их размеры.

Один из способов поместить компонент на CoolBar это перетащить его из палитры компонентов, при этом автоматически будет создан новый CoolBand для хранения этого компонента. Другой способ, когда компонент вставляется в форму, а затем, при помощи свойства Control компонента CoolBar связывается с каким либо CoolBand’ом. Обычно на CoolBar добавляется Toolbar, путём простого перетаскивания из палитры компонентов на Coolbar. Потом на Toolbar, уже добавляются кнопки и прочие элементы

Свойства CoolBar:

AutoSize

Если True, то высота компонента CoolBar будет автоматически согласовываться с высотой полос

BandBorderStyle

наличие рамок:bsNone — нет рамки;bssingle — каждая полоса имеет рамку(толшина которой 1 пиксель)

Bands

Содержит список всех полос.

Bitmap

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

FixedOrder

Запрещает или разрешает перемещение полос

FixedHeight

Запрещает или разрешает изменение размера полос

Images

Указывает на контейнер для изображений

ShowText

Если True, то на полосе показывается связанный с ним текст

Vertical

Если True, то полосы располагаются по вертикали

Свойства CoolBand:

Bitmap

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

BorderStyle

Определяет наличие рамки: bsNone — нет рамки; bssingle — рамка (толщина которой 1 пиксель)

Break

Если True, то полоса располагается в новой строке, иначе в той же строке, что и предыдущая

Control

Указывает элемент, который содержится в полосе

FixedBackground

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

FixedSize:

Запрещает или разрешает изменение размеров полосы

HorizontalOnly

Если True, то показывать полосу только для значения False свойства Vertical компонента CoolBar

magelndex

Содержит индекс изображения

MinHeight

Минимальное значение высоты полос при изменении ее размеров

MinWidth

Минимальное значение ширины полос при изменении ее размеров

Тул бар

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

Если поместить компонент ToolBar на форму, то он расположится вверху, поскольку его свойство Align равно alTop(по умолчанию). Если хотите, чтобы панель располагалась по другому, установите Align равным alNone, после этого можете делать с панелью что хотите.

На этот компонент можно вставить любые дочерние элементы, но все его возможности проявляются только со специальным компонентом ToolButton разработанный специально для ToolBar. ToolButton похож на кнопку SpeedButton, только изображение для кнопки определяется не свойством Glyph, а Imagelndex. Но вы не найдете этот компонент в палитре компонентов. Так как он разработан специально для ToolBar, вставить его можно только щелчка правой кнопкой мыши на компоненте ToolBar и выбрав в его контекстном меню команду New Button(кнопка) или New Separator (разделитель) – который предназначен для функционального выделения на нашей панели инструментов групп.

Свойства класса TToolButton

AllowAllUp

Если значение True, то может быть нажата только одна кнопка данной группы. Игнорируется, если Grouped равно False

Caption

Содержит текст, который будет показан, если ShowCaptions компонента TToolBar будет имееть значение True

Down

Состояние кнопки: если значение True, то кнопка утоплена

DropdownMenu

Связывает с нажатой кнопкой контекстное меню

Grouped

Разрешает или запрещает учитывать свойство AllowAllUp

ImageIndex

Индекс связанного с кнопкой изображения

Indeterminate

Запрещает или разрешает выбор кнопки

Style

Стиль кнопки:

tbsDivider - разделитель (в запушенной программе на этом месте будет вертикальная черта).

tbsButton - обычная кнопка;

tbsDropDown - кнопка с символом типа раскрывающегося списка;

tbsSeparator - разделитель (на этом месте будет пустое место);

tbsCheck - фиксируемая кнопка (если её нажать то она останется в нажатом положении, Что бы её отключить необходимо щелкнуть на неё еще раз);

Wrap

Если True, то кнопка завершает текущий ряд кнопок. Будет игнорированна, если свойство Wrapable  компонента ToolBar имеет значение True

Свойства компонента ToolBar 

 AutoSize

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

ButtonCount

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

ButtonHeight

Определяет высоту кнопок ToolButton

DisabledImages

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

Flat

Если True, то панель и кнопки будут прозрачны для фона но когда на ней располагается указатель мыши вокруг кнопки появляется граница

HotImages

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

Images

Определяет контейнер для изображений

List

Если True, то изображение выравнивается к левой границе кнопки, а текст — к правой, иначе текст выводится под изображением. Будет игнорироваться, если ShowCaptions=False

Indent

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

RowCount

Содержит количество рядов кнопок

ShowCaptions

Разрешает или запрещает показ на кнопках текст

Wrapable

Запрещает или разрешает располагать кнопки в несколько рядов

Процедуры. Формальные и неформальные параметры

Процедуры

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

Заголовок состоит из ключевого слова procedure, за которым следует имя процедуры и, при необходимости, список параметров, заключенных в круглые скобки:

procedure <Имя> [(параметры)];

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

ПРИМЕЧАНИЕ Вопросы локальных и глобальных переменных, и вообще видимости в программах, будет рассмотрен позже в этой главе.

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

procedure TriplePrint(str: string); var i: integer; begin for i := 1 to 3 do begin writeln('"'+str+'"'); end; // конец цикла for end; // конец процедуры TriplePrint

Здесь мы определили процедуру TriplePrint, которая будет трижды выводить переданную ей в качестве аргумента строку, заключенную в двойные кавычки. Как видно, данная процедура имеет все составные части: ключевое слово procedure, имя, список параметров (в данном случае он всего один - строковая переменная str), блок объявления собственных переменных (целочисленная переменная i), и собственное тело, состоящее из оператора цикла for.

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

TriplePrint('Hello!!!');

Отметим так же, что рассмотренная нами процедура сама содержит вызов другой процедуры - writeln. Процедуры могут быть встроенными. Иначе говоря, объявление одной процедуры можно помещать в заголовочную часть другой. Например, наша процедура TriplePrint может иметь вспомогательную процедуру, которая будет "подготавливать" строку к выводу. Для этого перед объявлением переменной i, разместим объявление еще одной процедуры. Назовем ее PrepareStr:

procedure PrepareStr; begin str := '"'+str+'"'; end;

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

Таким образом, мы получаем две процедуры, одна из которых (TriplePrint) может использоваться во всей программе, а другая (PrepareStr) - только внутри процедуры TriplePrint. Чтобы преимущество использования процедур было очевидно, рассмотрим их на примере программы, которая будет использовать ее неоднократно, для чего обратимся к листингу 6.1 (см. так же пример в Demo\Part1\Procs).

Листинг 6.1. Использование процедур

program procs; {$APPTYPE CONSOLE} procedure TriplePrint(str: string); procedure PrepareStr; begin str := '"'+str+'"'; end; var i: integer; begin PrepareStr; for i := 1 to 3 do begin writeln(str); end; end; // конец процедуры TriplePrint begin // начало тела основной программы TriplePrint('Hello!!!'); // первый вызов TriplePrint TriplePrint('How are you???'); // 2-й вызов TriplePrint('Bye...'); // 3-й readln; end.

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

Параметры формальные и неформальные

Формальные и фактические параметры

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

Список фактических параметров подпрограммы должен совпадать по количеству и типам со списком формальных параметров. Список формальных параметров необязателен и может отсутствовать (в этом случае будут отсутствовать и фактические параметры). При описании и вызове подпрограммы без параметров круглые скобки не указываются. Следующие подряд однотипные параметры можно объединять в подчиненные списки. Другими словами, можно указывать их через запятую, а за последним параметром – их тип. Параметры подпрограммы могут быть значениями, переменными, константами.

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

Параметры-переменные указываются в описании подпрограммы после зарезервированного слова var. Действие зарезервированного слова var имеет силу до ближайшей точки с запятой. При вызове подпрограммы на месте параметра-переменной в качестве фактического параметра указывается переменная того же типа. При использовании параметра-переменной в подпрограмму передается сама переменная. Это позволяет вернуть в точку вызова подпрограммы измененные значения внешних переменных, которые были указаны в качестве параметров. Иными словами, изменения значений параметров-переменных в теле подпрограммы приводит также к изменению значений внешних переменных, указанных в качестве параметров при вызове подпрограммы.

Параметры-константы используются в подпрограммах. Если подпрограмма не должна менять передаваемое значение. В этом случае параметр передается в виде адреса той области памяти, в которой располагается константа. При передаче параметра-константы как параметра-значения (что, в принципе, возможно) быстродействие программы уменьшается. Перед именем параметра-константы указывается зарезервированное слово const, действие которого также распространяется до ближайшей точки с запятой.

Функции

Подобно процедурам, описание функции состоит из заголовка и тела. Однако описание заголовка имеет 2 отличия: прежде всего, для функций используется ключевое слово function. Кроме того, поскольку функции всегда возвращают результат, завершается строка заголовка типом возвращаемого значения. Таким образом, для объявления функции мы получаем следующий синтаксис:

function <Имя> [(параметры)] : <тип результата>;

Возвращаемое значение может быть любого типа, кроме файлового. Что касается дальнейшего описания функции, то оно полностью аналогично таковому для процедур. Единственным дополнением является то, что в теле функции обязательно должна присутствовать хотя бы одна операция присваивания, в левой части которой должно быть либо имя функции, либо ключевое слово result. Именно это выражение и определяет возвращаемое функцией значение.

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

function cube(value: integer) : integer; result := value * value * value; }

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

x = cube(3);

В результате выполнения этого выражения переменной x будет присвоено значение 27. Данный пример иллюстрирует использование функций в классическом случае - для явного вычисления значения переменной. Однако функции могут использоваться в выражениях и напрямую. Например, можно поставить вызов функции cube в каком-либо месте арифметического выражения подобно обычной переменной:

x := a + cube(b) / 2;

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

procedure TriplePrint(str: string); function PrepareStr(s: string) : string; begin result := '"'+s+'"'; end; var i: integer; begin for i := 1 to 3 do begin writeln(PrepareStr(str)); // функция использована как переменная end; end;

Как уже отмечалось, помимо специальной переменной result, в функциях можно использовать другую автоматически объявляемую переменную, имя которой соответствует имени функции. Так, для функции cube имя переменной также будет cube:

function cube(value: integer) : integer; cube := value * value * value; }

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

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