Tonussi, com essa solução não preciso adicionar componentes no createComplete nem no createChildren. Só adiciono os componentes normalmente no mxml.
Skin para o form padrão: <?xml version="1.0" encoding="utf-8"?> <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5" xmlns:components="ux.components.*" > <fx:Metadata>[HostComponent("ux.components.portal.content.FormContent")]</fx:Metadata> <s:states> <s:State name="normal" /> <s:State name="disabled" /> </s:states> <s:Rect id="background" left="0" right="0" top="0" bottom="0"> <s:fill> <s:SolidColor id="bgFill" color="#E7EBEF"/> </s:fill> </s:Rect> <s:HGroup id="controlBar" verticalAlign="middle" horizontalAlign="right" height="43" width="100%" bottom="0" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" > <components:ButtonCancel id="cancelButton" label="Cancelar" height="30" minWidth="100" icon="@Embed('assets/images/icon_cancel.png')" /> <components:ButtonSave id="saveButton" label="Salvar" height="30" minWidth="100" icon="@Embed('assets/images/icon_save.png')" /> </s:HGroup> </s:Skin> AS do form: package ux.components.portal.content { import flash.events.MouseEvent; import flash.sampler.NewObjectSample; import spark.components.Button; import spark.components.SkinnableContainer; import ux.components.ButtonCancel; import ux.components.ButtonSave; import ux.components.portal.content.events.FormContentEvent; import ux.components.skin.FormContentSkin; [Event(name="saveClick", type="ux.components.portal.content.events.FormContentEvent")] public class FormContent extends Content { public function FormContent() { super(); this.setStyle("skinClass", FormContentSkin); } [SkinPart] public var saveButton:ButtonSave; [SkinPart] public var cancelButton:ButtonCancel; private function cancelButton_clickHandler(event:MouseEvent):void { ManagerContent.manager.close(this); } private function saveButton_clickHandler(event:MouseEvent):void { dispatchEvent(new FormContentEvent(FormContentEvent.SAVE_CLICK)); } override protected function partAdded(partName:String, instance:Object):void { super.partAdded(partName, instance); if (instance == cancelButton) cancelButton.addEventListener(MouseEvent.CLICK, cancelButton_clickHandler, false, -1, true); if(instance == saveButton) saveButton.addEventListener(MouseEvent.CLICK, saveButton_clickHandler, false, -1, true); } } } Componente MXML: <?xml version="1.0" encoding="utf-8"?> <content:FormContent xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:content="ux.components.portal.content.*" title="Cadastro de embalagem" saveClick="saveClickHandler(event)" onTransferData="onTransferDataHandler(event)" openModal="true" creationComplete="creationCompleteHandler(event)" > <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.ResultEvent; import neo.supportpackage.Packaging; import core.message.Message; import core.utilities.CommonUtils; import ux.components.portal.content.ManagerContent; import ux.components.portal.content.events.FormContentEvent; import ux.events.Event; [Bindable] public var _embalagem:Packaging; public function clearFields():void{ _embalagem = new Packaging(); } protected function onTransferDataHandler(event:ux.events.Event):void { _embalagem = event.source as Packaging; } protected function saveClickHandler(event:FormContentEvent):void { if(CommonUtils.isNotNull(_embalagem.databaseId)){ update(); return; } remote.save(_embalagem); } private function update():void{ remote.update(_embalagem); } protected function saveOrUpdate_resultHandler(event:ResultEvent):void { ManagerContent.manager.close(this); Message.success("Salvo com sucesso"); } protected function creationCompleteHandler(event:FlexEvent):void { txtName.setFocus(); } ]]> </fx:Script> <fx:Declarations> <pc:RemoteObject id="remote" destination="supportPackaging"> <pc:operations> <pc:Operation name="update" result="saveOrUpdate_resultHandler(event)"/> <pc:Operation name="save" result="saveOrUpdate_resultHandler(event)"/> </pc:operations> </pc:RemoteObject> </fx:Declarations> <pc:Form> <s:FormItem label="Nome" width="100%"> <pc:TextInput text="@{_embalagem.name}" width="250" id="txtName"/> </s:FormItem> </pc:Form> </content:FormContent> Em 23 de março de 2012 15:43, Tonussi Eric <erictonu...@gmail.com> escreveu: > Agora fiquei curioso. Qual a solução com skinnable que você encontrou? > > -- > @Tonussi <http://twitter.com/tonussi> > tonussi.com > skype: erictonussi > > > > Em 23 de março de 2012 15:41, Fabrício Carvalho < > fabrycyocarva...@gmail.com> escreveu: > > Procure no Google sobre *SkinnableContainer. * >> >> Em 23 de março de 2012 15:37, Tonussi Eric <erictonu...@gmail.com>escreveu: >> >> Você pode adicionar o componente via AS no creationComplete. >>> -- >>> @Tonussi <http://twitter.com/tonussi> >>> tonussi.com >>> skype: erictonussi >>> >>> >>> >>> Em 23 de março de 2012 15:25, Dassayev Barbosa <jd.da...@gmail.com>escreveu: >>> >>> Boa tarde pessoal! >>>> >>>> Eu criei um componente chamado Cadastro.mxml que tem dois InputText e >>>> dois botões. Esse componente vai ser o meu componente de cadastro >>>> padrão. Ele terá alguns métodos de validação. Até ai tudo bem. Porém >>>> eu terei vários cadastros e em alguns deles eu preciso de mais campos >>>> que o cadastro padrão. Quando eu criou um outro componente herdando do >>>> Cadastro.mxml (CadastroProduto.mxml, por exemplo) não é permitido >>>> adicionar outros componentes, como por exemplo um InputText, ou botão. >>>> >>>> Alguém sabe o que eu devo fazer para solucionar esse problema? >>>> >>>> Obrigado! >>>> >>>> -- >>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >>>> Para sair da lista, envie um email em branco para >>>> flexdev-unsubscr...@googlegroups.com >>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>> >>> >>> -- >>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >>> Para sair da lista, envie um email em branco para >>> flexdev-unsubscr...@googlegroups.com >>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>> >> >> >> >> -- >> Att, >> Fabrício >> >> -- >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >> Para sair da lista, envie um email em branco para >> flexdev-unsubscr...@googlegroups.com >> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >> > > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > -- Att, Fabrício -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev