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

Responder a