Os meus dbedit's e outros estão dentro de um panel.

Fiz o teste da função assim:

panel.setfocus;
validaCampo(dataset);
tabela.post;


Funcionou direitinho....


  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de Rubem Rocha
  Enviada em: terça-feira, 26 de abril de 2005 13:47
  Para: delphi-br@yahoogrupos.com.br
  Assunto: RES: [delphi-br] Validar campos em um form (Contribuindo :-))
  Prioridade: Alta


  Mas precisa se ter uma certa atenção ao usar essa função caso o controle
data-aware do campo esteja dentro de um container (TPanel, TScrollBox,
TTabSheet, etc.) ou se o campo está sendo editado/visualizado em um TDBGrid.
Nesses cassos, o método FocusControl de objetos derivados de TField não
funciona 100%!

  []s

  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Eduardo Silva ®
  Enviada em: terça-feira, 26 de abril de 2005 12:43
  Para: delphi-br@yahoogrupos.com.br
  Assunto: RES: [delphi-br] Validar campos em um form (Contribuindo :-))



  Cara a sua rotina funcionou direitinho...

  Obrigado.
    -----Mensagem original-----
    De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
  nome de Marcelo Silva
    Enviada em: terça-feira, 26 de abril de 2005 11:54
    Para: delphi-br@yahoogrupos.com.br
    Assunto: Re: [delphi-br] Validar campos em um form (Contribuindo :-))


    Colega esquece tudo o que viu e usa essa simples procedure que criei e
veja se funciona aí...


    procedure ValidaCampo(dts: TIBDataSet);
    var
      i: Integer;
    begin
      for i:=0 to dts.FieldCount-1 do begin
        if ((dts.Fields.Fields[i].Required)and(dts.Fields.Fields[i].IsNull))
  then begin
          ShowMessage('O Campo '+dts.Fields.Fields[i].DisplayLabel+' é
requerido');
          dts.Fields.Fields[i].FocusControl;
          Abort;
        end;
      end;
    end;


    Exemplo de uso:

    // Antes de validar jogue o fóco para um componente neutro (uma toolbar
ou um GroupBox sei lá...)
    ToolBar1.SetFocus; // Veja item 5
    ValidaCampo(SeuDataSet);


    Algumas recomendações:

    1- Onde está TIBDataSet é o seu tipo de DataSet, no meu caso estou
usando da palheta Interbase então a classe é TIB...
    2- A sequencia de mensagem está assossiada a posição do campos no
lisfield do dataset então este deve estar na sequencia que quer... o que é
simples ... é só arrastar o campo na posição desejada na lista.
    3- Esta procedure deve ser usada antes do post do referido dataset...
    4- Esta procedure pode ser colocada em uma Unit publica de funçoes desta
forma ser reutilizada quando quiser.
    5- Lembre-se de que um campo só é considerado o seu valor quando este
perde o fóco (o que faz sentido)


    Explicando:
    O que estamos fazendo aqui é verificar se existem campos requeridos no
DataSet indicado e se esses estão vazios.


    Marcelo Silva
    Cel. 11 9693-4251
    ICQ - 49224093
    MSN [EMAIL PROTECTED]



    ----- Original Message -----
    From: Rubem Rocha
    To: delphi-br@yahoogrupos.com.br
    Sent: Tuesday, April 26, 2005 11:33 AM
    Subject: RES: [delphi-br] Validar campos em um form


    O que acontece com essa rotina? Qual a mensagem de erro que ocorre?
    []s

    -----Mensagem original-----
    De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
Em nome de Eduardo Silva ®
    Enviada em: terça-feira, 26 de abril de 2005 09:18
    Para: Grupo Delhpi-br
    Assunto: [delphi-br] Validar campos em um form



    Galera tenho a função abaixo para fazer a validação e destacar os campos
obrigatórios em um form.

    Essa função foi passada em um número da revista Clube Delphi que eu não
me lembro, mas ela não está funcionando.

    Alguém poderia me dar uma mão e ver o que está errado ?

    Obrigado.

    function Valida(F: TForm): boolean;
    var
       i   : integer;
       lbl : TLabel;
       ds  : TDataSource;
       fn  : string;
       c   : TObject;
    begin
       for i := 0 to F.ComponentCount - 1 do
       begin
          if F.Components[i] is TLabel then
             lbl := F.Components[i] as TLabel;
          lbl.Font.Color := clWindowText;
          lbl.Font.Style := [];
          if lbl.FocusControl <> nil then
          begin
             c := lbl.FocusControl;
             {Declare TypInfo no uses}
             if IsPublishedProp(c,'DataSource') then
             begin
                ds := TDataSource(GetObjectProp(c,'DataSource'));
                if IsPublishedProp(c,'DataField') then
                begin
                   fn := GetStrProp(c,'DataField');
                   if ds.DataSet.FieldByName(fn).Required then
                      if ds.DataSet.FieldByName(fn).IsNull then
                      begin
                         lbl.Font.Style := [fsBold];
                         lbl.Font.Color := clRed;
                      end;
                end;
             end;
          end;
       end;
    end;

                        ~\\|//~
                        -(o o)-
o--------------oOOOo--(_)--oOOOo-------------o
    |                                            |
    |           Eduardo de Almeida Silva         |
    |               Kobra Sistemas               |
    |  [EMAIL PROTECTED]  -   (14)3263-0326   |
    |                                            |
    |                .oooO   Oooo.               |
    o----------------(   )---(   )---------------o
                      \ (     ) /
                       \_)   (_/



    --
    <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

    Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

    Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]

    Links do Yahoo! Grupos









    --
    No virus found in this incoming message.
    Checked by AVG Anti-Virus.
    Version: 7.0.308 / Virus Database: 266.10.3 - Release Date: 25/04/2005


    --
    No virus found in this outgoing message.
    Checked by AVG Anti-Virus.
    Version: 7.0.308 / Virus Database: 266.10.3 - Release Date: 25/04/2005



*************************************************************************

    Esta mensagem, incluindo os seus anexos, contém informações
confidenciais destinadas a indivíduo e propósito específicos, e é protegida
por lei. Caso você não seja o citado indivíduo, deve apagá-la imediatamente.
É terminantemente proibida a utilização, acesso, cópia ou divulgação não
autorizada das informações presentes neste email.  As informações contidas
nesta mensagem e em seus anexos são de responsabilidade de seu autor, não
representando idéias, opiniões, pensamentos ou qualquer forma de
posicionamento por parte da Fundação Desembargador Paulo Feitoza.



    The information contained in this communication is confidential, is law
protected, and is intended only for the business use of the addressee. If
you have received this communication in error, please immediately delete it.
It's forbidden the unauthorized use, access, copy or disclose of the
information contained in this communication.  The content of this message is
responsibility of the author, and does not represent ideas, opinions,
thoughts or any kind of statement of Fundação Desembargador Paulo Feitoza.



    --
    <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

    Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

    Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED] ou [EMAIL PROTECTED]



    Yahoo! Grupos, um serviço oferecido por:
    PUBLICIDADE





    Links do Yahoo! Grupos

    Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

    Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

    O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço
do Yahoo!.





    Internal Virus Database is out-of-date.
    Checked by AVG Anti-Virus.
    Version: 7.0.308 / Virus Database: 266.9.18 - Release Date: 19/04/2005
      ----------

    Internal Virus Database is out-of-date.
    Checked by AVG Anti-Virus.
    Version: 7.0.308 / Virus Database: 266.9.18 - Release Date: 19/04/2005


    [As partes desta mensagem que não continham texto foram removidas]



    --
    <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

    Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

    Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED] ou [EMAIL PROTECTED]



          Yahoo! Grupos, um serviço oferecido por:

                      São Paulo Rio de Janeiro Curitiba Porto Alegre Belo
Horizonte Brasília




  --------------------------------------------------------------------------
--
  --
    Links do Yahoo! Grupos

      a.. Para visitar o site do seu grupo na web, acesse:
      http://br.groups.yahoo.com/group/delphi-br/

      b.. Para sair deste grupo, envie um e-mail para:
      [EMAIL PROTECTED]

      c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do Yahoo!.



  [As partes desta mensagem que não continham texto foram removidas]



  --
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:  [EMAIL PROTECTED]
ou [EMAIL PROTECTED]

  Links do Yahoo! Grupos









  --
  No virus found in this incoming message.
  Checked by AVG Anti-Virus.
  Version: 7.0.308 / Virus Database: 266.10.3 - Release Date: 25/04/2005


  --
  No virus found in this outgoing message.
  Checked by AVG Anti-Virus.
  Version: 7.0.308 / Virus Database: 266.10.3 - Release Date: 25/04/2005



  --
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



        Yahoo! Grupos, um serviço oferecido por:

                    São Paulo Rio de Janeiro Curitiba Porto Alegre Belo
Horizonte Brasília




----------------------------------------------------------------------------
--
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do Yahoo!.



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a