Cadastre-se Revistas DevMedia Cursos
 

  DevMedia Spaces
  Resumo de FABIO ALVES FRANCELINO
Busca autor:


Últimos 50 comentários: (clique aqui para ver todos os comentários)
1 - 10/7/2012 09:22 - ClubeDelphi - Criação de Componentes
WESLEY YAMAZACK Olá Levy, infelizmente não temos mais este link por se tratar de um post bem antigo, na época houve uma falha no FTP.

Tentamos contato com o autor, porém o e-mail cadastrado não está mais ativo.

Um abraço e até mais
Responder
2 - 9/7/2012 15:35 - ClubeDelphi - Criação de Componentes
Levy Moreira O link para download esta quebrado. Responder
3 - 25/4/2012 09:32 - ClubeDelphi - Artigo Clube Delphi 58 - Games
lucas souza de carvalho Matéria sensacional! Obrigado por compartilhar conosco. Responder
4 - 28/12/2011 00:16 - ClubeDelphi - Criação de Componentes
Luis Carlos Godinho Olá Jose!

Acompanhando o artigo, detectei 1 problema na criação do componente:

procedure Register;

implementation

//uses untExGuiErrorDialog;
uses untGuiExErrorDialog;

procedure Register;
begin
RegisterComponents('ExControls', [TExErrorDialog]);

end;

Observe que o nome da unit declarada na uses esta diferente do nome sugerido no artigo. Apos esta correção consegui compilar e instalar o componente.

Já no código do teste do componente notei que o código faz referencia ao registro "ErrConvert" que não esta declarado no componente e na sequencia tem o comentário que esta como <- e o correto e estar como // veja exemplo:

Errado
ErrorSource := 'cmdRunTimeClick';
ErrorMsgUser := ErrConvert; <- constante
ErrorMsgSys := 'X is not a valid integer value.';

Correto
ErrorSource := 'cmdRunTimeClick';
ErrorMsgUser := ErrorCode; // constante
ErrorMsgSys := 'X is not a valid integer value.';

Abs.!
Responder
5 - 27/12/2011 10:21 - ClubeDelphi - Criação de Componentes
JOSE BISPO SANTOS Estou com problema para compilar esse projeto aparece os seguintes erros:
[Error] untGuiExErrorDialog.pas(23): Undeclared identifier: 'TErrorInfo'
[Error] untGuiExErrorDialog.pas(46): Undeclared identifier: 'ErrorType'
[Error] untGuiExErrorDialog.pas(100): Undeclared identifier: 'ErrorMsgUser'
[Error] untGuiExErrorDialog.pas(104): Undeclared identifier: 'ErrorCode'
[Error] untGuiExErrorDialog.pas(106): Undeclared identifier: 'ErrorSource'
[Error] untGuiExErrorDialog.pas(106): Incompatible types: 'String' and 'Integer'
[Error] untGuiExErrorDialog.pas(108): Undeclared identifier: 'ErrorClass'
[Error] untGuiExErrorDialog.pas(108): Incompatible types: 'String' and 'Integer'
[Error] untGuiExErrorDialog.pas(110): Undeclared identifier: 'ErrorMethod'
[Error] untGuiExErrorDialog.pas(110): Incompatible types: 'String' and 'Integer'
[Error] untGuiExErrorDialog.pas(112): Undeclared identifier: 'ErrorMsgSys'
[Error] untGuiExErrorDialog.pas(112): Incompatible types: 'String' and 'Integer'
[Fatal Error] ExErrorDialog.pas(154): Could not compile used unit 'untGuiExErrorDialog.pas'
[Fatal Error] untGuiExErrorDialog.pas(33): Could not compile used unit 'C:\Sistoque\DialogoErro\ExErrorDialog.pas'


Código do Projeto

unit ExErrorDialog;

interface


uses Windows, Messages, SysUtils, Classes, Forms;



type

{ Tipos de Erro }

TErrorType = (etNone = 0, etRunTime = 1, etSQL = 2,

etValidation = 3, etLogic = 4);

{ Status do Erro }

TErrorStatus = (esNone = 0, esFatal = 1,

esNormal = 2);

