unit _uf_chat;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ScktComp, ExtCtrls;
type
T_FCHAT = class(TForm)
m: TRichEdit;
ed: TEdit;
c3chat: TClientSocket;
Shape2: TShape;
Shape1: TShape;
procedure edKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure c3chatConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure c3chatDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure c3chatError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure c3chatRead(Sender: TObject; Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
private
_can_send_typing4:boolean;
public
zoka:integer;
niko:string;
uip:string[15];
isZunderF3:Boolean;
procedure logy(sx: string;b:byte);
end;
var
_FCHAT: T_FCHAT;
implementation
uses _uc_refs_consts, _uc_refs_vars, Unit1, _uc_crypto, _uc_GuiLanG;
{$R *.DFM}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure T_FCHAT.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure T_FCHAT.logy(sx: string;b:byte);
begin
m.SelStart:=m.GetTextLen ;
m.SelAttributes.Style:=[];
case b of
1 : m.SelAttributes.Style:=[fsbold];
2 : m.SelAttributes.Style:=[fsItalic];
end;
m.Lines.Add(sx);
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.edKeyPress(Sender: TObject; var Key: Char);
var
s:string;
i:integer;
begin
//
if (key<>#13)and(_can_send_typing4) then
begin
_can_send_typing4:=false;
if (isZunderF3) then
c3chat.Socket.SendText(TCrypto._BarzaToon('ZATY_typing...$'))
else
begin
s:='ZATY_typing...$';
for i:=0 to _FXOC_MAIN.ssCHATER.Socket.ActiveConnections -1 do
if _FXOC_MAIN.ssCHATER.Socket.Connections[i].SocketHandle=zoka then
begin
_FXOC_MAIN.ssCHATER.Socket.Connections[i].SendText(TCrypto._BarzaToon(s));
break;
end;
end;
end;
if (key=#13)and(ed.Text<>'') then
begin
if (isZunderF3) then
c3chat.Socket.SendText(TCrypto._BarzaToon('ZATY'+_VV_LOCAL_USER_NIKO+' :'+ret+ed.Text+'$'))
else
begin
s:='ZATY'+_VV_LOCAL_USER_NIKO+' :'+ret+ed.Text+'$';
for i:=0 to _FXOC_MAIN.ssCHATER.Socket.ActiveConnections -1 do
if _FXOC_MAIN.ssCHATER.Socket.Connections[i].SocketHandle=zoka then
begin
_FXOC_MAIN.ssCHATER.Socket.Connections[i].SendText(TCrypto._BarzaToon(s));
break;
end;
end;
logy(ret+FormatDateTime('[hh:mm] ',now)+_VV_LOCAL_USER_NIKO+' :',1);
logy(ed.text,0);
key:=#0;
_can_send_typing4:=true;
ed.Clear;
ed.SetFocus;
end;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormCreate(Sender: TObject);
begin
_can_send_typing4:=true;
isZunderF3:=false;
m.Paragraph.FirstIndent:=3;
_FXOC_MAIN._images.GetIcon(17,icon);
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormShow(Sender: TObject);
begin
if (not isZunderF3) then exit;
Caption:=niko;
logy(ret+___ccc__0045__Connecting,1);
c3chat.port :=_C_EXOSEE_CHATER_SERVER_PORT;
c3chat.Host__ip :=uip;
c3chat.Active :=true;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logy(ret+FormatDateTime('[hh:mm] ',now)+___ccc__0068__ConnectedTo+niko,1);
Socket.SendText(TCrypto._BarzaToon('<ZATC><'+_VV_LOCAL_USER_PC_ID+'>'));
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logy(ret+___ccc__0009__Disconnected,1);
m.Update;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatRead(Sender: TObject; Socket: TCustomWinSocket);
var
s:string;
p:integer;
begin
if (_THE_EXOSEE_APPLICATION_IS_TERMINATED) then exit;
s:=TCrypto._SimSim(Socket.ReceiveText);
if (copy(s,1,4)='ZAWA') then
begin
Delete(s,1,4);
s:=ret+format(___ccc__0069__AutoMsgFrom,[niko])+ret+sep+ret+s+ret+sep+ret;
s:=StringReplace(s,'|',ret,[rfReplaceAll]); // break
logy(s,0);
end
else
begin
if (copy(s,1,4)='ZATY')and (s[length(s)]='$') then
begin
s:=copy(s,5,length(s)-5); //cut handsome !
if s='_typing...' then begin
Caption:=niko+' ...';
exit;
end;
Caption:=niko;
logy(ret+FormatDateTime('[hh:mm] ',now)+copy(s,1,pos(ret,s)-1),1);
p:=pos(ret,s);
s:=copy(s,p+2,length(s)-p);
s:=StringReplace(s,'$ZATY',ret,[rfReplaceAll]); //debugg old version
logy(s,0);
flashwindow(handle, false);
end;
end;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormClose(Sender: TObject; var Action: TCloseAction);
begin
c3chat.Active:=false;
Action:=caFree;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormActivate(Sender: TObject);
begin
Update;
end;
end.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ScktComp, ExtCtrls;
type
T_FCHAT = class(TForm)
m: TRichEdit;
ed: TEdit;
c3chat: TClientSocket;
Shape2: TShape;
Shape1: TShape;
procedure edKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure c3chatConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure c3chatDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure c3chatError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure c3chatRead(Sender: TObject; Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
private
_can_send_typing4:boolean;
public
zoka:integer;
niko:string;
uip:string[15];
isZunderF3:Boolean;
procedure logy(sx: string;b:byte);
end;
var
_FCHAT: T_FCHAT;
implementation
uses _uc_refs_consts, _uc_refs_vars, Unit1, _uc_crypto, _uc_GuiLanG;
{$R *.DFM}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure T_FCHAT.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure T_FCHAT.logy(sx: string;b:byte);
begin
m.SelStart:=m.GetTextLen ;
m.SelAttributes.Style:=[];
case b of
1 : m.SelAttributes.Style:=[fsbold];
2 : m.SelAttributes.Style:=[fsItalic];
end;
m.Lines.Add(sx);
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.edKeyPress(Sender: TObject; var Key: Char);
var
s:string;
i:integer;
begin
//
if (key<>#13)and(_can_send_typing4) then
begin
_can_send_typing4:=false;
if (isZunderF3) then
c3chat.Socket.SendText(TCrypto._BarzaToon('ZATY_typing...$'))
else
begin
s:='ZATY_typing...$';
for i:=0 to _FXOC_MAIN.ssCHATER.Socket.ActiveConnections -1 do
if _FXOC_MAIN.ssCHATER.Socket.Connections[i].SocketHandle=zoka then
begin
_FXOC_MAIN.ssCHATER.Socket.Connections[i].SendText(TCrypto._BarzaToon(s));
break;
end;
end;
end;
if (key=#13)and(ed.Text<>'') then
begin
if (isZunderF3) then
c3chat.Socket.SendText(TCrypto._BarzaToon('ZATY'+_VV_LOCAL_USER_NIKO+' :'+ret+ed.Text+'$'))
else
begin
s:='ZATY'+_VV_LOCAL_USER_NIKO+' :'+ret+ed.Text+'$';
for i:=0 to _FXOC_MAIN.ssCHATER.Socket.ActiveConnections -1 do
if _FXOC_MAIN.ssCHATER.Socket.Connections[i].SocketHandle=zoka then
begin
_FXOC_MAIN.ssCHATER.Socket.Connections[i].SendText(TCrypto._BarzaToon(s));
break;
end;
end;
logy(ret+FormatDateTime('[hh:mm] ',now)+_VV_LOCAL_USER_NIKO+' :',1);
logy(ed.text,0);
key:=#0;
_can_send_typing4:=true;
ed.Clear;
ed.SetFocus;
end;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormCreate(Sender: TObject);
begin
_can_send_typing4:=true;
isZunderF3:=false;
m.Paragraph.FirstIndent:=3;
_FXOC_MAIN._images.GetIcon(17,icon);
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormShow(Sender: TObject);
begin
if (not isZunderF3) then exit;
Caption:=niko;
logy(ret+___ccc__0045__Connecting,1);
c3chat.port :=_C_EXOSEE_CHATER_SERVER_PORT;
c3chat.Host__ip :=uip;
c3chat.Active :=true;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logy(ret+FormatDateTime('[hh:mm] ',now)+___ccc__0068__ConnectedTo+niko,1);
Socket.SendText(TCrypto._BarzaToon('<ZATC><'+_VV_LOCAL_USER_PC_ID+'>'));
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logy(ret+___ccc__0009__Disconnected,1);
m.Update;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.c3chatRead(Sender: TObject; Socket: TCustomWinSocket);
var
s:string;
p:integer;
begin
if (_THE_EXOSEE_APPLICATION_IS_TERMINATED) then exit;
s:=TCrypto._SimSim(Socket.ReceiveText);
if (copy(s,1,4)='ZAWA') then
begin
Delete(s,1,4);
s:=ret+format(___ccc__0069__AutoMsgFrom,[niko])+ret+sep+ret+s+ret+sep+ret;
s:=StringReplace(s,'|',ret,[rfReplaceAll]); // break
logy(s,0);
end
else
begin
if (copy(s,1,4)='ZATY')and (s[length(s)]='$') then
begin
s:=copy(s,5,length(s)-5); //cut handsome !
if s='_typing...' then begin
Caption:=niko+' ...';
exit;
end;
Caption:=niko;
logy(ret+FormatDateTime('[hh:mm] ',now)+copy(s,1,pos(ret,s)-1),1);
p:=pos(ret,s);
s:=copy(s,p+2,length(s)-p);
s:=StringReplace(s,'$ZATY',ret,[rfReplaceAll]); //debugg old version
logy(s,0);
flashwindow(handle, false);
end;
end;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormClose(Sender: TObject; var Action: TCloseAction);
begin
c3chat.Active:=false;
Action:=caFree;
end;
//------------------------------------------------------------------------------
procedure T_FCHAT.FormActivate(Sender: TObject);
begin
Update;
end;
end.