- •Работа с кнопками
- •Компонент Edit
- •2. Событие KeyPress возникает при нажатии алфавитно-
- •Текст (компоненты tLabel и tStaticText)
- •Компонент ListBox
- •Компонент ComboBox
- •Компонент CheckBox
- •Компонент RadioGroup
- •Класс tStringList
- •Компонент ImageList
- •Invalidate(); //Перерисовываем.
- •Создание главного меню
- •Работаем с контекстным меню (tPopupMenu)
- •Значок на панели задач (компонент tTrayIcon)
- •Работаем со сплиттером
- •Компонент Panel
- •Совместное использование сплиттера и Panel
- •Компонент HotKey
- •Компонент StatusBar
- •Назначение формы главной
- •Рисование на форме
- •Компонент ActionList
- •Работаем с двумя формами
- •Используем api-функции
- •Окна сообщений
- •Работаем с сетью. Клиент (класс tClientSocket)
- •Работаем с сетью. Сервер (класс tServerSocket)
- •Пересчитываем компоненты на форме
- •Форма - добавление методов
- •Форма - добавление полей
- •Форма - добавление свойств
Работаем с двумя формами
Приложение редко состоит только из одной формы. Почти в любой программе есть дополнительные формы с разными настройками и параметрами. Для добавления в программу еще одной формы нажмите на кнопочку 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, то ничего не делаем.
Используем api-функции
В программах для Windows на C++ Builder, как правило, все API-функции можно использовать без особых проблем и без дополнительных объявлений и include'ов. Вот пример, как можно с помощью API-функций сдвинуть кнопку Пуск на Панели задач:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
HWND hWndBt = FindWindowEx(hWnd, NULL, "Button", NULL);
MoveWindow(hWndBt, 30, 2, 98, 32, TRUE);
}
Разумеется, этот код надо разместить в обработчике нажатия на кнопку на форме. После щелчка на кнопке нашей программы кнопка "Пуск" сдвинется вправо:
Если же вы разместите этот код в консольном приложении, то вам необходимо добавить файл windows.h:
#include <windows.h>
int main(int argc, char* argv[])
{
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
HWND hWndBt = FindWindowEx(hWnd, NULL, "Button", NULL);
MoveWindow(hWndBt, 30, 2, 98, 32, TRUE);
return 0;
}
Как правило, этого include'а достаточно для использования любой API-функции в консольном приложении.
Некоторые API-функции требуют в Windows-приложениях дополнительных include'ов. Например, функция PlaySound. Она без проблем будет работать в консольном приложении (если файл windows.h подключен, разумеется), в Windows же приложении нужно добавить строчку
...
#include <Mmsystem.h>
...
после чего в вашей программе вы сможете проигрывать с помощью этой функции звуки:
...
PlaySound("music.wav", NULL, SND_FILENAME);
...
Приведенный фрагмент проиграет файл music.wav, который вы должы разместить в папке вашего проекта.