Simon, you misunderstand the first version. You should not be
constructing a string with it. What are the possible values that lcWin
can have and what are the possible classes you're trying to
instantiate? If I know that I can construct a better example that
accomplishes what you're trying to do so it's less confusing.

--Greg

On Fri, Dec 23, 2011 at 1:35 PM, Simon White
<[email protected]> wrote:
> Hi
> I can make the eval technique work but I cannot make the map technique
> work because it always gives an error about string type.
>
> var lcWin =
> qx.core.Init.getApplication().__frmDesktop.getActiveWindow().classname;
>                 var lcClass =
> var map = {
>     'somekey' :
> lcWin.substr(0,lcWin.indexOf("."))+".con"+lcWin.substr(lcWin.indexOf(".")+4)+"_"+this.getLabel(),
>     'otherkey' : dcbase.otherTypeOfButton
>  };
>
> Simon
>
> On 23/12/2011 2:04 PM, Greg Hellings wrote:
>> You can do this a number of ways depending on your need.
>>
>> With an associative array/map object:
>> var map = {
>>    'somekey' : dcbase.myCustomerButton,
>>    'otherkey' : dcbase.otherTypeOfButton
>> };
>>
>> var val = 'somekey';
>> var lcClass = new (map[val])();
>>
>> Or you could do it with a call to eval:
>>
>> var classToCreate = 'dcbase.myCustomerButton';
>> var lcClass = eval('new ' + classToCreate + '()');
>>
>> Or you could do it, similar to the first technique, but with a factory
>> method (probably attached statically to a parent class of all the
>> objects you might create in this instance).
>>
>> --Greg
>>
>> On Fri, Dec 23, 2011 at 12:58 PM, Simon White
>> <[email protected]>  wrote:
>>> Hi
>>>
>>> I would like to be able to create a new class by building the class name
>>> at runtime as opposed to hard coding the class in code.  Can this be done?
>>>
>>> For example instead of
>>>
>>> var lo = new dcbase.myCustomerButton();
>>>
>>> I would like to do the following:
>>>
>>> var lcClass = myWindow.Classname.substr(1,8)+"_con"+myButton.getLabel()
>>>
>>> var = new lcClass;
>>>
>>> Thanks,
>>> Simon
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Write once. Port to many.
>>> Get the SDK and tools to simplify cross-platform app development. Create
>>> new or port existing apps to sell to consumers worldwide. Explore the
>>> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
>>> http://p.sf.net/sfu/intel-appdev
>>> _______________________________________________
>>> qooxdoo-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>> ------------------------------------------------------------------------------
>> Write once. Port to many.
>> Get the SDK and tools to simplify cross-platform app development. Create
>> new or port existing apps to sell to consumers worldwide. Explore the
>> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
>> http://p.sf.net/sfu/intel-appdev
>
>
>
> ------------------------------------------------------------------------------
> Write once. Port to many.
> Get the SDK and tools to simplify cross-platform app development. Create
> new or port existing apps to sell to consumers worldwide. Explore the
> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
> http://p.sf.net/sfu/intel-appdev
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to