[firebase-br] Rotina Tratamento Erro
Anderson Miranda Barrozo
andersonpaduarj em hotmail.com
Sáb Jun 16 16:38:47 -03 2007
Boa tarde,
Abaixo segue rotinas que criei para tratar erros antes do post:
SetFocusCampo, ValidaCampo.
A SetFocusCampo é uma extensao da ValidaCampo que tem por finalidade de
mudar o foco para o componente o qual seu valor nao pode ser branco. Ela
esta preparada para PageControl, isto é, varre todas as tabs procurando pelo
componente que esta em branco.
Ja a ValidaCampo é que realmente faz tudo. Recebe o parametro do
ClientDataSet e o número de Tabs no PageControl. Ela deve ser chamada no
evento BeforePost do ClientDataSet. Na realidade ela faz uma varedura no
TFild do ClientDataSet e procura por campos cujo a propriedade Tag e igual a
99 e verifica se o mesmo esta sem informação. Caso esteja apresenta a
menssagem personalizada e muda o foco para componente.
Para que tudo funcione basta chamar no evento BeforePost a rotina
VALIDACAMPO e passar os parametros. Setar o TFiel do ClientDataSet
Requerd=False e a Tag=99. Voce também deve mudar do DisplayLabel do TField
pois a menssagem personalizada pega este valor para apresentar ao usuario.
Bom, espero que ajude alguem que tem problemas de validacao antes do post.
Aceito críticas pois na realidade terminei agora.
Bom proveito....
procedure SetFocusCampo(Campo:string;TotalTab:Integer);
var i : integer;
Tab:Integer;
begin
for Tab := 1 to TotalTab do
Begin
for i := 1 to ComponentCount do
begin
if ActiveControl is TDBEdit then
if TDBEDIT(FindComponent(ActiveControl.Name)).DataField = Campo then
begin
ACTIVECONTROL.SetFocus;
exit;
end;
if ActiveControl is TDBComboBox then
if TDBComboBox(FindComponent(ActiveControl.Name)).DataField = Campo
then
begin
ACTIVECONTROL.SetFocus;
exit;
end;
Perform(WM_NEXTDLGCTL,0,0);
PG.TabIndex := Tab-1;
end;
end;
end;
Procedure ValidaCampo(ClientDataSet:TClientDataSet;TotalTab:integer);
var I : Integer;
begin
for I := 0 to ClientDataSet.Fields.Count -1 do
begin
If (ClientDataSet.Fields[I].Tag = 99) And (ClientDataSet.Fields[I].Text
= '') Then
begin
Showmessage('Informação não pode ser branco: [
'+ClientDataSet.Fields[I].DisplayLabel+' ]');
SetFocusCampo(ClientDataSet.Fields[I].FieldName,TotalTab);
Abort;
end;
end;
end;
procedure TCADCLI.CDSClienteBeforePost(DataSet: TDataSet);
begin
ValidaCampo(CDSCliente,2);
If dataset.State = dsinsert Then
CDSClienteCliCodigo.AsInteger := GeraCodigo('GEN_CODCLI');
end;
_________________________________________________________________
Mande torpedos SMS do seu messenger para o celular dos seus amigos
http://mobile.msn.com/
Mais detalhes sobre a lista de discussão lista