{Tipo de Erro}

TErrorInfo = record

ErrorStatus: TErrorStatus;

ErrorType: TErrorType;

ErrorSource: string;

ErrorMsgUser: string;

ErrorMsgSys: string;

ErrorClass: string;

ErrorMethod: string;

ErrorCode: string;

end;



{ Componente de Erro }

TExErrorDialog = class(TComponent)

private
FErrorInfo: TErrorInfo;

FErrorStatus: TErrorStatus;

FErrorType: TErrorType;

FErrorSource: string;

FErrorMsgUser: string;

FErrorMsgSys: string;

FErrorClass: string;

FErrorMethod: string;

FErrorCode: string;

FShowDetail: Boolean;

FClearAfterShow: Boolean;

FOnBeforeShow: TNotifyEvent;

FOnAfterShow: TNotifyEvent;

procedure SetErrorInfoValues();

procedure SetErrorPropValues();

protected

public

procedure Clear();

procedure ShowErrorMsg(); overload;

procedure ShowErrorMsg(const pErrorInfo: TErrorInfo); overload;

published

property ErrorStatus: TErrorStatus

read FErrorStatus write FErrorStatus;

property ErrorType: TErrorType

read FErrorType write FErrorType;

property ErrorSource: string

read FErrorSource write FErrorSource;

property ErrorMsgUser: string

read FErrorMsgUser write FErrorMsgUser;

property ErrorMsgSys: string

read FErrorMsgSys write FErrorMsgSys;

property ErrorClass: string

read FErrorClass write FErrorClass;

property ErrorMethod: string

read FErrorMethod write FErrorMethod;

property ErrorCode: string

read FErrorCode write FErrorCode;

property ShowDetail: Boolean

read FShowDetail write FShowDetail;

property ClearAfterShow: Boolean

read FClearAfterShow write FClearAfterShow;

property OnBeforeShow: TNotifyEvent

read FOnBeforeShow write FOnBeforeShow;

property OnAfterShow: TNotifyEvent

read FOnAfterShow write FOnAfterShow;

end;



procedure Register;



implementation


uses untGuiExErrorDialog;



procedure Register;

begin
RegisterComponents('ExControls', [TExErrorDialog]);

end;



{ Mostra a mensagem passando os parametros internos }

procedure TExErrorDialog.ShowErrorMsg();

begin

{ Sincroniza as propriedades com o record }

SetErrorInfoValues;

{ Chama a rotina }

ShowErrorMsg(FErrorInfo);

end;



{ Mostra a mensagem passando os parametros

de pErrorInfo }

procedure TExErrorDialog.ShowErrorMsg(const pErrorInfo: TErrorInfo);

begin
{ Cria o formulario }

frmExGuiErrorDialog :=

TfrmExGuiErrorDialog.Create(Self);

FErrorInfo := pErrorInfo;

frmExGuiErrorDialog.SetFieldValue(pErrorInfo);

{ Sincroniza o record com as propriedades }

SetErrorPropValues;

{ Verifica e dispara o evento }

if Assigned(FOnBeforeShow) then

FOnBeforeShow(Self);

{ Seta o valor da propriedade ShowDetail }

frmExGuiErrorDialog.cmdDetalhes.Visible := FShowDetail;

{ Mostra o form Modal }

frmExGuiErrorDialog.ShowModal;

if Assigned(FOnAfterShow) then

FOnAfterShow(Self);

{ Verifica e limpa os parametros }

if FClearAfterShow then

Clear();

{ Libera a memória }

frmExGuiErrorDialog.Free;

frmExGuiErrorDialog := nil;

end;



{ Seta as propriedades internas do record }

procedure TExErrorDialog.SetErrorInfoValues();

begin

{ Seta as propriedades do record }

FErrorInfo.ErrorType := FErrorType;

FErrorInfo.ErrorStatus := FErrorStatus;

FErrorInfo.ErrorSource := FErrorSource;

FErrorInfo.ErrorMsgUser := FErrorMsgUser;

FErrorInfo.ErrorMsgSys := FErrorMsgSys;

