After spending an hour reviewing framework code I settled for this override in CheckBox:
 
   mx_internal override function layoutContents(unscaledWidth:Number,
             unscaledHeight:Number,
             offset:Boolean):void
     {
      super.layoutContents(unscaledWidth, unscaledHeight, offset);
      if (!label)
       switch (getStyle("textAlign")) {
        case "center": 
         currentIcon.x = ( unscaledWidth - currentIcon.width)/2  ;
         break
       }
     }
 
If anyone from Adobe is watching, that would make sensible enhancement request for standard CheckBox behavior . It might need to be bundled with style update request for set label. Other option would be to add labelPlacement = "none" as a reasonable case for buttons that do not have labels.
 
Thank you,
Anatole


 
On 7/15/06, Tim Hoff <[EMAIL PROTECTED]> wrote:

Nice and simple. Props.

-TH



--- In [email protected], "Jeremy Lu" <[EMAIL PROTECTED]> wrote:
>
> this is the snippet from my code library:
>
> package
> {
> import mx.containers.HBox;
> import mx.controls.CheckBox;
>
> public class CheckBox2 extends HBox{
>
> public function CheckBox2(){
> this.setStyle("horizontalAlign", "center");
> }
>
> var c: mx.controls.CheckBox;
>
> override protected function createChildren():void{
> c = new CheckBox();
> this.addChild( c );
> }
>
> override public function set data(item:Object):void {
>
> super.data = "">>
> if( item!=null ){
> c.selected = (item.Sent == 1)?true:false ;
> }
>
> }
>
>
> }
> }
>
> === mxml ===============
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml"
layout="absolute">
>
> <mx:Script>
> <![CDATA[
>
> [Bindable]
> public var myDP:Array = [
> {label1:"Order #2314", contact:"John Doe", quant:3,
solddate:new
> Date(2005, 0, 1), Sent:1},
> {label1:"Order #2315", contact:"Jane Doe", quant:3,
solddate:new
> Date(2005, 0, 5), Sent:0}];
> ]]>
> </mx:Script>
>
> <mx:DataGrid id="myDG" dataProvider="{myDP}"
variableRowHeight="true"
> width="500" height="250" editable="true">
> <mx:columns>
> <mx:DataGridColumn dataField="label1"
headerText="Order #"
> editable="false"/>
> <mx:DataGridColumn dataField="quant"
> headerText="Quantity"
> itemEditor="mx.controls.NumericStepper"
> editorDataField="value"/>
> <mx:DataGridColumn dataField="solddate"
> headerText="Date" itemRenderer=" mx.controls.DateField"
> rendererIsEditor="true" editorDataField="selectedDate"/>
>
> <mx:DataGridColumn itemRenderer="CheckBox2"
dataField="Sent"
> rendererIsEditor="true" editorDataField="data" />
>
>
> </mx:columns>
> </mx:DataGrid>
> </mx:Application>
>
> =========================
>
> things to note:
>
> 1. Using HBox (or any containers) inside item renderer is very
*expensive*
> (said Joan Tan from Adobe), which might be the cause for sluggish
scrolling
> of Datagrid.
>
> 2. Most of the time my item renderer are a composition of multiple
UI
> components, so I have to use Box or other kind of Containers.
>
> 3. Anatole's approach (using DataGridListData
(listData).dataField ) is more
> abstractive so that the renderer is generic enough for easy reuse
later, if
> you just need one single chechbox in there, that's the best way to
go
> (IMHO).
>


__._,_.___

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com





SPONSORED LINKS
Web site design development Computer software development Software design and development
Macromedia flex Software development best practice


YAHOO! GROUPS LINKS




__,_._,___

Reply via email to