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
public
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
public
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