FErrorInfo.ErrorClass := FErrorClass;

FErrorInfo.ErrorMethod := FErrorMethod;

FErrorInfo.ErrorCode := FErrorCode;

end;



{ Seta as propriedades internas do componente }

procedure TExErrorDialog.SetErrorPropValues();

begin

{ Seta as propriedades do record }

FErrorType := FErrorInfo.ErrorType;

FErrorStatus := FErrorInfo.ErrorStatus;

FErrorSource := FErrorInfo.ErrorSource;

FErrorMsgUser := FErrorInfo.ErrorMsgUser;

FErrorMsgSys := FErrorInfo.ErrorMsgSys;

FErrorClass := FErrorInfo.ErrorClass;

FErrorMethod := FErrorInfo.ErrorMethod;

FErrorCode := FErrorInfo.ErrorCode;

end;



{ Limpa todas as propriedades internas }

procedure TExErrorDialog.Clear();

begin

{ Limpa as propriedades do record }

with FErrorInfo do

begin

ErrorType := etNone;

ErrorStatus := esNone;

ErrorSource := EmptyStr;

ErrorMsgUser := EmptyStr;

ErrorMsgSys := EmptyStr;

ErrorClass := EmptyStr;

ErrorMethod := EmptyStr;

ErrorCode := EmptyStr;

end;

{ Limpa as propriedades publicas }

ErrorType := etNone;

ErrorStatus := esNone;

ErrorSource := EmptyStr;

ErrorMsgUser := EmptyStr;

ErrorMsgSys := EmptyStr;

ErrorClass := EmptyStr;

ErrorMethod := EmptyStr;

ErrorCode := EmptyStr;

end;
end.


unit untGuiExErrorDialog;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TfrmExGuiErrorDialog = class(TForm)
txtErrorDescription: TMemo;
imgValidation: TImage;
imgLogic: TImage;
imgInformation: TImage;
imgRunTime: TImage;
lblErrMsg: TStaticText;
cmdDetalhes: TButton;
cmdOk: TButton;
private
{ Private declarations }
public
{ Public declarations }
procedure SetFieldValue(const pErrorInfo: TErrorInfo);


end;

var
frmExGuiErrorDialog: TfrmExGuiErrorDialog;

implementation

uses ExErrorDialog;

{$R *.dfm}
procedure TfrmExGuiErrorDialog.SetFieldValue(const pErrorInfo: TErrorInfo);

begin

with pErrorInfo do

begin

{ Verifica qual o tipo de erro }

case ErrorType of

etNone:

begin

Caption := 'Tipo de Erro Desconhecido.';

imgRunTime.Visible := True;

end;

etValidation:

begin

Caption := 'Erro de Validação.';

imgValidation.Visible := True;

end;

etSQL:

begin

Caption := 'Erro de Comando SQL.';

imgRunTime.Visible := True;

end;

etRunTime:

begin

Caption := 'Erro de Run-Time.';

imgRunTime.Visible := True;

end;

etLogic:

begin

Caption := 'Erro de Lógica de Programação.';

imgLogic.Visible := True;

end;

end;

lblErrMsg.Caption := ErrorMsgUser;

txtErrorDescription.Text :=

'Code: ' + ErrorCode + #13#10 +

'Source: ' + ErrorSource + #13#10 +

'Class: ' + ErrorClass + #13#10 +

'Method: ' + ErrorMethod + #13#10 +

'Description: ' + ErrorMsgSys;

end;

end;


end.

Responder

Últimas atualizações deste autor:
.: 31/10/2005 - ClubeDelphi - Criação de Componentes
Veja neste artigo de Fabio Francelino, como criar um componente para rastrear erros.
Sobre o autor
Fabio Alves Francelino (francelino@mackenzie.com.br) é Analista de Sistemas formado pela Universidade Presbiteriana Mackenzie. Trabalha com ADO e DataSnap em projetos cliente/servidor e multicamadas, desenvolve componentes e jogos para Delphi.
Estatísticas do Autor:
Número de posts: 8
Características dos posts deste autor:
Conteúdo:
Utilidade:
2 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group