Com este modelo de função abaixo funciona,

public static function cleanForm(form:Object) : void {
var itensdoFormulario:Array = form.getChildren();
 for (var i:int = 0; i <itensdoFormulario.length; i++){
 var formItem:Array = itensdoFormulario[i].getChildren();

  if(formItem[0] is TextInput || formItem[0] is TextArea){
  formItem[0].text = '';
  formItem[0].htmlText ='';
  }
  else if (formItem[0] is DateField){
  formItem[0].text = '';
  }

 }
}



mas se tenho mais de 1 campo na horizonal

<mx:FormItem label="Telefone:" direction="horizontal" required="true">
<mx:TextInput id="ddd1" text="{DataGrid.selectedItem.ddd1}"
maxChars="2" />
<mx:TextInput id="tel1" text="{DataGrid.selectedItem.tel1}"
maxChars="9" />
<mx:TextInput id="complemento_tel1"
text="{DataGrid.selectedItem.complemento_tel1}" maxChars="30" />
</mx:FormItem>


Só limpa o 1º campo

ALguem saberia me informar qual o processo para leitura dos demais
campos


Outra coisa

Na função o teste para verificar o tipo de campo é feito da seguinte
forma

if(formItem[0] is TextInput){


COmo eu dou um trace para exibir qual o tipo que o loop está passando

Pois se eu coloco somente

trace("formItem[0]: " + formItem[0]);

é apresentado o nome do campo

















On 27 jun, 14:23, hassan <[EMAIL PROTECTED]> wrote:
> Mario eu tentei reproduzir a função que vc forneceu mas está ocorrendo
> o seguinte erro "1120: Access of undefined property Container."
>
> e Não funciona a limpeza dos campos
>
> Estou chamando da seguinte forma
>
> cleanForm(Form_Dados);
>
> se eu coloco
>
> for each(var item:Object in itensdoFormulario) {
>
> trace("item: " + item);
> trace("item.text: " + item.text);
>
> Acontece o seguinte erro
>
> ReferenceError: Error #1069: Property text not found on
> mx.containers.FormItem and there is no default value.
>
> public static function cleanForm(form:Object) : void {
> var itensdoFormulario:Array = form.getChildren();
>  for each(var item:Object in itensdoFormulario) {
>   if (item is Container) {
>   cleanForm(item);
>   }
>   else{
>    if (item is TextInput || item is DateField || item is TextArea) {
>    item.text = ""
>    }
>   }
>  }
>
> }
>
> On 25 jun, 08:49, "Mário Júnior" <[EMAIL PROTECTED]> wrote:
>
> > Hum..... interessante.... eu fiz uma assim....
>
> > No meu caso, trabalho com Form padrão do flex, e se caso eu tiver algum
> > container dentro de um FormItem, a função chama a si mesma passando o
> > container como argumento. Por isso o argumento é um Object (poderia ser um
> > Container... alterem se quiser)
>
> > Lembrando que todo container do Flex já extends da classe Container.as que,
> > por sua vez, implementa a interface IContainer. Graças ao conceito de
> > herança e poliformismo é possível descobrir facilmente quem é um container
> > ou não.
>
> > Dessa forma, posso ter infinito níveis de hierarquia de containers dentro do
> > form.
>
> >          /**
> >          * Limpa os campos de um formulário
> >          */
> >          public static function cleanForm(form:Object) : void {
> >              //pega um arrays de filhos do Container...
> >               var itensdoFormulario:Array = form.getChildren();
>
> >              // para cada filho ...
> >              for each(var item:Object in itensdoFormulario) {
> >                  //... se for um outro container
> >                  if (item is Container) {
> >                      //chama a função novamente passando o filho como
> > argumento...
> >                      cleanForm(item);
> >                  } else { //senão é container, então é um objeto conhecido
> >                      //aqui estou limapando alguns campos... gostei da idéia
> > do switch, pode ser interessante, alterem se quiser....
> >                      if (item is TextInput ||
> >                          item is DateField ||
> >                          item is TextArea) {
> >                           item.text = "";//limpa a propriedade 'text' do
> > objeto conhecido
> >                       }
> >                  }
> >              }
> >           }
>
> > Fim.
>
> > Esse método faz parte do EloUtils, e por ser estático eu o chamo da seguinte
> > forma:
> > EloUtils.cleanForm(<id_do_form>) // pode ser aplicado encima de qualquer
> > container.
>
> > Abraços
>
> > Mario Junior
>
> > --
> > Mário de Souza Júnior
> > Programador Java / Flex : AS3 / PHP
> > (44) 4009-3550 Maringá-PRhttp://blog.mariojunior.com
> > [EMAIL PROTECTED] (gtalk, msn, etc..)
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a