- •Работа с кнопками
- •Компонент Edit
- •2. Событие KeyPress возникает при нажатии алфавитно-
- •Текст (компоненты tLabel и tStaticText)
- •Компонент ListBox
- •Компонент ComboBox
- •Компонент CheckBox
- •Компонент RadioGroup
- •Класс tStringList
- •Компонент ImageList
- •Invalidate(); //Перерисовываем.
- •Создание главного меню
- •Работаем с контекстным меню (tPopupMenu)
- •Значок на панели задач (компонент tTrayIcon)
- •Работаем со сплиттером
- •Компонент Panel
- •Совместное использование сплиттера и Panel
- •Компонент HotKey
- •Компонент StatusBar
- •Назначение формы главной
- •Рисование на форме
- •Компонент ActionList
- •Работаем с двумя формами
- •Используем api-функции
- •Окна сообщений
- •Работаем с сетью. Клиент (класс tClientSocket)
- •Работаем с сетью. Сервер (класс tServerSocket)
- •Пересчитываем компоненты на форме
- •Форма - добавление методов
- •Форма - добавление полей
- •Форма - добавление свойств
Окна сообщений
Рассмотрим две функции вывода на экран окна сообщений: ShowMessage и MessageDlg. Первая из них позволяет вывести на экран простое окно сообщения, вторая - окно с дополнительными параметрами (несколько кнопок, иконка и др.)
Обе эти функции выводят модальное окно.
Начнем с ShowMessage. Вот сразу пример:
ShowMessage("Ошибка!");
Этот пример выведет сообщение "Ошибка!". Никаких дополнительных параметров у функции ShowMessage нет - только текст вообщения.
А вот функция MessageDlg позволяет задавать для выводимого окна сообщения ряд дополнительных параметров. Вот пример использования этой функции:
MessageDlg("Внимание!", mtInformation, TMsgDlgButtons() << mbNo << mbYes, 0);
Первый параметр у этой функции - это текст сообщения, второй (типа TMsgDlgType) - значок сообщения. Этот параметр может принимать следующие значения:
Значение |
Описание |
mtWarning |
Предупреждение |
mtError |
Ошибка |
mtInformation |
Информация |
mtConfirmation |
Подтверждение |
mtCustom |
Картинка отсутствует, в заголовке окна - название файла программы. |
Третий параметр функции MessageDlg - это кнопки, показываемые в окне сообщения. Для задания кнопок мы используем следующую конструкцию:
TMsgDlgButtons() << mbNo << mbYes
В этом параметре могут использоваться следующие константы:
mbOK, mbCancel, mbYes, mbNo, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp.
Четвертый параметр - это идентификатор справки для нашего окна сообщения.
Функция MessageDlg возвращает значение, которое соответствует нажатой кнопке. Вот пример:
if(mrOk == MessageDlg("Внимание!", mtInformation,
TMsgDlgButtons() <<mbOK<<mbCancel , 0))
{
//Операторы для случая OK.
}
else
{
//Операторы для случая Cancel.
}
Константы для выяснения того, на какой кнопке пользователь нажал, соответствуют константам для кнопок, только вместо префикса mb имеют префикс mr (например, вместо mbCancel - mrCancel и так далее).
Работаем с сетью. Клиент (класс tClientSocket)
В библиотеке VCL есть два компонента, предназначенных для работы с сетью на низком уровне - т. е. на уровне протоколов TCP/IP. Это компоненты ClientSocket и ClientSocket. Оба они расположены на вкладке Internet.
На этом уроке мы с вами создадим клиента. Создайте новое приложение, на форме разместите 2 кнопки, Edit и компонент ClientSocket с вкладки Internet:
Задайте для первой кнопки свойство Caption как "Соединиться", для второй - "Отправить", свойство Text для Edit1 установите в "" (пустую строку).
Программа будет работать так: сначала мы подсоединяемся к серверу, нажав на кнопку "Cоединитmся", затем вводим некоторые данные вEdit1 и отправляем их серверу, нажав на кнопку "Отправить".
Наша форма после размещения всех компонентов должна выглядеть приблизительно так:
Теперь займемся настройкой сокета. Устанавливаем для него Address в 127.0.0.1 (так как тестирование мы будем делать на локальном компьютере), порт в 2000 (тут можно поставить и любое другое число - важно только, что сервер, который мы сделаем на следующем уроке, будет слушать именно порт с этим номером).
Теперь займемся кодом для кнопок. Для кнопки с заголовком "Соединиться" пишем код соединения к серверу:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Active = true;
}
Тут мы просто активизируем сокет, но для него уже установлены свойства Port и Address, так что мы именно по этому адресу и именно к этому порту и будем подсоединятся.
Теперь код для второй кнопки:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ClientSocket1->Socket->SendText(Edit1->Text);
}
Тут наш сокет просто посылает данные из edit'а на сервер.
С написанием клиента все!