Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикл_программир_ч1.doc
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
11.05 Mб
Скачать
  1. Компоненты vcl

Под компонентами в C++Builder понимаются объекты или классы объектов, являющиеся, в некотором смысле, объектами “реального мира”. Их можно увидеть на экране, передвигать мышью. Они могут реагировать на нажатие кнопки, щелчок мыши и другие события. Компоненты разделяются на видимые (визуальные) и невидимые (не визуальные). Визуальные компоненты во время выполнения программы выглядят точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Не визуальные компоненты появляются на форме во время проектирования как пиктограммы ,которые используются только для изменения свойств компонента на этапе разработки и не выводятся на экран при выполнении программы. Примеры таких компонентов : системные таймеры, стандартные диалоговые окна, компоненты для работы с базами данных и т.д.

Рис.4.1. Пример использования видимых и невидимых компонентов

Для добавления компонента на форму нужно выбрать его в палитре компонентов и щелкнуть левой клавишей мыши в нужном месте проектируемой формы. Компонент появится на форме, и далее его можно перемещать, менять размеры и другие характеристики. Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы. Если выбрать компонент из палитры и добавить его к форме, инспектор объектов автоматически покажет свойства и события, которые могут быть использованы с этим компонентом. В верхней части инспектора объектов имеется выпадающий список, позволяющий выбирать нужный объект из имеющихся на форме.

5.Практическое использование ряда компонентов библиотеки C++Builder(VCL)

5.1. Кнопки управления

Большинство приложений C++Builder имеют кнопки управления, простым нажатием которых пользователь может выполнять разнообразные действия. Простейшей и наиболее часто используемой кнопкой является компонент Button, который представляет собой стандартную кнопку Windows. Для отображения на кнопке текста, поясняющего ее назначение, используется свойство Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи путем установки перед ним символа амперсанта "&". Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа. При нажатии на кнопку инициируется событие кнопки – OnClick, которое отображается в редакторе кода, а в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке.

Свойство Cancel определяет порядок использования клавиши Esc.Если его установить в true, то нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку.

Свойство Default определяет порядок использования клавиши Enter, если его установить в true,то нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе.

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

  • В Инспекторе Объектов нажать кнопку с многоточием на строке свойств Glyph, в результате чего будет вызвано окно редактора пиктограммы (Picture Editor).

  • Нажать кнопку редактора Load и перейти в обычное окно открытия файла рисунка.

  • Выбрать желаемое изображение из файла с расширением .bmp.

После выбора изображения при нажатии кнопки OK рисунок появится на кнопке левее надписи.

Расположение изображения и надписи (свойство Caption) на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. Если же Margin > 0, то в зависимости от изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей, заданное значением Margin. При этом положение изображения по отношению к надписи определяется Свойство Layout определяет положение изображения по отношению к надписи, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphTop (вверху), blGlyphBottom (внизу).

Свойство Spacing задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки.

Еще одно свойство BitBtn - свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom - заказная. Но можно установить и множество других типовых кнопок: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих кнопках уже сделаны соответствующие надписи, введены пиктограммы, заданы свойства ModalResult и др.

Еще одной разновидность кнопок является кнопка с фиксацией SpeedButton . Эти кнопки обычно используются в качестве быстрых кнопок , дублирующих различные команды меню. Изображение на кнопке задается свойством Glyph , точно также как и для кнопки BitBtn. У кнопок TSpeedButton, как и у других кнопок, имеется свойство Caption - надпись, но в этих кнопках оно обычно оставляется пустым, так как вместо надписи используется пиктограмма. Особенностью кнопок TSpeedButton являются свойства GroupIndex (индекс группы), AllowAllUp (разрешение отжатого состояния всех кнопок группы) и Down (исходное состояние - нажатое). Если GroupIndex = 0, то кнопка ведет себя так же, как TButton и TBitBtn. При нажатии пользователем кнопки она погружается, а при отпускании возвращается в нормальное состояние. В этом случае свойства AllowAllUp и Down не влияют на поведение кнопки.

