12. События формы. Лабораторные Delphi, C++ (8)

События клавиатуры на форме в Delphi и C++Builder

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

Читать на сайте автора.

11. События формы. Лабораторные Delphi, C++ (7)

События щелчка мышью на форме в Delphi и C++Builder

Здесь будут исследованы события формы, появляющиеся при щелчках пользователя кнопками мыши на форме:

Читать на сайте автора.

10. События формы. Лабораторные Delphi, C++ (6)

События перемещения мыши на форме в Delphi и C++Builder

Здесь будут исследованы события формы, появляющиеся при перемещениях пользователем указателя мыши по форме:

Читать на сайте автора.

9. События формы. Лабораторные Delphi, C++ (5)

Основные события формы в Delphi и C++Builder

Здесь будут исследованы события формы, связанные с появлением формы на экране, переключением между формами одного приложения, закрытием и изменениями размера формы:

Читать на сайте автора.

8. События формы

Наиболее важные события формы представлены в следующей таблице.

Таблица 1. Основные события формы

Событие

Описание

OnActivate

Возникает после того, как форма становится активной — при первоначальном запуске приложения или когда форма после потери фокуса при перемещении фокуса к другой форме того же приложения вновь получает фокус.

OnClick

Возникает, когда пользователь щелкает левой кнопкой мыши по форме. Появляется после события OnMouseDown. Событие будет отправлено приложению лишь после того, как пользователь отпустит кнопку мыши.

OnClose

Возникает непосредственно перед закрытием формы, после события OnCloseQuery.

OnCloseQuery

Возникает до закрытия формы перед событием OnClose. В обработчике этого события можно на основании действий пользователя разрешить или отменить закрытие формы. Обработчику события передается параметр CanClose типа Boolean. Чтобы отменить закрытие формы свойству CanClose следует присвоить значение False. Значением по умолчанию является True — форма будет закрыта.

OnCreate

Возникает всего один раз в момент создания формы. Предшествует событиям OnShow и OnActivate.

OnDeactivate

Возникает при деактивации формы — при потере фокуса, когда клиент переключается на другую форму того же приложения.

OnDblClick

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

·  OnMouseDown

·  OnClick

·  OnMouseUp

·  OnDblClick

·  OnMouseDown

·  OnMouseUp.
Событие будет отправлено приложению лишь после того, как пользователь второй раз отпустит кнопку мыши.

OnKeyDown

Возникает при нажатии пользователем на клавиатуре любой клавиши, включая ту, которая не вводит никаких символов (Ctrl, Shift, Alt и т.д.). Предшествует событию OnKeyPress.

OnKeyPress

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

OnKeyUp

Возникает, когда пользователь отпускает нажатую клавишу, включая ту, которая не вводит никаких символов (Ctrl, Shift, Alt и т.д.). Происходит после событий OnKeyDown и OnKeyPress.

OnMouseDown

Возникает, когда пользователь нажимает на форме любую кнопку мыши. Предшествует событию OnClick.

OnMouseEnter

Событие происходит, когда пользователь переводит указатель мыши на поверхность формы — перемещая его с другого компонента формы или из-за пределов формы.

OnMouseLeave

Возникает, когда указатель мыши покидает форму.

OnMouseMove

Возникает, когда указатель мыши перемещается на форме.

OnMouseUp

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

OnMouseWeel

Событие возникает, когда пользователь вращает колесо мыши.

OnMouseWeelDown

Событие возникает, когда пользователь вращает колесо мыши вниз.

OnMouseWeelUp

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

OnPaint

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

OnResize

Возникает при любом изменении размеров формы как в сторону увеличения, так и в сторону уменьшения.

OnShow

Возникает при начальной загрузке формы перед событием OnActivate, а также в случае, когда форма становится видимой (свойству Visible присваивается значение True).

Читать на сайте автора.

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

Создание непрямоугольных форм в Delphi и C++Builder

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

Создание овальной формы

С вкладки Additional положите на форму компонент Image. Задайте для него следующие свойства:

Читать на сайте автора.

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 __fastcallTForm1.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 __fastcallTForm1::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 __fastcallTForm1::BSizeClick(TObject *Sender)
{
  Height = 500;
  Width = 700;
}

Это устанавливает для формы конкретные размеры.

Запустите программу на выполнение. Изменяйте размеры формы, щелкая мышью по соответствующим кнопкам.

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

Свойства формы Left и Top определяют положение левого верхнего края формы на экране, соответственно, по горизонтали и по вертикали. Эти значения можно изменять в программе в процессе ее выполнения.

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

Рис. 3. Форма (изменение положения)

Напишите следующие обработчики событий щелчка мышью по этим кнопкам:

Delphi

procedureTForm1.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 __fastcallTForm1::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

procedureTForm1.OpacityPlusClick(Sender: TObject);
begin
  if (AlphaBlendValue <= 245) then
    AlphaBlendValue := AlphaBlendValue + 10;
end;

Обработчик события щелчка по кнопке Прозрачность —:

procedureTForm1.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 __fastcallTForm1::OpacityMinusClick(TObject *Sender)
{
  if (AlphaBlendValue >= 10)
    AlphaBlendValue = AlphaBlendValue - 10;
}

Запустите программу на выполнение. Изменяйте уровень прозрачности, щелкая мышью по соответствующим кнопкам.

Читать на сайте автора.

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

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

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

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

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

Читать на сайте автора.

4. Свойства и методы формы. Лабораторные С++ (1)

Основные свойства формы в C++Builder

Здесь мы повторим все действия с проектом, которые выполняли для Delphi. Отличие от предыдущего проекта только в написании кодов для C++.

Запустите на выполнение C++Builder XE3. Создайте новый проект, выбрав в меню File | New | VCL Forms Application – C++Builder. Появится форма нового проекта.
Положите на форму с вкладки Standard палитры инструментов Tool Palette компонент ввода текста Edit и кнопку Button. Кнопке задайте надпись (свойство Caption) Заголовок. Форма примет следующий вид.







Дважды щелкните мышью по кнопке Заголовок или, выделив мышью эту кнопку, перейдите в окне Object Inspector на вкладку Events (события) и дважды щелкните мышью справа от события OnClick (событие, возникающее при щелчке пользователем мышью по кнопке). Откроется вкладка редактирования текста Unit1и появится заготовка для обработчика события щелчка по кнопке:
void __fastcall TForm1::Button1Click(TObject *Sender)

{

}

Введите оператор, помещающий в заголовок формы текст, набранный пользователем в поле ввода Edit:
void __fastcall TForm1::Button1Click(TObject *Sender)

{

  this->Caption = Edit1->Text;

}

Ключевое слово this, означающее, что свойство относится к текущей форме, можно опустить.
Запустите программу на выполнение. Введите произвольный текст в Edit1. Щелкните по кнопке Заголовок. В заголовке формы появится набранный вами текст.
Форму можно закрыть, выбрав в системном меню формы вариант Закрыть, нажав клавиши Alt+F4, щелкнув мышью по кнопке закрытия в заголовке формы. Можно также закрыть форму программным способом, используя метод формы Close().
Положите на форму еще одну кнопку Button. Присвойте кнопке текст Закрыть. Форма примет вид, как показано на следующем рисунке.







Для этой кнопки напишите обработчик события щелчка мышью, при котором происходит закрытие формы и завершение работы программы.
void __fastcall TForm1::Button2Click(TObject *Sender)

{

  Close();

}

Поскольку закрывается главная форма программы, происходит завершение работы всего приложения. Чтобы выполнить завершение работы программы из любой формы, нужно вызвать метод Terminate() объекта Application:
Application->Terminate();

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











Щелкните по кнопке Load. Появится диалоговое окно открытия файла. Откройте на компьютере файл с расширением ico.
Щелкните по кнопке OK. Иконка будет помещена в заголовок формы.
Чтобы удалить из формы заданную иконку и вернуть иконку по умолчанию, нужно справа от свойства формы Icon выделить мышью сам текст (Icon) и нажать клавишу Del (удалить). Для удаления иконки можно также вызвать окно изменения изображения и щелкнуть в нем по кнопке Clear(очистить).
Свойство WindowState задает вид формы при ее первоначальном запуске:

Читать на сайте автора.

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

Основные свойства формы в Delphi

Запустите на выполнение Delphi XE3. Создайте новый проект, выбрав в меню File | New | VCL Forms Application — Delphi. Появится форма нового проекта. Щелкните мышью по новой пустой форме.
Запустите на выполнение пустую форму, щелкнув по кнопке  или нажав клавиши Shift+Ctrl+F9. На экране появится пустая форма, содержащая только заголовочную строку. Закройте форму, щелкнув мышью по кнопке закрытия в заголовке формы щелкнув правой кнопкой мыши по заголовку формы и выбрав в появившемся контекстном меню строку Закрытьили нажав клавиши Alt+F4.
В окне Object Inspector отображаются свойства и события формы.














Положите на форму с вкладки Standard палитры инструментов Tool Palette компонент ввода текста Edit и кнопку Button. Кнопке задайте надпись (свойство Caption) Заголовок. Форма примет следующий вид:

Дважды щелкните мышью по кнопке Заголовок или, выделив мышью эту кнопку, перейдите в окне Object Inspector на вкладку Events (события) и дважды щелкните мышью справа от события OnClick (событие, возникающее при щелчке пользователем мышью по кнопке). Откроется вкладка редактирования текста Unit1и появится заготовка для обработчика события щелчка по кнопке:

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

Введите оператор, помещающий в заголовок формы текст, набранный пользователем в поле ввода Edit:

procedure TForm1.Button1Click(Sender: TObject);

begin

  Self.Caption := Edit1.Text;

end;

Ключевое слово Self, означающее, что свойство относится к текущей форме, можно опустить.

Запустите программу на выполнение. Введите произвольный текст в Edit1. Щелкните по кнопке Заголовок. В заголовке формы появится набранный вами текст.

Форму можно закрыть, выбрав в системном меню формы вариант Закрыть, нажав клавиши Alt+F4, щелкнув мышью по кнопке закрытия  в заголовке формы. Можно также закрыть форму программным способом, используя метод формы Close().
Положите на форму еще одну кнопку TButton. Присвойте кнопке текст Закрыть.

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

procedure TForm1.Button2Click(Sender: TObject);

begin

  Close();

end;

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

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

Application.Terminate();

Свойство Iconпозволяет задать для формы конкретную пиктограмму, помещаемую в левый верхний угол заголовка формы. Если это свойство не задано, то у формы присутствует иконка по умолчанию.

Выделите в свойствах формы строку Icon, щелкните мышью справа от значения этого свойства по кнопке Появится окно изменения изображения:







Щелкните по кнопке Load. Появится диалоговое окно открытия файла. Откройте на компьютере подходящий файл с расширением ico.

Щелкните по кнопке OK. Иконка будет помещена в заголовок формы.

Чтобы удалить из формы заданную иконку и вернуть иконку по умолчанию, нужно справа от свойства формы Icon выделить мышью сам текст (Icon) и нажать клавишу Del (удалить). Для удаления иконки можно также вызвать окно изменения изображения (рис. 4) и щелкнуть в нем по кнопке Clear (очистить).

Свойство WindowState задает вид формы при ее первоначальном запуске:

Читать на сайте автора.