Con respecto al log te sugiero ir a lo más simple:
En el DataModule principal o en una unidad compartida por toda la aplicación creas una función que guarde en un fichero lo que le envíes.
Yo lo tengo así en un DataModule principal. Te crea un fichero .log con el mismo nombre que la aplicación.
Código Delphi
[-]
procedure TDMMain.Log(s: string);
{$IFDEF Debug}
var
F : TextFile;
FileName : string;
{$ENDIF}
begin
{$IFDEF Debug}
FileName := ChangeFileExt(Application.ExeName, '.log');
AssignFile(F, FileName);
try
Append(F);
except
try
Rewrite(F);
except
on e: Exception do
ShowMessage('Error al abrir fichero : ' + FileName + #13#10 + e.Message);
end;
end;
WriteLn(F, FormatDatetime('[yyyy-mm-dd hh:nn:ss.zzz] ', Now) + s);
CloseFile(F);
{$ENDIF}
end;
Luego en los formularios, en cualquier sitio puedes poner cosas como estas:
Código Delphi
[-]
procedure TFMPrincipal.FormCreate(Sender: TObject);
begin
inherited;
DMMain.Log('FormCreate - ' + Self.Name);
end;
Código Delphi
[-]
procedure TFMPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action = caFree;
DMMain.Log('FormClose - ' + Self.Name);
end;
Código Delphi
[-]
procedure TFMain.AArticulosExecute(Sender: TObject);
begin
DMMain.Log('Accion - Abrir formulario de articulos');
[...]
end;