среда, 26 февраля 2014 г.

6. Свойства и методы формы. Лабораторные Delphi, C++ (3)


Размеры, положение и прозрачность формы в Delphi и C++Builder



Запустите на выполнение Delphi или C++Builder. Создайте новый проект, выбрав в меню File | New | VCL Forms Application - Delphi (File | New | VCL Forms Application – C++Builder). Появится форма нового проекта.

Завершение работы программы


Оставьте для формы все значения свойств по умолчанию.
Положите на форму кнопку Button. Присвойте кнопке текст Закрыть. Установите имя (свойство Name) BExit. Форма примет следующий вид:








Рис. 1. Начальный вид формы
Дважды щелкните мышью по кнопке Закрыть. Появится заготовка для обработчика события щелчка по кнопке, где нужно написать оператор завершения работы всего приложения (метод Terminate() объекта Application):
Delphi

procedure TForm2.Button1Click(Sender: TObject);
begin
  Application.Terminate();
end;
C++Builder
void __fastcall TForm1.BExitClick(Sender: TObject);
{
    Application->Terminate();
}
Запустите программу на выполнение. Щелкните по кнопке Закрыть. Работа программы будет завершена.

Изменение размера формы


Свойство формы Height задает размер высоты, а свойство Width задает размер ширины формы в пикселах.
Положите на форму из набора инструментов Tool Palette еще три кнопки Button. Одной присвойте текст Высота, другой Ширина, третьей Размер. Задайте имена BHeight, BWidth и BSize, соответственно.
(Как правило, я стараюсь в реальных программах присваивать компонентам осмысленные имена. Имена кнопок начинаю с символа B, элементов меню — с M).










Рис. 2. Форма (изменение размеров)
Для кнопки Высота напишите обработчик события щелчка по кнопке, при котором высота формы увеличивается на 10 пикселов. Для кнопки Ширина напишите обработчик события щелчка по кнопке, при котором ширина формы увеличивается на 10 пикселов.
Delphi
procedure TForm2.BHeightClick(Sender: TObject);
begin
  Height := Height + 10;
end;

procedure TForm2.BWidthClick(Sender: TObject);
begin
  Width := Width + 10;
end;
C++Builder
void __fastcall TForm1::BHeightClick(TObject *Sender)
{
  Height = Height + 10;
}

void __fastcall TForm1::BWidthClick(TObject *Sender)
{
  Width = Width + 10;
}
Выделите мышью кнопку Высота. Установите значение свойства Default в True. Для этой кнопки будет вызываться событие OnClick, когда пользователь нажмет клавишу Enter. Выделите мышью кнопку Ширина. Установите значение свойства Cancel в True. Для этой кнопки будет вызываться событие OnClick, когда пользователь нажмет клавишу Esc.
Напишите следующий обработчик щелчка мышью по кнопке Размер:
Delphi
procedure TForm2.BSizeClick(Sender: TObject);
begin
  Height := 500;
  Width := 700;
end;
C++Builder
void __fastcall TForm1::BSizeClick(TObject *Sender)
{
  Height = 500;
  Width = 700;
}
Это устанавливает для формы конкретные размеры.
Запустите программу на выполнение. Изменяйте размеры формы, щелкая мышью по соответствующим кнопкам.

Изменение положения формы на экране


Свойства формы Left и Top определяют положение левого верхнего края формы на экране, соответственно, по горизонтали и по вертикали. Эти значения можно изменять в программе в процессе ее выполнения.
Положите на форму четыре новые кнопки X+, X-, Y+, Y-, присвоив им осмысленные имена BXPlus, BXMinus, BYPlus, BYMinus. При щелчке пользователя по этим кнопкам форма должна перемещаться в указанных направлениях на 10 пикселов.









Рис. 3. Форма (изменение положения)
Напишите следующие обработчики событий щелчка мышью по этим кнопкам:
Delphi
procedure TForm1.BXMinusClick(Sender: TObject);
begin
  Left := Left - 10;
end;

procedure TForm1.BXPlusClick(Sender: TObject);
begin
  Left := Left + 10;
end;

procedure TForm1.BYMinusClick(Sender: TObject);
begin
  Top := Top - 10;
end;

procedure TForm1.BYPlusClick(Sender: TObject);
begin
  Top := Top + 10;
end;
C++Builder
void __fastcall TForm1::BXMinusClick(TObject *Sender)
{
  Left = Left - 10;
}

void __fastcall TForm1::BXPlusClick(TObject *Sender)
{
  Left = Left + 10;
}

void __fastcall TForm1::BYMinusClick(TObject *Sender)
{
  Top = Top - 10;
}

void __fastcall TForm1::BYPlusClick(TObject *Sender)
{
  Top = Top + 10;
}

Размещение формы поверх остальных форм на экране


Чтобы форма всегда была видна на экране и размещалась поверх всех других форм, нужно установить свойство формы FormStyle в значение fsStayOnTop. Запустите программу на выполнение. Делайте другие приложения активными. Данная форма всегда будет находиться поверх всех форм.

Изменение прозрачности формы

Свойство AlphaBlendValue позволяет установить степень прозрачности формы. По умолчанию задано 255, то есть форма полностью непрозрачна. Значение 0 задает совершенно прозрачную форму, которая на экране просто не будет видна. Промежуточные значения задают градации прозрачности. Это свойство применяется только в том случае, если значение свойства AlphaBlend установлено в True.
Установите значение свойства AlphaBlend в True, а свойству AlphaBlendValue задайте значение 120. Запустите на выполнение программу. Форма будет едва видна на экране.
Установите прозрачность 255. Положите на форму две кнопки, задав для них тексты Прозрачность + и Прозрачность -, присвоив им имена OpacityPlus и OpacityMinus. Щелчок мышью по первой будет увеличивать значение свойства AlphaBlendValue, по второй — уменьшать.











Рис. 4. Форма (изменение прозрачности)
Напишите обработчик события щелчка по кнопке Прозрачность +:
Delphi
procedure TForm1.OpacityPlusClick(Sender: TObject);
begin
  if (AlphaBlendValue <= 245) then
    AlphaBlendValue := AlphaBlendValue + 10;
end;
Обработчик события щелчка по кнопке Прозрачность -:
procedure TForm1.OpacityMinusClick(Sender: TObject);
begin
  if (AlphaBlendValue >= 10) then
    AlphaBlendValue := AlphaBlendValue - 10;
end;
C++Builder
Обработчик события щелчка по кнопке Прозрачность +:
 void __fastcall TForm1::OpacityPlusClick(TObject *Sender)
{
  if (AlphaBlendValue <= 245)
    AlphaBlendValue = AlphaBlendValue + 10;
}
Обработчик события щелчка по кнопке Прозрачность -:
void __fastcall TForm1::OpacityMinusClick(TObject *Sender)
{
  if (AlphaBlendValue >= 10)
    AlphaBlendValue = AlphaBlendValue - 10;
}
Запустите программу на выполнение. Изменяйте уровень прозрачности, щелкая мышью по соответствующим кнопкам.



пятница, 7 февраля 2014 г.

5. Свойства и методы формы. Лабораторные Delphi, C++ (2)

Приложение, содержащее несколько форм в Delphi и C++Builder

Запустите на выполнение Delphi или C++Builder. Создайте новый проект, выбрав в меню File | New | VCL Forms Application – Delphi (File | New | VCL Forms Application – C++Builder). Появится форма нового проекта. Щелкните мышью по новой пустой форме.

Задание характеристик главной формы

Установите для главной формы следующие значения свойств:

·        Свойству Position задайте значение (выберите из выпадающего списка) poScreenCenter, чтобы форма при запуске располагалась в центре экрана,
·        Для свойства BorderStyle выберите из выпадающего списка значение bsSizeable (это значение по умолчанию и должно быть уже установлено для формы).



Положите на форму из списка Standard набора инструментов Tool Palette две кнопки Button. Кнопкам задайте надписи (свойство Caption) Форма 2 и Форма 3. Форма примет следующий вид (рис. 1).











Рис. 1. Главная форма

Создание дочерних форм

Создайте новую форму, выбрав в меню File | New | Form – Delphi (File | New | VCL Form C++ Builder). В проект будет добавлена новая форма Form2.
Для свойства формы BorderStyle выберите из выпадающего списка значение bsToolWindow.
Положите на эту форму кнопку Button, задав надпись (свойство Caption) Закрыть. Дважды щелкните мышью по кнопке и в появившейся заготовке для обработчика события щелчка по кнопке введите оператор закрытия формы, одинаковый для Delphi и для C++Builder:
Close();
Для свойства кнопки Cancel щелкните мышью в правой части по значению False. У значения появится галочка, и текст будет заменен на True. В результате такой установки будет вызываться событие щелчка по кнопке, когда пользователь нажмет клавишу Esc.
Форма примет следующий вид:









