The list classes set .visible on renderers as part of the recycling, so
we're overriding yours.

 

You should be able to set it in commitProperties or later.

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Scott - FastLane
Sent: Monday, September 17, 2007 3:32 AM
To: [email protected]
Subject: [flexcoders] Invisible checkbox renderer

 

I am attempting to optimize my renderers in an AdvancedDataGrid. The 
following code works perfectly, but it seems I should be able to do this

without the overhead of an HBox. So... I have implemented the following 
code and am having trouble seeing why it won't work. If I debug, I see 
that this.visible is being set to false... but it always appears 
anyway. Seems this should be very simple, I must be overlooking
something.

Any Help is appreciated.
Scott

*** This works, but is heavier weight ***

<mx:itemRenderer>
<mx:Component>
<mx:VBox verticalScrollPolicy="off" 
horizontalScrollPolicy="off" horizontalAlign="center">
<mx:Script>
<![CDATA[ 
import fastlane.data.Task;

//hide the checkbox if this is a task
public override function set data(value:Object):void
{
var isTask:Boolean = value is Task;
this.checkBox.visible = (!isTask);
super.data = value;
}
]]>
</mx:Script> 
<mx:CheckBox id="checkBox" 
selected="{data.isSelected}" labelPlacement="left" 
click="parentDocument.setItemSelected(data, event)"/>
</mx:VBox>
</mx:Component> 
</mx:itemRenderer>

*** Would prefer this if it worked ***

public class MyCheckBox extends CenteredCheckBox
{
/**
* Called when the data is set.
*/
public override function set data(value:Object):void
{
var isTask:Boolean = value is Task;

this.visible = !(isTask);
this.invalidateProperties();
//note: have tried invalidateDisplayList() and 
UIComponent(this.parent).invalidateDisplayList() as well

super.data = value; 
} 
}

 

Reply via email to