You need to add maps as a child in createChildren().

-TH

--- In flexcoders@yahoogroups.com, "Wally Kolcz" <wko...@...> wrote:
>
>
> Thanks! The labels are now showing perfectly!
>
> However, I am getting an error when I attempt to check the radio
buttons:
> TypeError: Error #1009: Cannot access a property or method of a null
object reference.
> at
com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\w\
kolcz\My
Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioBut\
tonPanel.as:34]
>
> Line 34 (in this case since I chose Airport to make this error) is
part of this:
>
> public function changeStartType(e:Event):void {
> if (startLocation.selectedValue == "address"){
> maps.start_txt.text = "Enter Starting Address";
> maps.frmAirport.includeInLayout = false;
> maps.frmAirport.visible = false;
> maps.frmAddress.includeInLayout = true;
> maps.frmAddress.visible = true;
> maps.submit_btn.visible = true;
> }else{
> maps.start_txt.text = "Choose Your Airport";
> maps.frmAddress.includeInLayout = false;
> maps.frmAddress.visible = false;
> maps.frmAirport.includeInLayout = true;
> maps.frmAirport.visible = true;
> maps.submit_btn.visible = true;
> }
>
> }
>
> I did import and create a variable for the 'maps' component in which
this panel is inside.
>
> import edu.umich.body.Maps;
> private var maps:Maps;
>
> Is there something I am missing?
>
> If you need a visual reference you can see the concept site at
http://www.med.umich.edu/prmc/landing/helipad
>
> ----------------------------------------
>
> From: "Tim Hoff" timh...@...
> Sent: Wednesday, June 24, 2009 8:04 AM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons -
Help
>
> Hi Wally,
>
> Pretty close, just a few minor tweaks needed:
>
> // add the event parameter
>
> public
>
> function
>
> changeStartType( event:Event ):
>
> void
>
> // change to group
>
> addressRB.group = startLocation ;
> airportRB.group = startLocation ;
>
> protected
>
> override
>
> function
>
> updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):
>
> void
>
> {
>
> super
>
> .updateDisplayList(unscaledWidth, unscaledHeight);
>
> // gap between label and edges of button
>
> var
>
> margin:int = 4;
>
> // set the sizes
> addressRB.setActualSize(addressRB.getExplicitOrMeasuredWidth(),
addressRB.getExplicitOrMeasuredHeight());
> airportRB.setActualSize(airportRB.getExplicitOrMeasuredWidth(),
airportRB.getExplicitOrMeasuredHeight());
>
> // position the buttons in the panel
>
> addressRB.move(145,5 );
> airportRB.move(255,5 );
> }
>
> -TH
>
> --- In flexcoders@yahoogroups.com, "Wally Kolcz" wkolcz@ wrote:
> >
> >
> >
> > Using an example from the web I am trying to create a custom Panel
component that had radio buttons in the panel header for a specific
piece of a web site. The panel works and I am getting 2 radio buttons
but no labels for either button and the radioGroup's
> > changeStartType() is not being called
> > . What am I doing wrong? Here is the AS:
> >
> > package com.wallykolcz.views.components
> > {
> >
> > import edu.umich.body.Maps;
> > import flash.events.Event;
> > import mx.containers.Panel;
> > import mx.controls.Button;
> > import mx.controls.RadioButton;
> > import mx.controls.RadioButtonGroup;
> >
> > public class RadioButtonPanel extends Panel
> > {
> >
> > //Create Radio Button Group and Buttons
> > private var startLocation:RadioButtonGroup = new RadioButtonGroup();
> > private var addressRB:RadioButton = new RadioButton();
> > private var airportRB:RadioButton = new RadioButton();
> > private var maps:Maps;
> >
> > //constructor
> > public function RadioButtonPanel()
> > {
> > super();
> > }
> >
> > public function changeStartType():void {
> > if (startLocation.selectedValue == "address"){
> > maps.start_txt.text = "Enter Starting Address";
> > maps.frmAirport.includeInLayout = false;
> > maps.frmAirport.visible = false;
> > maps.frmAddress.includeInLayout = true;
> > maps.frmAddress.visible = true;
> > maps.submit_btn.visible = true;
> > }else{
> > maps.start_txt.text = "Choose Your Airport";
> > maps.frmAddress.includeInLayout = false;
> > maps.frmAddress.visible = false;
> > maps.frmAirport.includeInLayout = true;
> > maps.frmAirport.visible = true;
> > maps.submit_btn.visible = true;
> > }
> > }
> >
> > protected override function createChildren():void{
> > super.createChildren();
> > //instantiate new radiobuttons and assign properties
> > addressRB.value="address";
> > addressRB.label="My Address";
> > addressRB.groupName = "startLocation";
> >
> > airportRB.value="airport";
> > airportRB.label="Airport";
> > airportRB.groupName="startLocation"
> >
> > //add event listener for change event and call method
> > startLocation.addEventListener(Event.CHANGE, changeStartType);
> >
> > //add the buttons to rawChildren
> > rawChildren.addChild(addressRB);
> > rawChildren.addChild(airportRB);
> > }
> >
> > protected override function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void{
> > super.updateDisplayList(unscaledWidth, unscaledHeight);
> > //gap between label and edges of button
> > var margin:int = 4;
> >
> > //position the buttons in the panel
> > addressRB.move(145, 15);
> > airportRB.move(255,15)
> > }
> >
>



Reply via email to