Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar mensajes entre PC's (https://www.clubdelphi.com/foros/showthread.php?t=35628)

morta71 15-09-2006 22:24:28

Enviar mensajes entre PC's
 
Hola, soy nuevo en Delphi.

Estoy intentando realizar una pequeña aplicación y quiero incluir la posibilidad de enviar mensajes de un terminal a otro, sólo en la red interna, sin salir a Internet ni nada de eso.

No se trata de chatear, el propósito es que se visualice una ventana con el mensaje o que se active algún botón para visualizarlo tras finalizar la operación que se esté realizando.

¿Alguien me puede orientar o indicarmen algún componente que lo realice, (a ser posible libre)?:confused:

Gracias

luisgutierrezb 16-09-2006 00:37:21

en los demos de delphi hay uno que se llama winchat, hecho con los componentes de delphi, es chat, pero te sirve para saber como mandarlos, etc

morta71 18-09-2006 17:07:24

Gracias por tu anotación, me lo miraré con detenimiento.

;)

Caral 18-09-2006 17:17:39

Hola
Si Los mensajes se tienen que guardar necesitas incluir en tu base de datos una tabla con esta opcion, si necesitas saber como te lo indico, es realmente facil.
Saludos

morta71 18-09-2006 17:29:49

Hola Caral,

pues si pudieras esbozar un ejemplo simple te lo agradecería mucho, como ya dije, no estoy muy puesto en el tema.

Hice alguna aplicación con Paradox (4 tablas), ahora estoy intentando manejar Firebird.

Gracias

Caral 18-09-2006 17:34:18

La Base de datos que uses es lo de menos ya te indico como espera:

Caral 18-09-2006 18:02:50

1 Crea una tabla Mensajes.

Campos de la tabla mensajes:
CodMensaje Autonumerico
Origen texto
Destino texto
Mensaje memo
Fechaenvio fecha
Fechalectura fecha
Leido Si/NO

2 Crea una tabla usuarios

Campos de la tabla usuarios:
CodUsuario Numerico
Clave Texto
Nombre texto

3 Crea un From Nuevo: Envio Mensajes

Pon en este:
Nota: No se con que componente trabajes pero yo uso ADO.

1. AdoTable Mensajes
2 AdoTable Uuarios
Conectalos con las tablas y coloca:

1 DBEdit1 Origen
2 DBEdit2 FechaEnvio
3 DBMemo1 Mensaje
4 DBLookupComboBox1 Destino
5 Boton Enviar
6 Boton Cancelar

Codigo del primer from : Envio Mensajes
Código Delphi [-]
unit UFEnviaMsg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UDM1, DB, ADODB, StdCtrls, ComCtrls, Buttons, DBCtrls, Mask;

type
  TFEnviaMsg = class(TForm)
    Label1: TLabel;
    ATMensajes: TADOTable;
    ATUsuarios: TADOTable;
    DSClientes: TDataSource;
    DSUsuarios: TDataSource;
    ATMensajesCodMensaje: TIntegerField;
    ATMensajesorigen: TWideStringField;
    ATMensajesdestino: TWideStringField;
    ATMensajesmensaje: TMemoField;
    ATMensajesFechaEnvio: TDateTimeField;
    ATMensajesFechaLectura: TDateTimeField;
    ATMensajesLeido: TBooleanField;
    Label2: TLabel;
    DBEdit1: TDBEdit;
    Label3: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    DBMemo1: TDBMemo;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    AQtemp: TADOQuery;
    Label6: TLabel;
    ATUsuariosCodUsuario: TWideStringField;
    ATUsuariosNombre: TWideStringField;
    ATUsuariosClave: TWideStringField;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FEnviaMsg: TFEnviaMsg;

implementation

{$R *.dfm}

procedure TFEnviaMsg.FormCreate(Sender: TObject);
begin
   ATMensajes.Open;
   ATUsuarios.Open;
   ATMensajes.Insert;
   DBEdit1.Field.AsString := Usuario;
   DBEdit2.Field.AsDateTime := Now;
   
end;

procedure TFEnviaMsg.BitBtn2Click(Sender: TObject);
begin
   ATMensajes.Cancel;
   Close;
end;

procedure TFEnviaMsg.BitBtn1Click(Sender: TObject);
begin
   ATMensajes.Post;
   Close;
end;

end.
Si lo copias completo funciona.

4 Crea un From Nuevo: Leer Mensajes

Pon en este:

1 ADoTable Mensajes
Conectalo con la tabla.
2 DBEdit1 CodMensaje
3 DBEdit2 Origen
4 DBMemo Mensaje
5 DBEdit3 Fechaenvio
6 DBEdit4 Fechalectura
7 DBNavigator
8 CheckBox
9 Boton Cancelar

Codigo del segundo from : leer Mensajes

Código Delphi [-]
unit UFLeeMsg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UDM1, StdCtrls, ExtCtrls, DBCtrls, Buttons, DB, Mask, ADODB;

type
  TFLeeMsg = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    Label3: TLabel;
    DBEdit2: TDBEdit;
    DBMemo1: TDBMemo;
    Label6: TLabel;
    DBEdit4: TDBEdit;
    Label7: TLabel;
    DBEdit5: TDBEdit;
    BitBtn2: TBitBtn;
    DBNavigator1: TDBNavigator;
    CheckBox1: TCheckBox;
    AQMensajes: TADOQuery;
    AQMensajesCodMensaje: TAutoIncField;
    AQMensajesorigen: TWideStringField;
    AQMensajesdestino: TWideStringField;
    AQMensajesmensaje: TMemoField;
    AQMensajesFechaEnvio: TDateTimeField;
    AQMensajesFechaLectura: TDateTimeField;
    AQMensajesLeido: TBooleanField;
    Label4: TLabel;
    procedure CheckBox1Click(Sender: TObject);
    procedure AQMensajesAfterScroll(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FLeeMsg: TFLeeMsg;

implementation

{$R *.dfm}

procedure TFLeeMsg.CheckBox1Click(Sender: TObject);
begin
   If CheckBox1.Checked then AQMensajes.SQL.Text := 'Select * From Mensajes Where Destino = '+QuotedStr(Usuario)+' Order by CodMensaje Desc'
   else AQMensajes.SQL.Text := 'Select * From Mensajes Where Leido = False AND Destino = '+QuotedStr(Usuario)+' Order by CodMensaje Desc';
   AQMensajes.Close;
   AQMensajes.Open;
end;

procedure TFLeeMsg.AQMensajesAfterScroll(DataSet: TDataSet);
begin
   If (AQMensajesLeido.AsBoolean = False) AND (AQMensajes.RecordCount > 0) then
   Begin
      AQMensajes.Edit;
      AQMensajesLeido.AsBoolean := True;
      AQMensajesFechaLectura.AsDateTime := Now;
      AQMensajes.Post;
   end;
end;

procedure TFLeeMsg.FormCreate(Sender: TObject);
begin
   AQMensajes.SQL.Text := 'Select * From Mensajes Where Leido = False AND Destino = '+QuotedStr(Usuario)+' Order by CodMensaje Desc';
   AQMensajes.Open;
end;

procedure TFLeeMsg.BitBtn2Click(Sender: TObject);
begin
   Close;
end;

end.

Si copias estos completos y los ligas a tus tablas te funcionara.
Si tienes mas dudas me dices, pero este es el codigo completo.
Saludos

morta71 19-09-2006 14:47:08

Muchas gracias por tu ejemplo, intentaré ponerlo en marcha en ésta semana.

Gracias


La franja horaria es GMT +2. Ahora son las 06:44:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi