Ver Mensaje Individual
  #1  
Antiguo 06-01-2013
dario61081 dario61081 is offline
Registrado
 
Registrado: abr 2007
Posts: 6
Reputación: 0
dario61081 Va por buen camino
Talking Monitor de eventos usando una clase

Buenas colegas. aqui tengo otra experiencia que quiero compartir con ustedes.

Para la mayoria de mis proyectos, necesito hacer un monitoreo de los eventos que sucede durante la ejecución. de esta forma puedo depurar mas los errores encontrados.

En esta oportunidad, mi clase monitoreo para ustedes.

Código Delphi [-]
type
  TMonitorLog = class
  private
    Fventana: tmemo;
    Fbolsa: tstringlist;
    procedure Setventana(const value: tmemo);
  public
    constructor create; overload;
    destructor destroy; overload;
    procedure evento(msg: string); // registrar un evento
    procedure volcar(archivo: string = '.\logs\eventos.log');
    property ventana: tmemo read Fventana write Setventana;
  end;

implements

{ TMonitor }

constructor TMonitorLog.create;
begin
  inherited;
  Fbolsa := tstringlist.create;
  Fbolsa.Add('Eventos: ' + datetimetostr(now));
end;

destructor TMonitorLog.destroy;
begin
  // self.volcar; //activar para un volcado a su destruccion.
  Fbolsa.Free; // liberar bolsa
  inherited;
end;

procedure TMonitorLog.evento(msg: string);
begin
  if assigned(Fventana) then
  begin
    Fventana.Lines.Add(msg);
    Fventana.Perform(EM_SCROLLCARET, SB_PAGEDOWN, 0);
    // auto deslise de la ventana
  end;
  Fbolsa.Add(msg);
end;

procedure TMonitorLog.Setventana(const value: tmemo);
begin
  Fventana := value;
  Fventana.Lines.Clear;
  Fventana.Lines.Add('Monitor de eventos: listo');
  fventana.ScrollBars := ssVertical;
end;

procedure TMonitorLog.volcar(archivo: string);
begin

  Fbolsa.SaveToFile(archivo);
  Fbolsa.Add('volcado ok');
  if assigned(Fventana) then
    Fventana.Lines.Add('volcado ok');

end;

Desde ya, gracias por la atencion.

saludos cordiales.
Responder Con Cita