Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Samples/Broadcast Chat/BroadcastChatMain.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10
- Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 14:06:19 +00:00

133 lines
3.6 KiB
ObjectPascal

unit BroadcastChatMain;
{$I RemObjects.inc}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, uROPoweredByRemObjectsButton,
uROServer, uROIndyUDPServer, uROBroadcastServer,
uROIndyUDPChannel, uROBroadcastChannel, uROClient,
uROBINMessage, BroadcastChatLibrary_Async, ActnList;
type
TBroadcastChatMainForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
ed_Chat: TMemo;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
ed_Message: TEdit;
Panel8: TPanel;
Panel9: TPanel;
ed_NickName: TEdit;
Label1: TLabel;
RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton;
btn_Send: TBitBtn;
ROBINMessage: TROBINMessage;
ROBroadcastServer: TROBroadcastServer;
ROBroadcastChannel: TROBroadcastChannel;
ActionList1: TActionList;
ac_SendMessage: TAction;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure ac_SendMessageExecute(Sender: TObject);
procedure ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
procedure BitBtn1Click(Sender: TObject);
// procedure tim_CheckInfoTimer(Sender: TObject);
procedure ROBroadcastChannelBroadCastResponseReceived(aServerIP, aResponseUID: string);
procedure FormDestroy(Sender: TObject);
private
fChatProxy: IBroadcastChatService_Async;
public
{$IFDEF VER140}
procedure WMUser(var Msg: TMessage); message WM_USER;
{$ENDIF}
procedure MessageReceived(iDate: TDateTime; const iFrom, iMessage: string);
end;
var
BroadcastChatMainForm: TBroadcastChatMainForm;
implementation
uses
IdStack, IdGlobal, BroadcastChatService_Impl;
{$R *.dfm}
{$IFDEF RemObjects_INDY8}
function IndyGetHostName: string;
var
i: LongWord;
begin
SetLength(Result, MAX_COMPUTERNAME_LENGTH + 1);
i := Length(Result);
if GetComputerName(@Result[1], i) then begin
SetLength(Result, i);
end;
end;
{$ENDIF}
procedure TBroadcastChatMainForm.FormCreate(Sender: TObject);
begin
fChatProxy := CoBroadcastChatService_Async.Create(ROBINMessage, ROBroadcastChannel);
{$IFDEF RemObjects_INDY10}
ed_NickName.Text := GStack.HostName;
{$ELSE}
ed_NickName.Text := IndyGetHostName;
{$ENDIF}
end;
procedure TBroadcastChatMainForm.MessageReceived(iDate: TDateTime; const iFrom, iMessage: string);
begin
ed_Chat.Lines.Add(Format('[%s] <%s> %s', [TimeToStr(iDate), iFrom, iMessage]));
end;
procedure TBroadcastChatMainForm.ac_SendMessageExecute(Sender: TObject);
begin
if ed_Message.Text <> '' then begin
fChatProxy.Invoke_SendMessage(Now, ed_NickName.Text, ed_Message.Text);
ed_Message.Text := '';
ActiveControl := ed_Message;
end;
end;
procedure TBroadcastChatMainForm.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
begin
ac_SendMessage.Enabled := ed_Message.Text <> '';
end;
procedure TBroadcastChatMainForm.BitBtn1Click(Sender: TObject);
begin
fChatProxy.Invoke_GetInfo();
end;
procedure TBroadcastChatMainForm.ROBroadcastChannelBroadCastResponseReceived(aServerIP, aResponseUID: string);
var
lName: string;
begin
lName := fChatProxy.Retrieve_GetInfo();
ed_Chat.Lines.Add(Format('[%s] chat user: %s (at %s)', [TimeToStr(Now), lName, aServerIP]));
end;
procedure TBroadcastChatMainForm.FormDestroy(Sender: TObject);
begin
fChatProxy := nil;
end;
{$IFDEF VER140}
procedure TBroadcastChatMainForm.WMUser(var Msg: TMessage);
begin
TBroadcastChatService(Msg.WParam).MessageReceived;
end;
{$ENDIF}
end.