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 __fastcallTForm1::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
begin
end;
TForm1.BXMinusClick(Sender: TObject);
begin
Left := Left - 10;
end;
procedureTForm1.BXPlusClick(Sender: TObject);
begin Left := Left + 10;
end;
procedureTForm1.BYMinusClick(Sender: TObject);
begin Top := Top - 10;
end;
procedureTForm1.BYPlusClick(Sender: TObject);
begin Top := Top + 10;
end;
C++Builder
void __fastcall
TForm1::BXMinusClick(TObject *Sender)
{
Left = Left - 10;
}
void __fastcallTForm1::BXPlusClick(TObject *Sender)
{
Left = Left + 10;
}
void __fastcallTForm1::BYMinusClick(TObject *Sender)
{
Top = Top - 10;
}
void __fastcallTForm1::BYPlusClick(TObject *Sender)
{
Top = Top + 10;
}
Размещение формы поверх остальных форм на экране
Чтобы форма всегда была видна на экране и размещалась поверх всех других форм, нужно установить свойство формы FormStyleв значение fsStayOnTop. Запустите программу на выполнение. Делайте другие приложения активными. Данная форма всегда будет находиться поверх всех форм.
Изменение прозрачности формы
Свойство AlphaBlendValueпозволяет установить степень прозрачности формы. По умолчанию задано 255, то есть форма полностью непрозрачна. Значение 0 задает совершенно прозрачную форму, которая на экране просто не будет видна. Промежуточные значения задают градации прозрачности. Это свойство применяется только в том случае, если значение свойства AlphaBlend установлено в True.
Установите значение свойства AlphaBlendв True, а свойству AlphaBlendValue задайте значение 120. Запустите на выполнение программу. Форма будет едва видна на экране.
Установите прозрачность 255. Положите на форму две кнопки, задав для них тексты Прозрачность +и Прозрачность —, присвоив им имена OpacityPlus и OpacityMinus. Щелчок мышью по первой будет увеличивать значение свойства AlphaBlendValue, по второй — уменьшать.
Рис. 4. Форма (изменение прозрачности)
Напишите обработчик события щелчка по кнопке Прозрачность +:
Delphi
procedure
begin
end;
TForm1.OpacityPlusClick(Sender: TObject);
begin
if (AlphaBlendValue <= 245)
then AlphaBlendValue := AlphaBlendValue + 10;
end;
Обработчик события щелчка по кнопке Прозрачность —:
procedure
begin
end;
TForm1.OpacityMinusClick(Sender: TObject);
begin
if (AlphaBlendValue >= 10)
then AlphaBlendValue := AlphaBlendValue - 10;
end;
C++Builder
Обработчик события щелчка по кнопке Прозрачность +:
void __fastcallTForm1::OpacityPlusClick(TObject *Sender)
{
if (AlphaBlendValue <= 245)
AlphaBlendValue = AlphaBlendValue + 10;
}
Обработчик события щелчка по кнопке Прозрачность —:
void __fastcall
TForm1::OpacityMinusClick(TObject *Sender)
{
if (AlphaBlendValue >= 10)
AlphaBlendValue = AlphaBlendValue - 10;
}
Запустите программу на выполнение. Изменяйте уровень прозрачности, щелкая мышью по соответствующим кнопкам.
Ответить
Хотите присоединиться к обсуждению?Не стесняйтесь вносить свой вклад!