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