Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
17
Добавлен:
14.02.2015
Размер:
641.54 Кб
Скачать

Урок 10. Работаем с двумя формами

Приложение редко состоит только из одной формы. Почти в любой программе есть дополнительные формы с разными настройками и параметрами. Для добаления в программу еще одной формы нажмите на кнопочку New Form:

Появится еще одна форма. Разместите на ней Edit и две обычные кнопки. Для первой кнопки задайте свойство Caption как "OK", для второй - "Cancel". Пользователь будет задавать в edit'е некоторый параметр, который мы будем передавать в главное окно нашего приложения. Появляться же наша вторая форма будет по некоторому действию пользователя (выбору пункта меню, щелчку мыши и т. п.). Напишем теперь код, по которому наше второе окно будет появляться. Для этого, во-первых, добавьте строку

...

#include "Unit1.h"

#include "Unit2.h"

...

в файл Unit1.cpp реализации первой формы.

И, во-вторых, добавьте код для показа второй формы в модальном виде:

...

Form2->ShowModal();

...

Добавить его можно, например, в обработчике меню (или там, где вы хотите, чтобы ваше второе окно появилось).

Запускаем программу и проверяем. Второе окно появляется при выборе пункта меню. Правда, кнопки OK и Cancel не работают. Напишем для них соответствующий код. Добавьте для обработчиков нажатия на кнопки OK и Cancel такой код:

void __fastcall TForm2::Button1Click(TObject *Sender)

{

Close(); //Закрываем форму

ModalResult=mrOk; //Результат закрытия - mrOk

}

...

void __fastcall TForm2::Button2Click(TObject *Sender)

{

Close(); //Закрываем форму

ModalResult=mrCancel; //Результат закрытия - mrCancel

}

Код достаточно понятен - метод Close() закрывает окно, и в свойство ModalResult второй формы мы раписываем значение, соответствующее нажатой пользователем кнопки. Осталось переделать код для показа второй формы. Измените его следующим образом:

...

if (Form2->ShowModal()==mrOk) //Если нажата кнопка OK

Form1->Caption=Form2->Edit1->Text; //то меняем заголовок у формы

...

Как вы видите, мы тут анализируем, что за кнопку пользователь нажал. Если эта была OK, то меняем заголовок у формы на заданное пользователем значение, если Cancel, то ничего не делаем.

Урок 11. Текст (компоненты tLabel и tStaticText)

Компонент Label (метка) расположен на вкладке Standard Палитры Компонентов:

Перечислем его основные свойства. Самое важное из них - это, несомненно, свойство Caption. Именно оно определяет, что за надпись будет иметь наша метка.

Следующее свойство - это AutoSize логического типа. По умолчанию оно равно true, и наша метка будет автоматически увеличивать свои размеры, если текст, задаваемый свойством Caption, будет достаточно длинным.

Свойство WordWrap определяет, происходит ли перенос длинных строк. Если это свойство установить в true, то длинная строка разобьется на несколько. При этом свойство AutoSize должно быть установлено в false.

Для цветов служат свойства color (цвет фона) и подсвойство color свойства font (задает цвет шрифта). Первому из них (для цвета фона) рекомендуется задавать значение clBtnFace. В этом случае цвет фона для надписи будет сливаться с цветом формы.

Для задания шрифта используется составное свойство Font. У него есть ряд подсвойств (Size (задет размер), Style (задает такие характеристики как курсивность или подчеркнутость шрифта)). Подсвойства свойства Font можно задавать как на этапе разработки программы в Инспекторе свойств, так и на этапе работы программы. Например, вот так:

//Задаем новый размер

Label1->Font->Size=16;

//Задаем полужирность и подчекнутость шрифта

Label1->Font->Style=TFontStyles()<< fsBold << fsUnderline;

Компонент StaticText расположен на вкладке Additional Палитры Компонентов:

Его свойства совпадают в основном со свойствами label'а. Самое существенное различие между этими двумя компонентами в том, что label - это безоконный элемент, а StaticText - оконный (т. е. имеет свой hwnd).

Если компоненты Label или StaticText должны отображать значения числовых переменных, то следует воспользоваться функциями IntToStr и FloatToStr, которые переводят соответственно целые и вещественные числа в строки.

Оба компонента - и Label, и StaticText - могут использоваться для доступа с помощью комбинации клавиш Alt+что-то к элементам, не имеющим такой самостоятельной возможности. Например, если вам надо получить доступ по комбинации клавиш Alt+D к edit'у, то действовать надо следующим образом: размешаем на форме edit и label (или вместо label можно StaticText, для него действия будут те же самые). Label'у у свойства Caption перед буквой D пишем знак амперсанда (&). Например, свойство Caption может быть таким - &Date. Далее нам надо привязать label к edit'у. Для этого мы устанавливаем у label'а свойство FocusControl в edit1 (если мы оставили свойство name для edit'а по умолчанию). Это значение мы просто выбираем из списка:

И, наконец, свойство ShowAccelChar для метки должно быть установлено в true (если его установить в false, то ничего работать не будет). Запускайте программу. Если нажать Alt+D, то edit получит фокус.