Delphi. Учимся на примерах | страница 66
Ниже разместите еще один компонент Label, присвоив его свойству Caption значение IP. Справа от него разместите компонент Edit с именем ip и текстом 127.0.0.1.
В самом низу формы разместите две кнопки (компоненты Button категории Standard), присвоив их свойству Caption значения Connect и Disconnect. Также нам понадобится компонент Timer категории System. В свойствах таймера следует изменить значение свойства Enabled на False, а свойства Interval — на 500 (что соответствует половине секунды).
Разместите на форме самый важный компонент нашей программы — Client Socket категории Internet — и присвойте ему имя Client (свойство Name). Остальные свойства этого компоненты мы будем изменять в самой программе.
Полученная форма должна соответствовать рис. 16.1.
Рис. 16.1. Форма клиентской программы для удаленного управления указателем
Разработка программного кода
По нажатию кнопки Connect должны считываться все настройки и выполняться соединение с сервером:
>procedure TForm1.Button1Click(Sender: TObject);
>begin
> Client.Port:= StrToInt(port.Text); //считываем порт
> Сlient.Address:= ip.text; //считываем ip-адрес сервера
> Client.Active:= True; //соединяемся
> Timer1.Enabled:= True; //включаем таймер
>end;
Сначала мы считываем все необходимые настройки, а затем предпринимаем попытку соединиться с сервером. Если все нормально, то включаем таймер, по которому будут передаваться координаты указателя мыши.
Обработаем нажатие кнопки Disconnect:
>procedure TForm1.Button2Click(Sender: TObject);
>begin
> Timer1.Enabled:= False;//выключаем таймер
> Client.Close; //закрываем соединение
> Client.Active:=False; //отключаемся от сервера
>end;
При нажатии кнопки Disconnect мы перестаем передавать координаты указателя на сервер и отсоединяемся от него.
Для того чтобы на сервере не возникало ошибок при аварийном выключении клиента, создайте обработчик события формы OnDestroy и добавьте в него следующий код:
>procedure TForm1.FormDestroy(Sender: TObject);
>begin
> Client.Close; //закрываем соединение
> Client.Active:=False; //отключаемся от сервера
>end;
При аварийном завершении программы закрывается соединение и выполняется отключение от сервера.
Для уведомления пользователя об успешном соединении с сервером создайте обработчик события client.OnConnect: