A primary benefit of doing things like this is that you have the entire
item data in the component dispatching the event, and you have access to
that data in any handler via the event.target reference.

 

So you only need the event, and no other arguments.

 

Tracy

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Tracy Spratt
Sent: Thursday, September 25, 2008 8:02 PM
To: [email protected]
Subject: RE: [flexcoders] help w/ setting click events on dynamically
created linkbuttons

 

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