Рис. 2. Вид второй формы

Перейдите к первой форме Form1. Вначале нужно связать главную форму с дочерней. Для этого выберите в меню File | Use Unit или нажмите клавиши Alt+F11. Появится окно Use Unit (рис. 3 Delphi, рис. 4 C++Builder).








Рис. 3. Окно Use Unit (Delphi)











Рис. 4. Окно Use Unit (C++Builder)

Для связывания дочерней формы щелкните мышью по строке Unit2.pas (Unit2.cpp), а затем по кнопке OK. Главная форма Form1 станет связанной с дочерней формой Form2.
Теперь нужно написать обработчик события щелчка по кнопке Форма 2, где должна вызываться вторая форма Form2. Дважды щелкните мышью по кнопке Форма 2 и в появившейся заготовке обработчика события щелчка по кнопке напишите следующее.

Delphi
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal();
end;
C++Builder
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Form2->ShowModal();
}

Запустите программу на выполнение. Щелкните мышью по кнопке Форма 2. На экране появится вторая форма. Изменить размеры этой формы нельзя. Невозможно также вернуться к первой форме, не закрыв вторую, поскольку вторая форма вызывается в модальном режиме при помощи метода формы ShowModal(). Для закрытия второй формы можно щелкнуть по кнопке Закрыть или нажать клавишу Esc.
Аналогичным образом создайте третью форму Form3. Для свойства BorderStyle выберите из выпадающего списка значение bsSizeToolWin.
Положите на форму кнопку Button, задав надпись (свойство Caption) Закрыть. Дважды щелкните мышью по кнопке и в появившейся заготовке для обработчика события щелчка по кнопке введите оператор закрытия формы, одинаковый для Delphi и для C++Builder:

Close();

У свойства кнопки Default щелкните мышью в правой части по значению False. У значения появится галочка, и текст будет заменен на True. В результате такой установки будет вызываться событие щелчка по кнопке, когда пользователь нажмет клавишу Enter.
Перейдите к первой форме Form1. Соедините эту форму с формой Form3. Напишите обработчик события щелчка по кнопке Форма 3. Дважды щелкните мышью по кнопке Форма 3 и в появившейся заготовке обработчика события щелчка по кнопке напишите:

Delphi
procedure TForm1.Button2Click(Sender: TObject);
begin
  Form3.Show();
end;
C++Builder
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Form3->Show();
}

Форма вызывается при обращении к методу формы Show() (в отличие от вызова формы Form2, где использовался метод ShowModal()). Метод Show() позволяет вызвать форму не в модальном варианте. После создания такой формы без ее закрытия можно перейти к главной форме. Можно также создать произвольное количество других немодальных форм и перемещаться между ними любым допустимым для операционной системы способом. При закрытии главной формы подчиненные формы закрываются автоматически.
Для создания и вызова произвольного количества экземпляров одной и той же формы измените обработчик события щелчка по кнопке Форма 3.

Delphi
procedure TForm1.Button2Click(Sender: TObject);
var aForm: TForm3;
begin
  Application.CreateForm(TForm3, aForm);
  aForm.Show();
end;

Здесь описывается переменная aForm, которая будет использована для создания нового экземпляра формы Form3. Метод CreateForm класса Application создает экземпляр указанного класса (в нашем случае Form3) и помещает дескриптор созданного объекта в переменную aForm. Затем форма вызывается при помощи метода Show().

C++Builder
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Application->CreateForm(__classid(TForm3), &Form3);
  Form3->Show();
}

Здесь метод CreateForm класса Application создает экземпляр указанного класса (в нашем случае TForm3). Затем форма вызывается при помощи метода Show().
В этом варианте можно создавать произвольное количество форм Form3 и переключаться между ними, используя обычные средства Windows.

Задание стартовой формы

Если в программе существует несколько форм, то можно изменить стартовую форму — форму, которая первой будет появляться на экране при запуске приложения. Выберите в меню Project | Options или нажмите клавиши Shift+Ctrl+F11. Появится окно режимов текущего проекта. В левой части окна щелкните мышью по строке Forms, в выпадающем списке Main form: выберите форму Form2 и щелкните по кнопке OK.












Рис. 5. Выбор стартовой формы (Delphi)














Рис. 6. Выбор стартовой формы (C++Builder)

Запустите программу на выполнение. Появится вторая форма этого приложения. Другие формы увидеть в данном случае будет нельзя.