Если GroupIndex > 0 и AllowAllUp = true, то кнопка при щелчке пользователя на ней погружается и остается в нажатом состоянии. При повторном щелчке пользователя на кнопке она освобождается и переходит в нормальное состояние (именно для того, чтобы освобождение кнопки состоялось, необходимо задать AllowAllUp = true). Если свойство Down во время проектирования установлено равным true, то исходное состояние кнопки - нажатое.Если есть несколько кнопок, имеющих одинаковое ненулевое значение GroupIndex, то они образуют группу взаимосвязанных кнопок из которых нажатой может быть только одна. Если одна кнопка находится в нажатом состоянии и пользователь щелкает на другой, то первая кнопка освобождается, а вторая фиксируется в нажатом состоянии. Поведение нажатой кнопки при щелчке на ней зависти от значения свойства AllowAllUp. Если оно равно true, то кнопка освободится, поскольку в этом случае возможно состояние, когда все кнопки группы отжаты. Если же AllowAllUp равно false, то щелчок на нажатой кнопке не приведет к изменению вида кнопки. Впрочем, и в этом случае, как и при любом щелчке на кнопке, возникает событие OnClick, которое может быть обработано.

Состояние кнопки во время выполнения можно определить по значению свойства Down: если значение равно true, то кнопка нажата. Внешний вид интерфейса приложения, иллюстрирующего некоторые свойства кнопок, показан на рисунке 5.1, а программный код приведен на рисунке 5.2. Интерфейс приложения содержит форму на которой, кроме исследуемой кнопки типа Button, размещены кнопки других типов. Правую часть формы занимает окно многострочного редактирования Memo1, которое используется для демонстрации операторов кода при выполнении программы . Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.1. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.1) и не требует дополнительных пояснений.

Таблица 5.1

Компонент

Свойство

Значение

Форма

Caption

Основные свойства кнопок

Кнопка

Name

Button1

Caption

Исследуемая кнопка

Графические кнопки

Name

BitBtn1(Close)

Name

BitBtn2(Ignore)

Name

BitBtn3(Abort)

Name

BitBtn4(Help)

Name

BitBtn5(No)

Кнопки с фиксацией

Name

SpeedButton1

Name

SpeedButton2

Радио кнопки

Caption

Изменение названия (RadioButton1)

Caption

Изменение шрифта (RadioButton2)

Caption

Кнопка невидима (RadioButton3)

Caption

Другие виды кнопок(RadioButton4)

Многостроч.окно редактирования

Name

Memo1

Другие свойства компонентов принимаются по умолчанию.

Рис.5.1.Интерфейс приложения

//Программный код, иллюстрирующий некоторые свойства кнопок

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)//Изменение названия кнопки

{

Button1->Caption="Другое название ";

//Занесение операторов программного кода в поле Memo1

Memo1->Lines->Add( " Button1->Caption= Другое название ;");

}

//---------------------------------------------------------------------------

void__fastcall TForm1::RadioButton2Click(TObject*Sender)//Изменение парам. шрифта

{

Button1->Font->Name="Times New Roman ";

Button1->Font->Size=18;

//Занесение операторов программного кода в поле Memo1

Memo1->Lines->Add("Button1->Font->Name=Times New Roman ; ");

Memo1->Lines->Add( "Button1->Font->Size=18;");

}

//---------------------------------------------------------------------------

void_fastcall TForm1::RadioButton3Click(TObject *Sender)//Кнопка становится невидимой

{

Button1->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton4Click(TObject *Sender)//Вывод на форму других видов // кнопок

{

BitBtn1->Visible= true ; //Графические кнопки с различными рисунками

BitBtn2->Visible= true ;

BitBtn3->Visible= true ;

BitBtn4->Visible= true ;

BitBtn5->Visible= true ;

SpeedButton1->Visible=true;//Кнопки с фиксацией

SpeedButton2->Visible=true;

}

//---------------------------------------------------------------------------

Рис.5.2 Программный код, иллюстрирующий некоторые свойства кнопок

Программный код( Рис.5.2) позволяет демонстрировать основные свойства кнопок. Запускающим ключом для демонстрации каждого свойства является событие OnClick (включение радио кнопок ), а операторы программного кода ,реализующие то или иное свойство отображаются в окне редактирования Memo1. Листинг программного кода снабжен подробными комментариями и не требует дополнительных пояснений.