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
-~----------~----~----~----~------~----~------~--~---