Ver Mensaje Individual
  #4  
Antiguo 29-02-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Podrías usar RTTI, por ejemplo:
Código Delphi [-]
unit uException;

interface

uses SysUtils;

type
  TAppExceptHandler = class(TObject)
  public
    procedure Handle(Sender: TObject; E: Exception);
  end;

var
  AppExceptHandler: TAppExceptHandler;

implementation

uses TypInfo, Dialogs;

procedure TAppExceptHandler.Handle(Sender: TObject; E: Exception);
var
  Ptd: PTypeData;
begin
  Ptd := GetTypeData(Sender.ClassInfo);
  if Assigned(Ptd) then
    ShowMessage(Format('Se produjo un error en %s%s%s',[Ptd^.UnitName, #10, E.Message]))
  else
    //...
  ;
end;
end.

Código Delphi [-]
program Project1;

uses
  Forms,
  uException in 'uException.pas',
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin
  Application.OnException := AppExceptHandler.Handle;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Forzar errores en distintas unidades :
Código Delphi [-]
unit Unit1;
...
type
  TForm1 = class(TForm)
    Button1: TButton;   
    Button2: TButton;
    Button3: TButton; 
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
...
  
implementation

uses Unit2, Unit3;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Visible := False;
  Edit1.SetFocus;  // Asignar foco a ctrl invisible
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Self); // TStrings.LoadFromFile
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Form3 := TForm3.Create(Self); // ADOQuery sin configurar
end;

...

Resultado:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita