Code
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ICQClient, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Timer1: TTimer;
ICQClient1: TICQClient;
procedure Button1Click(Sender: TObject);
procedure ICQClient1Login(Sender: TObject);
procedure ICQClient1ConnectionFailed(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
rec: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//Проверка на заполненность полей с ICQ аккаунтом
if (Edit1.Text = '') or (Edit2.Text = '') or //пустые поля
(Length(Edit1.Text) < 5) or (Length(Edit2.Text) < 3) //Если UIN меньше 5 символов и пароль меньше 3
then
begin
MessageDlg('Не правельно заполнены поля!',mtInformation,[mbOk],0); //Выводим сообщение об ошибке
Exit;
end;
rec := True; //Удачное соединение
ICQClient1.UIN := StrToInt(Edit1.Text); //забираем UIN
ICQClient1.Password := Edit2.Text; //забираем пароль
ICQClient1.Login(); //Соединяемся с сервером
Memo1.Lines.Add('Соединение с сервером ICQ...'); //Выводим текущее состояние (соединение)
end;
procedure TForm1.ICQClient1Login(Sender: TObject);
begin
if ICQClient1.LoggedIn then //если соединение установлено
begin
Memo1.Lines.Add('Соединение с сервером установлено.'); //Добавляю в Memo1 строку о текущем положении
Timer1.Enabled := True; //Включаю таймер
end;
end;
procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject);
begin
if not rec then Exit; //Если мы нажали на кнопку "Выход", то не нужно пытаться соединиться
Memo1.Lines.Add('Не удалось соединиться с сервером.');
if MessageDlg('Попытаться соединиться еще раз?',mtInformation,[mbOk,mbCancel],0) = mrOk
then
begin
ICQClient1.Login();
Memo1.Lines.Add('Соединение с сервером ICQ...');
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ICQClient1.SendKeepAlive; //посылаем KeepAlive (Зачем? Описываль выше :))
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not ICQCLient1.LoggedIn then
MessageDlg('Соединение с сервером не установлено!',mtInformation,[mbOk],0)
else
begin
rec := False;
ICQCLient1.Disconnect;
Memo1.Lines.Add('Соединение с сервером оборвано.');
Timer1.Enabled := False;
end;
end;
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var
icq: cardinal;
begin
icq := StrToInt(UIN);
Memo1.Lines.Add(UIN + ': ' + Msg); //Добавляем полученное сообщение в Memo1
if Msg='Привет' then
ICQClient1.SendMessage(icq,'Привет') //Отсылаем ответ, мол здравствуйте! Рады вас слышать!
else
ICQClient1.SendMessage(icq,'Извините, мне не о чем с Вами поговорить... :)');
end;
end.