I advise using repeater with a custom clickable component.

Tracy

 

Goal: Display a list of items using a complex display for each item, and
have each of those items behave like a menu element and respond to a
click anywhere on the item by running a handler function.

 

One solution is to use a Repeater with a custom component

 

In the main app or component, declare the Repeater, and the click
handler function.

<mx:Application ...

<mx:Script><![CDATA[

  import MyRepeaterItem;

  ...

  

private function onRPItemClick(oEvent:Event):void

{

    var xmlItem:XML = XML(oEvent.target);

 

}//onRPItemClick

]]></mx:Script>

  <mx:VBox ...>

    <mx:Repeater id="rp" dataProvider="{_xmlData}" ...>

      <!-- Note we pass in the entire currentItem, and define a click
handler  -->

      <MyRepeaterItem xmlItem="{rp.currentItem}"
itemClick="onRPItemClick(event)" .../>

    </mx:Repeater

  </mx:VBox>

</mx:Application>

 

And in the component, MyRepeaterItem.mxml:

<?xml version="1.0" encoding="utf-8"?>

<mx:HBox mouseChildren="false" buttonMode="true" click="onClick(event)"
> 

  <!-- The metadata tag below allows us to define an itemClick handler
in mxml, as in the code above -->

  <mx:Metadata>

     [Event(name="itemClick", type="flash.events.Event")]

  </mx:Metadata>

<mx:Script><![CDATA[

  [Bindable]private var _xmlItem:XML;

  

  /** Setter function */

  public function set xmlItem(xml:XML):void  

  {

    _xmlItem = xml;

    //do any special, non-bound ui stuff you want

  }//set xmlItem

 

  /** Getter function */  

  public function get xmlItem():XML  

  {

    return _xmlItem;

  }//get xmlItem

 

 

  /** Outer VBox Click handler function */  

  private function onClick():void 

  {

    dispatchEvent(new Event("itemClick",false); //we do not need/want
this event to bubble

  }//onClick

 

]]></mx:Script>

  <!-- Now declare the Item UI -->

  <mx:Text id="lbDescription" text="[EMAIL PROTECTED]"
width="100%" height="100%" />

</mx:HBox>

 

 

 

  

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Ramsey, Robert L
Sent: Thursday, September 25, 2008 10:34 AM
To: [email protected]
Subject: [flexcoders] help w/ setting click events on dynamically
created linkbuttons

 

Hi,

 

I am working on a scheduling application and need some help working with
dynamically created clickable objects.  I've been using linkbuttons, but
anything that is clickable will work.

 

I have an array that may contain 0-N items, where N can be any number.
If N>0, I need to create clickable linkbuttons that call a function.
What I'm doing is something like this:

 

                  for each (var conflict:String in conflictArray)

                  {

                        var myLabel:LinkButton = new LinkButton;

                        myLabel.label = conflict;

                        myLabel.y = myy;

                        

                        myy += 20;

 
Application.application.conflictsPanel.addChild(myLabel);

                        

                  }

 

What I need to do is have each linkbutton call a function when it is
clicked and pass two variables to that function.  What I'd like to be
able to do is something like this:

 

myLabel.onClick(myFunction(label, label.length);

 

Is there an easy way to do this or a different clickable control I
should be using?

 

Thanks,

 

Bob

 

Reply via email to