Dynamically creating a AS3.0 code based on animations made at runtime

Hello everyone,
I am new to AS3.0 and always getting tasks that is very very challenging. Here is the challenge.
Need to create a flash application where the user can create animations using images(upload) and text dynamically and export to a swf file. This was my previous post and the answers from the forum members was "impossible - 95%" and "Possible - 5%" (my average calcu).
http://forums.adobe.com/thread/678202?tstart=0
Now i got an idea from the "Possible - 5%". That is
as per the discussion in the above link there are compliers that can create swf files from the command prompt using haxe, swfmill, neko etc etc. these requires a AS3.0 class file to get the output.
now my question is can we generate the AS3.0 code from the swf file where the animations using images, text are done on the runtime stage. after the user is done with his animations he can click publish btn were we need to create the AS3.0 code and send to the command promt for getting the swf file as output.
i think this task is quite hard. but any help regarding this will let me in a right direction.
thanks in adv for any helps

Assuming that WYSIWYG concept is valid, you are better off with Flex. Flex offers xml structure that you can use as template and just write values. Then this XML can be used by compiler as it is used in Flex.
In any case, this is a very tedious and advanced task you are embarking on. If you are talking about couple of objects and simple animations - it is not that bad. But if there is more - it is difficult mainly because of the multitude of use cases and exponential growth in objects relationships from both display list and user interaction standpoint.
I was a part of such project about 2 years ago and I see that one has to be an excellent UX engineer, very good architect and an advanced AS developer in order to make this kind of application worth pursuing.

Similar Messages

  • Dynamically creating a Record Group based on Previously entered Record Grou

    Forms [32 Bit] Version 10.1.2.3.0 (Production)
    Hi,
    I know how to dynamically create a record group based on a query and putting the code in When new form instance.
    My query is. I have a form which has multiple Record Groups and the user wants to dynamically create subsequent groups based on previous groups.
    For example
    I have a record group with selects a Location,
    when the user selects the Location from a list of values
    the 2nd record group called 'Cost Centres' will have to filter out only those with the locations selected above.
    How can I populate the 2nd record group at run-time when I do not know what site the user will select?
    If I simply populate in when new form instance as in location and just select everything, the list of values populates.
    CC field is a LIST ITEM and the list style is a POP LIST, it is not required.
    I have put the code in the Location field in the when-list-changed trigger.
    I am getting this error:
    frm-41337: cannot populate the list from the record group
    here is the code:
    DECLARE
    v_recsql Varchar2(1000); -- The SQL for creating the Record Group.
    v_recgrp RecordGroup; -- Record Group
    v_status Number; -- Return Value of Populate_Group function.
    c_where VARCHAR2(1000);
    BEGIN
         IF :location = '1' THEN
              c_where := ' substr(cost_centre,1,2) in (''01'',''02'')';
         ELSIF :location  = '2' THEN
              c_where := ' substr(cost_centre,1,2) in (''02'',''03'')';
         ELSIF :location   = '3' THEN
              c_where := ' substr(cost_centre,1,2) in (''01'',''11'',''07'')';
                   ELSE
              c_where :=  ' 1=1'; --EVERYTHING
         END IF;
    v_recsql := 'SELECT cost_centre, description  FROM   cost_centres  where '||c_where;
    -- Create the Record Group
    v_recgrp := CREATE_GROUP_FROM_QUERY('v_recgrp', v_recsql);
    IF NOT ID_NULL(v_recgrp)
    THEN -- No Error, record group has been successfully created.
    -- Populate Record Group
    v_status := POPULATE_GROUP('v_recgrp');
    IF v_status = 0
    THEN -- No Error. Record Group has been Populated.
    POPULATE_LIST('block.CC', 'v_recgrp');
    END IF; -- IF v_status = 0
    -- Delete the Record Group as it is no longer needed.
    DELETE_GROUP('v_recgrp');
    END IF; -- IF NOT ID_NULL(v_recgrp)
    END;thanks for your assistance.

    Hi,
    Once record status gets change for block you can not populate/repopulate the list item. Keep those list items as non-database item with different names and create different items as database orignal items. Than assign the values in WHEN-LIST-CHANGE trigger to the actual database items.
    -Ammad

  • Dynamically create movieclips

    I want to be able to dynamically create movieclips in flash based on a midi file.
    So I converted the midi file to an .xml file first. I traced the number of events going on and the time of when an event starts or ends.
    So to keep track of those times, I put them in an array.(keytimer[i])
    The timer goes up 1microsecond at a time, for as long as the song is; in this case 190080 microseconds.
    The thing I want is when the timer equals a number in this array(keytimer[i]), and only when the attribute is 'NoteOn', then it should create a movieclip.
    I tried doing it like this; but he doesnt recognise the array:
    if (current==keytimer[i]) {
    trace("yes");
    Any help is more than welcome
    Flash file:
    var xmlLoader:URLLoader = new URLLoader();xmlLoader.addEventListener(Event.COMPLETE, showXML);xmlLoader.load(new URLRequest("for_elise_by_beethoven.xml"));function showXML(e:Event):void { XML.ignoreWhitespace=true; var songs:XML=new XML(e.target.data); trace(songs.Track.Event.length()); var i:Number; var keytimer:Array = new Array(); for (i=0; i < songs.Track.Event.length(); i++) { keytimer[i] =(" Time of the key: "+ songs.Track.Event[i].Absolute.text()); if (current==keytimer[i]) { trace("yes"); } //trace(keytimer[i]); //trace(" NoteOn: "+ songs.Track.Event[i].NoteOn.@Note); //trace(" NoteOff: "+ songs.Track.Event[i].NoteOff.@Note); //trace(" "); } var myTimer:Timer=new Timer(1,190000); myTimer.addEventListener(TimerEvent.TIMER,doStuff); var current:Number=0; myTimer.start(); function doStuff(event:TimerEvent):void { current++; trace("current: "+ current); trace("keytimer: "+ keytimer[i]); //trace("keytimer: "+ keytimer[i]); /*if (current==keytimer[i]) { trace("yes"); }*/  }}
    The current xml file: (name: for_elise_by_beethoven.xml)
    <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE MIDIFile PUBLIC  "-//Recordare//DTD MusicXML 0.9 MIDI//EN"  "http://www.musicxml.org/dtds/midixml.dtd"><MIDIFile><Format>1</Format><TrackCount>4</TrackCount><TicksPerBeat>960</TicksPerBeat><TimestampType>Absolute</TimestampType><Track Number="0">  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 12 00 00 7f 7f 00</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 1c 32 30 30 35 2e 31 32 2e 30 32</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <TrackName>Track 0</TrackName>  </Event>  <Event>    <Absolute>0</Absolute>    <SetTempo Value="857143"/>  </Event>  <Event>    <Absolute>0</Absolute>    <EndOfTrack/>  </Event></Track><Track Number="1">  <Event>    <Absolute>0</Absolute>    <ProgramChange Channel="1" Number="0"/>  </Event>  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 09 40 48</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <CopyrightNotice>2006 by forelise.com</CopyrightNotice>  </Event>  <Event>    <Absolute>0</Absolute>    <InstrumentName>Piano</InstrumentName>  </Event>  <Event>    <Absolute>0</Absolute>    <TrackName>Für Elise</TrackName>  </Event>  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 06 47 65 6e 65 72 61 6c 20 4d 49 44 49</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <TimeSignature Numerator="3" LogDenominator="3" MIDIClocksPerMetronomeClick="12" ThirtySecondsPer24Clocks="8"/>  </Event>  <Event>    <Absolute>0</Absolute>    <MIDIChannelPrefix Value="00"/>  </Event>  <Event>    <Absolute>960</Absolute>    <NoteOn Channel="1" Note="76" Velocity="71"/>  </Event>  <Event>    <Absolute>1200</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>1200</Absolute>    <NoteOn Channel="1" Note="75" Velocity="38"/>  </Event>  <Event>    <Absolute>1440</Absolute>    <NoteOff Channel="1" Note="75" Velocity="0"/>  </Event>  <Event>    <Absolute>1440</Absolute>    <NoteOn Channel="1" Note="76" Velocity="57"/>  </Event>  <Event>    <Absolute>1680</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>1680</Absolute>    <NoteOn Channel="1" Note="75" Velocity="70"/>  </Event>  <Event>    <Absolute>1920</Absolute>    <NoteOff Channel="1" Note="75" Velocity="0"/>  </Event>  <Event>    <Absolute>1920</Absolute>    <NoteOn Channel="1" Note="76" Velocity="76"/>  </Event>  <Event>    <Absolute>2160</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>2160</Absolute>    <NoteOn Channel="1" Note="71" Velocity="76"/>  </Event>  <Event>    <Absolute>2400</Absolute>    <NoteOff Channel="1" Note="71" Velocity="0"/>  </Event>  <Event>    <Absolute>2400</Absolute>    <NoteOn Channel="1" Note="74" Velocity="76"/>  </Event>  <Event>    <Absolute>2640</Absolute>    <NoteOff Channel="1" Note="74" Velocity="0"/>  </Event>  <Event>    <Absolute>2640</Absolute>    <NoteOn Channel="1" Note="72" Velocity="83"/>  </Event>  <Event>    <Absolute>2880</Absolute>    <NoteOff Channel="1" Note="72" Velocity="0"/>  </Event>  <Event>    <Absolute>2880</Absolute>    <NoteOn Channel="1" Note="69" Velocity="89"/>  </Event>  <Event>    <Absolute>2880</Absolute>    <SequencerSpecific>05 0f 0f 02</SequencerSpecific>  </Event>  <Event>    <Absolute>2880</Absolute>    <NoteOn Channel="1" Note="45" Velocity="64"/>  </Event>  <Event>    <Absolute>3120</Absolute>    <NoteOff Channel="1" Note="45" Velocity="0"/>  </Event>  <Event>    <Absolute>3120</Absolute>    <NoteOn Channel="1" Note="52" Velocity="64"/>  </Event>  <Event>    <Absolute>3360</Absolute>    <NoteOff Channel="1" Note="52" Velocity="0"/>  </Event>  <Event>    <Absolute>3360</Absolute>    <NoteOn Channel="1" Note="57" Velocity="70"/>  </Event>  <Event>    <Absolute>3600</Absolute>    <NoteOff Channel="1" Note="69" Velocity="0"/>  </Event>  <Event>    <Absolute>3600</Absolute>    <NoteOff Channel="1" Note="57" Velocity="0"/>  </Event>  <Event>    <Absolute>3600</Absolute>    <NoteOn Channel="1" Note="60" Velocity="76"/>  </Event>  <Event>    <Absolute>3840</Absolute>    <NoteOff Channel="1" Note="60" Velocity="0"/>  </Event>  <Event>    <Absolute>3840</Absolute>    <NoteOn Channel="1" Note="64" Velocity="76"/>  </Event>  <Event>    <Absolute>4080</Absolute>    <NoteOff Channel="1" Note="64" Velocity="0"/>  </Event>  <Event>    <Absolute>4080</Absolute>    <NoteOn Channel="1" Note="69" Velocity="76"/>  </Event>  <Event>    <Absolute>4320</Absolute>    <NoteOff Channel="1" Note="69" Velocity="0"/>  </Event>  <Event>    <Absolute>4320</Absolute>    <NoteOn Channel="1" Note="71" Velocity="83"/>  </Event>  <Event>    <Absolute>4320</Absolute>    <SequencerSpecific>05 0f 0f 02</SequencerSpecific>  </Event>  <Event>    <Absolute>4320</Absolute>    <NoteOn Channel="1" Note="40" Velocity="64"/>  </Event>  <Event>    <Absolute>4560</Absolute>    <NoteOff Channel="1" Note="40" Velocity="0"/>  </Event>  <Event>    <Absolute>4560</Absolute>    <NoteOn Channel="1" Note="52" Velocity="64"/>  </Event>  <Event>    <Absolute>4800</Absolute>    <NoteOff Channel="1" Note="52" Velocity="0"/>  </Event>  <Event>    <Absolute>4800</Absolute>    <NoteOn Channel="1" Note="56" Velocity="70"/>  </Event>  <Event>    <Absolute>5040</Absolute>    <NoteOff Channel="1" Note="71" Velocity="0"/>  </Event>  <Event>    <Absolute>5040</Absolute>    <NoteOff Channel="1" Note="56" Velocity="0"/>  </Event>  <Event>    <Absolute>5040</Absolute>    <NoteOn Channel="1" Note="64" Velocity="76"/>  </Event>  <Event>    <Absolute>5280</Absolute>    <NoteOff Channel="1" Note="64" Velocity="0"/>  </Event>  <Event>    <Absolute>5280</Absolute>    <NoteOn Channel="1" Note="68" Velocity="76"/>  </Event>  <Event>    <Absolute>5520</Absolute>    <NoteOff Channel="1" Note="68" Velocity="0"/>  </Event>  <Event>    <Absolute>5520</Absolute>    <NoteOn Channel="1" Note="71" Velocity="76"/>  </Event>  <Event>    <Absolute>5760</Absolute>    <NoteOff Channel="1" Note="71" Velocity="0"/>  </Event>  <Event>    <Absolute>5760</Absolute>    <NoteOn Channel="1" Note="72" Velocity="83"/>  </Event>  <Event>    <Absolute>5760</Absolute>    <NoteOn Channel="1" Note="45" Velocity="64"/>  </Event>  <Event>    <Absolute>6000</Absolute>    <NoteOff Channel="1" Note="45" Velocity="0"/>  </Event>  <Event>    <Absolute>6000</Absolute>    <NoteOn Channel="1" Note="52" Velocity="70"/>  </Event>  <Event>    <Absolute>6240</Absolute>    <NoteOff Channel="1" Note="52" Velocity="0"/>  </Event>  <Event>    <Absolute>6240</Absolute>    <NoteOn Channel="1" Note="57" Velocity="76"/>  </Event>  <Event>    <Absolute>6480</Absolute>    <NoteOff Channel="1" Note="72" Velocity="0"/>  </Event>  <Event>    <Absolute>6480</Absolute>    <NoteOff Channel="1" Note="57" Velocity="0"/>  </Event>  <Event>    <Absolute>6480</Absolute>    <NoteOn Channel="1" Note="64" Velocity="76"/>  </Event>  <Event>    <Absolute>6720</Absolute>    <NoteOff Channel="1" Note="64" Velocity="0"/>  </Event>  <Event>    <Absolute>6720</Absolute>    <NoteOn Channel="1" Note="76" Velocity="76"/>  </Event>  <Event>    <Absolute>6960</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>6960</Absolute>    <NoteOn Channel="1" Note="75" Velocity="64"/>  </Event>  <Event>    <Absolute>7200</Absolute>    <NoteOff Channel="1" Note="75" Velocity="0"/>  </Event>  <Event>    <Absolute>7200</Absolute>    <NoteOn Channel="1" Note="76" Velocity="76"/>  </Event>  <Event>    <Absolute>7440</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>7440</Absolute>    <NoteOn Channel="1" Note="75" Velocity="70"/>  </Event>  <Event>    <Absolute>7680</Absolute>    <NoteOff Channel="1" Note="75" Velocity="0"/>  </Event>  <Event>    <Absolute>7680</Absolute>    <NoteOn Channel="1" Note="76" Velocity="76"/>  </Event>  <Event>    <Absolute>7920</Absolute>    <NoteOff Channel="1" Note="76" Velocity="0"/>  </Event>  <Event>    <Absolute>7920</Absolute>    <NoteOn Channel="1" Note="71" Velocity="76"/>  </Event>  <Event>    <Absolute>8160</Absolute>    <NoteOff Channel="1" Note="71" Velocity="0"/>  </Event>  <Event>    <Absolute>8160</Absolute>    <NoteOn Channel="1" Note="74" Velocity="76"/>  </Event>  <Event>    <Absolute>8400</Absolute>    <NoteOff Channel="1" Note="74" Velocity="0"/>  </Event>  <Event>    <Absolute>8400</Absolute>    <NoteOn Channel="1" Note="72" Velocity="76"/>  </Event>  <Event>    <Absolute>8640</Absolute>    <NoteOff Channel="1" Note="72" Velocity="0"/>  </Event>  <Event>    <Absolute>8640</Absolute>    <NoteOn Channel="1" Note="69" Velocity="83"/>  </Event>  <Event>    <Absolute>8640</Absolute>    <SequencerSpecific>05 0f 0f 02</SequencerSpecific>  </Event>  <Event>    <Absolute>8640</Absolute>    <NoteOn Channel="1" Note="45" Velocity="57"/>  </Event>  <Event>    <Absolute>8880</Absolute>    <NoteOff Channel="1" Note="45" Velocity="0"/>  </Event>  <Event>    <Absolute>8880</Absolute>    <NoteOn Channel="1" Note="52" Velocity="64"/>  </Event>  <Event>    <Absolute>9120</Absolute>    <NoteOff Channel="1" Note="52" Velocity="0"/>  </Event>  <Event>    <Absolute>9120</Absolute>    <NoteOn Channel="1" Note="57" Velocity="70"/>  </Event>  <Event>    <Absolute>9360</Absolute>    <NoteOff Channel="1" Note="69" Velocity="0"/>  </Event>  <Event>    <Absolute>9360</Absolute>    <NoteOff Channel="1" Note="57" Velocity="0"/>  </Event>  <Event>    <Absolute>9360</Absolute>    <NoteOn Channel="1" Note="60" Velocity="76"/>  </Event>  <Event>    <Absolute>9600</Absolute>    <NoteOff Channel="1" Note="60" Velocity="0"/>  </Event>  <Event>    <Absolute>9600</Absolute>    <NoteOn Channel="1" Note="64" Velocity="76"/>  </Event>  <Event>    <Absolute>9840</Absolute>    <NoteOff Channel="1" Note="64" Velocity="0"/>  </Event>  <Event>    <Absolute>9840</Absolute>    <NoteOn Channel="1" Note="69" Velocity="76"/>  </Event>  <Event>    <Absolute>10080</Absolute>    <NoteOff Channel="1" Note="69" Velocity="0"/>  </Event>  <Event>    <Absolute>10080</Absolute>    <NoteOn Channel="1" Note="71" Velocity="83"/>  </Event> 
              ...ETC...
      <Event>    <Absolute>185040</Absolute>    <NoteOff Channel="1" Note="56" Velocity="0"/>  </Event>  <Event>    <Absolute>185040</Absolute>    <NoteOn Channel="1" Note="64" Velocity="51"/>  </Event>  <Event>    <Absolute>185280</Absolute>    <NoteOff Channel="1" Note="64" Velocity="0"/>  </Event>  <Event>    <Absolute>185280</Absolute>    <NoteOn Channel="1" Note="72" Velocity="51"/>  </Event>  <Event>    <Absolute>185520</Absolute>    <NoteOff Channel="1" Note="72" Velocity="0"/>  </Event>  <Event>    <Absolute>185520</Absolute>    <NoteOn Channel="1" Note="71" Velocity="51"/>  </Event>  <Event>    <Absolute>185733</Absolute>    <ControlChange Channel="1" Control="64" Value="127"/>  </Event>  <Event>    <Absolute>185760</Absolute>    <NoteOff Channel="1" Note="71" Velocity="0"/>  </Event>  <Event>    <Absolute>185760</Absolute>    <SequencerSpecific>05 0f 0e</SequencerSpecific>  </Event>  <Event>    <Absolute>185760</Absolute>    <NoteOn Channel="1" Note="60" Velocity="45"/>  </Event>  <Event>    <Absolute>185760</Absolute>    <NoteOn Channel="1" Note="69" Velocity="45"/>  </Event>  <Event>    <Absolute>185760</Absolute>    <NoteOn Channel="1" Note="45" Velocity="45"/>  </Event>  <Event>    <Absolute>185760</Absolute>    <NoteOn Channel="1" Note="33" Velocity="45"/>  </Event>  <Event>    <Absolute>187200</Absolute>    <NoteOff Channel="1" Note="45" Velocity="0"/>  </Event>  <Event>    <Absolute>187200</Absolute>    <NoteOff Channel="1" Note="33" Velocity="0"/>  </Event>  <Event>    <Absolute>187200</Absolute>    <NoteOff Channel="1" Note="60" Velocity="0"/>  </Event>  <Event>    <Absolute>187200</Absolute>    <NoteOff Channel="1" Note="69" Velocity="0"/>  </Event>  <Event>    <Absolute>190048</Absolute>    <ControlChange Channel="1" Control="64" Value="0"/>  </Event>  <Event>    <Absolute>190080</Absolute>    <SequencerSpecific>05 0f 0a</SequencerSpecific>  </Event>  <Event>    <Absolute>190080</Absolute>    <EndOfTrack/>  </Event></Track><Track Number="2">  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 09 00 40</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 06 47 65 6e 65 72 61 6c 20 4d 49 44 49</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <TrackName>http://www.forelise.com/</TrackName>  </Event>  <Event>    <Absolute>0</Absolute>    <TimeSignature Numerator="3" LogDenominator="3" MIDIClocksPerMetronomeClick="12" ThirtySecondsPer24Clocks="8"/>  </Event>  <Event>    <Absolute>0</Absolute>    <ProgramChange Channel="2" Number="0"/>  </Event>  <Event>    <Absolute>0</Absolute>    <MIDIChannelPrefix Value="01"/>  </Event>  <Event>    <Absolute>0</Absolute>    <EndOfTrack/>  </Event></Track><Track Number="3">  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 09 00 40</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <SequencerSpecific>05 0f 06 47 65 6e 65 72 61 6c 20 4d 49 44 49</SequencerSpecific>  </Event>  <Event>    <Absolute>0</Absolute>    <TrackName>Composed by Ludwig van Beethoven</TrackName>  </Event>  <Event>    <Absolute>0</Absolute>    <TimeSignature Numerator="3" LogDenominator="3" MIDIClocksPerMetronomeClick="12" ThirtySecondsPer24Clocks="8"/>  </Event>  <Event>    <Absolute>0</Absolute>    <ProgramChange Channel="3" Number="0"/>  </Event>  <Event>    <Absolute>0</Absolute>    <MIDIChannelPrefix Value="02"/>  </Event>  <Event>    <Absolute>0</Absolute>    <EndOfTrack/>  </Event></Track></MIDIFile>

    var current:int=0;
    myTimer.start();
    function doStuff(event:TimerEvent):void {
    current++;
    trace("current: "+ current);
    trace("keytimer: "+ keytimer[i]);
    //trace("keytimer: "+ keytimer[i]);
    if (current==int(keytimer[i)]) {
    trace("yes");

  • T.Code based on Language

    HI all
         my requirement  is
               I have to create a t.code based on language, I mean when ever a user logged in with language EN i have to change the t.code appearance.
    Please shoot back your suggestions
    Thanks
    Srikanth.n

    Hi Arman,
    Time to raise such concerns with SAP support .
    There is many ways, indirect one to do so, for eg, when a user locks, and hits a code ZMB5B not MB5B which should be locked or not be assigned to users, then the code check the permit time table and user list. This code will we for a new screen(eg screen Zee), which will then permit to displays MB5B program to the user if he passes Zee screen.
    Regards,

  • Problem with string dynamically created

    Hi all,
    I have a problem a bit complex I don't know how to solve it: I have a dynamically created program that give a syntax error because a string created inside it is too long and don't stay on a single line, so the program created has some lines like this:
    tot = d_1 + d_2 + d_3 + d_4 + d_5 +
    d_6 + d_7 +  d_8 + d_9 .
    this code doesn't pass the syntax-check before it is executed and the error given is about the second line. So how can I avoid this error ? remember that the program is dynamically created so the code reported is for sample: it's possible to have more than 2 lines.
    Thanks to anyone will give me an hint.
    Gabriele

    Hi!
    Explicitely control the length of your statements when generating them. In your sample you could code your program to create the follwoing lines:
    tot = d1 + d2 + ........ + d8.
    tot = tot + d9 + d100 ...... + d150.
    tot = tot + d151 ..... d999.
    And so on ....
    Regards,
    Volker

  • Dynamically creating a CR by code

    Post Author: ffderennes
    CA Forum: .NET
    Hello, I am discovering crystal reports (I have the basic version included with VS 2005).  I would like to dynamically create a report by the code.I need to generate a report from a Dataset or DataTable but this source is variable.The columns of the table are not always the sames. I did research, and all the tutorials I have seen create models primarily via visual studio (with known column names). I wonder if it is possible to create and edit from A to Z the report by the code.  I tried (creation of the object ReportDocument, but I can not add a section, TextObject ...).  Visual Studio back me errors and tells me that these objects have no constructor.  I began to wonder if it was possible to do that.If yes, in which version (maybe mine is too old).  In any case, if someone has a runway, an example or a tutorial to advise me, I am taker.  thank you in advance.

    Post Author: JonathanP
    CA Forum: .NET
    You can use the Report Application Server (RAS) engine to dynamically create reports, or add items to existing reports. RAS is not included with the verison of Crystal Reports that comes with .NET. Full versions such as XI R2 do include RAS.
    Some samples can be found on the support site.
    http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=http--supportbusinessobjectscom-communityCS-FilesandUpdatesNoNav-rasvbnetwebsamplesexeasp&sliceId=&dialogID=22114090&stateId=1 0 22112331

  • Creating AS3 code for C++ classes converted with Alchemy (a là Box2D)

    So I've a collection of C++ classes which I now have converting fine with Alchemy to a swc file and can call the exposed functions fine from my AS3 code.
    What I'd really like to do is recreate stuff like Box2D's b2Vec.as class,
    public class b2Vec2 extends b2Base {
        public function b2Vec2(p:int) {
            _ptr = p;
        public function get v2():V2 {
            return new V2(x, y);
        public function set v2(v:V2):void {
            x = v.x;
            y = v.y;
        public function get x():Number { return mem._mrf(_ptr + 0); }
        public function set x(v:Number):void { mem._mwf(_ptr + 0, v); }
        public function get y():Number { return mem._mrf(_ptr + 4); }
        public function set y(v:Number):void { mem._mwf(_ptr + 4, v); }
    This is a simple example, but shows what I'd like to do.  On the C side of things, b2Vec2 is a struct,
    /// A 2D column vector.
    struct b2Vec2
        /// Default constructor does nothing (for performance).
        b2Vec2() {}
        float32 x, y;
    So, for this struct, it's easy to calculate that the first variable of a b2Vec2 object is a float, which will be the value in x and can be read via Alchemy's MemUser classes _mrf (read a fload from a point in memory) with _mrf(pointerAddress) and you can read in the second float with _mrf(pointerAddress + 4).
    My question is, if you're not a C++ expert (me), is there any way to get the definition of a class, as in the addresses of all the variables within and what they are?  So, for the b2Vec2 one, I'd imaging it'd be something like, float32 x 0 float34 y 4 ...
    The reason I'm asking is because one of the classes in particular has loads of variables and to try and get each and every one's information so I can access it directly from the AS3 code would be lots of work and I'm going to assume I'll introduce plenty of human error to it.

    Hi,
    I am facing the similar issue. Can you please tell me how you solved this problem in more details?
    which sample code and how u can find that in SE24 and where to copy that code.
    Thanks in advance..
    vamsi.

  • Not Yet Documented ADF Ex 9 Dynamically Binding to Dynamically Created View

    I have dynamically created a View Object and would like to build a dynamic HTML Table on a web page based upon my view. I think something similar is done in Steve Muench's sample #9. My problem is I am new to ADF and the example was done in an earlier version of JDev (I am using 10.1.3.0.4) and the JSP page in the example will not compile. I get an error at:
    <textarea style="width: 100%" name="sql" rows="3" ><c:out value="${param.sql}"/></textarea><br>
    Saying required param "cols" is missing. I also get a nesting error in this code:
    <tr>
    <c:forEach var="attributeLabel" items="${bindings.DynamicViewObject.labelSet}">
    <th>
    because (I think) the compiler expects a </tr> and it is seeing the <c:forEach var="attributeLabel"> tag.
    Is there a setting in JDeveloper I can use to allow this application to compile? Is there a similar example done in JSF as that is what my current application is being developed using.
    TIA,
    Jeff

    Any help on this? Kind of Urgent...
    Thanks,
    Jeff

  • Dynamically Create Repeater Element in ActionScript

    Hi,
    I'm trying to dynamically create a repeater control with an
    image and a label control. I can do it directly in the MXML file
    but when I try and covert it into ActionScript it's not working.
    Can anyone see what the problem is with my code?
    public function GetPalettes():void{
    removeChild(document.FrontPage);
    Palettes.method = "GET";
    params = {"method": "GetPalettes", "BodyPartNo":
    document.PalettesMenu.selectedItem.@partNo};
    Palettes.cancel();
    Palettes.send(params);
    var VerticalBox:VBox = new VBox();
    VerticalBox.x = 10;
    VerticalBox.y = 10;
    VerticalBox.id = "VerticalBox";
    var PaletteRepeater:Repeater = new Repeater();
    PaletteRepeater.dataProvider =
    "{Palettes.lastResult.Palette}";
    PaletteRepeater.startingIndex = 0;
    PaletteRepeater.id = "PaletteRepeater";
    var PaletteImage:Image = new Image();
    PaletteImage.setStyle("HorizontalAlign", "left");
    PaletteImage.source = "
    http://localhost/Flex/Personalised%20Palettes-debug/{PaletteRepeater.currentItem.@PictureS rc}Med.png";
    PaletteImage.useHandCursor = true;
    PaletteImage.buttonMode = true;
    PaletteImage.mouseChildren = false;
    PaletteImage.id = "PaletteImage";
    var PaletteDescription:Label = new Label();
    PaletteDescription.text =
    "{PaletteRepeater.currentItem.@Description}";
    PaletteDescription.id = "PaletteDescription";
    document.MainPage.addChild(VerticalBox);
    VerticalBox.addChild(PaletteRepeater);
    PaletteRepeater.addChild(PaletteImage);
    PaletteRepeater.addChild(PaletteDescription);
    Thanks

    "katychapman85" <[email protected]> wrote in
    message
    news:[email protected]...
    > Hey Amy,
    >
    > I've put a thread up about this but thought I'd ask you
    as well as you've
    > been
    > a great help to me so far.
    >
    > I have this function:
    > public function GetOptions(Menu:int):void{
    > document.MenuOptions.url =
    > "
    http://localhost/Flex/Personalised%20Palettes-debug/MenuOptions.php?Menu=";
    > document.MenuOptions.url += Menu;
    > document.MenuOptions.send();
    > }
    >
    > What I'm trying to do is when a user clicks on a Radio
    button this
    > function is
    > called and the number of the Menu required is sent to
    the function.
    >
    > I've added this Event Listener to my Radio Button:
    >
    >
    document.RadioButtons2.addEventListener(MouseEvent.CLICK,
    > function():void{GetOptions(2);});
    >
    > However, it's not working. Everything I've read suggests
    using an
    > anonymous
    > function in the Event Listener to pass the menu
    parameter but for some
    > reason
    > it's not working.
    What version of Flex are you using? The Help for Flex 3 has
    this to say:
    http://www.adobe.com/livedocs/flex/3/html/help.html?content=events_05.html
    Defining event listeners inline
    The simplest method of defining event handlers in Flex
    applications is to
    point to a handler function in the component's MXML tag. To
    do this, you add
    any of the component's events as a tag attribute followed by
    an ActionScript
    statement or function call.
    You add an event handler inline using the following syntax:
    <mx:tag_name event_name="handler_function"/>
    For example, to listen for a Button control's click event,
    you add a
    statement in the <mx:Button> tag's click attribute. If
    you add a function,
    you define that function in an ActionScript block. The
    following example
    defines the submitForm() function as the handler for the
    Button control's
    click event:
    <mx:Script><![CDATA[
    function submitForm():void {
    // Do something.
    ]]></mx:Script>
    <mx:Button label="Submit" click="submitForm();"/>
    Event handlers can include any valid ActionScript code,
    including code that
    calls global functions or sets a component property to the
    return value. The
    following example calls the trace() global function:
    <mx:Button label="Get Ver" click="trace('The button was
    clicked');"/>
    There is one special parameter that you can pass in an inline
    event handler
    definition: the event parameter. If you add the event keyword
    as a
    parameter, Flex passes the Event object and inside the
    handler function, you
    can then access all the properties of the Event object.
    The following example passes the Event object to the
    submitForm() handler
    function and specifies it as type MouseEvent:
    <?xml version="1.0"?>
    <!-- events/MouseEventHandler.mxml -->
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml">
    <mx:Script><![CDATA[
    import mx.controls.Alert;
    private function myEventHandler(event:MouseEvent):void {
    // Do something with the MouseEvent object.
    Alert.show("An event of type '" + event.type + "'
    occurred.");
    ]]></mx:Script>
    <mx:Button id="b1" label="Click Me"
    click="myEventHandler(event)"/>
    </mx:Application>
    It is best practice to include the event keyword when you
    define all inline
    event listeners and to specify the most stringent Event
    object type in the
    resulting listener function (for example, specify MouseEvent
    instead of
    Event).
    You can use the Event object to access a reference to the
    target object (the
    object that dispatched the event), the type of event (for
    example, click),
    or other relevant properties, such as the row number and
    value in a
    list-based control. You can also use the Event object to
    access methods and
    properties of the target component, or the component that
    dispatched the
    event.
    Although you will most often pass the entire Event object to
    an event
    listener, you can just pass individual properties, as the
    following example
    shows:
    <?xml version="1.0"?>
    <!-- events/PropertyHandler.mxml -->
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml">
    <mx:Script><![CDATA[
    import mx.controls.Alert;
    private function myEventHandler(s:String):void {
    Alert.show("Current Target: " + s);
    ]]></mx:Script>
    <mx:Button id="b1" label="Click Me"
    click="myEventHandler(event.currentTarget.id)"/>
    </mx:Application>
    Registering an event listener inline provides less
    flexibility than using
    the addEventListener() method to register event listeners.
    The drawbacks are
    that you cannot set the useCapture or priority properties on
    the Event
    object and that you cannot remove the listener once you add
    it.
    don't see anything in there about anonymous functions...?

  • AutoScrolling of PanelLayout and setting Location of dynamically created controls

    Hi, I have a question related to setting Location of dynamically created controls when my PanelLayout is scrolled down or up.
    So basically I have wrote a code that lets me drag on control over other other and replace their's locations.
    So I wanted to add possibility for user to dynamically add new controls (every new control is suppose to be 200px below previous) - everything is fine as long as I add them from upper section of my LayoutPanel (without scrolling) but when I try to add
    them while I'm half dawn scrolled they are placed based on CURRENT left upper corner which is NOT a upper left corner of LayoutPanel therfore they are placed with wrong padding based on current scrolled position.
    So my question is how can I avoid it and always add new controls based on LayoutPanel upper left corner? (I have already tried disabling AutoScroll while adding new control and enabling it back after adding - it works but I want to find PROPER way because
    I'm sure there must be some kind of solution to it)
    Thanks in advance.

    Hi darekg11,
    >> I have a question related to setting Location of dynamically created controls when my PanelLayout is scrolled down or up
    I am wondering what the PanelLayout was, was it a “flowLayoutPanel” or “tableLayoutPanel”?
    >> basically I have wrote a code that lets me drag on control over other other and replace their's locations
    Did you mean you drag the control at runtime or at design time?
    >> how can I avoid it and always add new controls based on LayoutPanel upper left corner
    I could not reproduce your issue, and could you share us some key code or a simple demo to reproduce your issue?
    I made a research about “scrolling panel”, and I think the link below might be useful to you:
    # Scrolling Panel
    http://www.codeproject.com/Articles/226381/Scrolling-Panel
    Best Regards,
    Edward
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

  • Creating a Function logic for dynamically created XML buttons

    Hi!
    It's me...... again! Now I've dynamically created some buttons using XML. They're spread around the stage and I've modified a tooltip script to give each button a tooltip on Mouse_Over. But to se the logic and make it work using AS3 is hard (for me). I want a function that accept to parameters: Tooltip text and  Object to tooltip.
    In my code I get this error msg when initiating the function on dynamically created buttons:
    1118: Implicit coercion of a value with static type flash.display:Sprite to a possibly unrelated type flash.display:MovieClip.
    I beleive there are more than one thing here needing a fix.
    Can someone have a look and give me a pointer?
    Thanks
    function contentTooltip(ttt:String, ttclip:MovieClip):void {
        ttclip.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
        function mouseOverHandler(e:MouseEvent):void {
            ttip.descr.text=ttt;
            ttip.x=stage.mouseX;
            ttip.y=stage.mouseY-15;
            ttclip.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
            ttclip.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
            ttip.visible = true;
        function mouseOutHandler(e:MouseEvent):void {
            ttip.visible = false;
            ttclip.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
            ttclip.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
        function mouseMoveHandler(e:MouseEvent):void {
            ttip.x=stage.mouseX;
            ttip.y=stage.mouseY-15;
    contentTooltip("Scale button",scale_btn);
    contentTooltip("Hide button",hide_btn);

    I totally agree with what Ned says and suggests. Nevertheless, I would like to support your thinking process.
    From the way you wrote the tooltip functionality it is apparent to me that you conceptualize as a programmer. Again, as Ned said, nested functions are evil. BUT, in a way, what classes accomplish is encapsulation/nesting of properties and functions under the same umbrella. It actually feels that what timeline does in general is nesting named functions within a single function we have no access to.
    How you wrote the code is actually a blueprint for a class that could handle the functionality. You, perhaps, are very ready to start coding with classes - not on the timeline.
    With that said, for the sake of theory, here is how your functionality can be rewritten on timeline:
    scale_btn.toolTip = "Scale button";
    test_btn.toolTip = "Test button";
    hide_btn.toolTip = "Hide button";
    scale_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    test_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    hide_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    var overTarget:MovieClip;
    function mouseOverHandler(e:MouseEvent):void {
         overTarget = e.currentTarget;
         ttip.descr.text = overTarget.toolTip;
         ttip.x = stage.mouseX;
         ttip.y = stage.mouseY - 15;
         overTarget.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
         overTarget.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
         setChildIndex(ttip, numChildren - 1);
         ttip.visible = true;
    function mouseOutHandler(e:MouseEvent):void {
         ttip.visible = false;
         overTarget.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
         overTarget.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
    function mouseMoveHandler(e:MouseEvent):void {
         TweenMax.to(ttip, .5, { x:stage.mouseX, ease:Quart.easeOut } );
         TweenMax.to(ttip, .5, { y:stage.mouseY - ttclip.height / 2, ease:Quart.easeOut } );
         //ttip.x=stage.mouseX;
         //ttip.y=stage.mouseY-ttclip.height/2;

  • ADF 11g + How to capture the value of a dynamically created input text box

    Hi All,
    I have a requirement where, on selection of the value in a drop down, the input text boxes need to get dynamically populated on the JSPX page. I'm able to bring this functionality, and it is working fine.
    But the challenge right now I'm facing is that, how to read/capture the value entered in those dynamic text boxes on submission of the page. Please help me in getting this resolved.
    Below is the code snippet I'm using for this.
    // Clearing the existing input fields in the Panel form
    while (pf100.getChildren().iterator().hasNext()) {
    pf100.getChildren().remove(pf100.getChildren().iterator().next());
    // Creating the new fields based on the number of IP addresses selected
    for (int i = 0; i < iIPAddress; i++) {
    RichInputText pcPreferredDomain = new RichInputText();
    pcPreferredDomain.setLabel("Preferred Domain / Hostname for Desktop PC/ Laptop - " +
    (i + 1));
    pcPreferredDomain.setColumns(40);
    pcPreferredDomain.setId("pcpfdomain" + (i + 1));
    pf100.getChildren().add(pcPreferredDomain);
    Thanks All in Advance,
    Thanks & Regards,
    Dharmathej M

    As per your method, you are creating the RichInputText components as local variables.
    What happens when you are creating them as class level variables in the managed bean, if you do so, you can refer to the values of the UI components in the actionListener/action code for the command button in the managed bean
    sample:
    public class ManagedBean{
    RichInputText [] pcPreferredDomain;
    public ManagedBean(){
    // Clearing the existing input fields in the Panel form
    while (pf100.getChildren().iterator().hasNext()) {
    pf100.getChildren().remove(pf100.getChildren().iterator().next());
    pcPreferredDomain = new RichInputText[iIPAddress];
    // Creating the new fields based on the number of IP addresses selected
    for (int i = 0; i < iIPAddress; i++) {
    pcPreferredDomain[i] = new RichInputText();
    pcPreferredDomain.setLabel("Preferred Domain / Hostname for Desktop PC/ Laptop - " +
    (i + 1));
    pcPreferredDomain.setColumns(40);
    pcPreferredDomain.setId("pcpfdomain" + (i + 1));
    pf100.getChildren().add(pcPreferredDomain);
    Thanks,
    Navaneeth

  • Addressing dynamically created symbols

    I'm not sure what's the best way to address a specific dinamically created symbol because I don't see in Edge's API any way to get the symbol's instance name. The .getSymbol() method would be the easiest way to do it, but it takes the symbol "instance" name and I don't know which one it is. When I use .createChildSymbol() I just pass the symbol "type" name and the parent element name to be put inside but nothing about the symbol instance name that's been created. The .getChildSymbols() method doesn't help much because it retrieves "all" direct children instances found, and I have more than one and of different types.
    I need to get one specific symbol among several I created dinamcally, so how should I do it best?
    I'm thinking about using .getChildSymbols() and loop through them all, get the DOM of each symbol with .getSymbolElement(), then use the "class" attribute to at least identify the different types of children symbols retrieved. I now have a subset of children-brothers (symbols of the same type = class) and I can walk through them. At this point, my only hope to distiguish them is the z-index parameter I passed when I created the symbols using .createChildSymbol().
    One other option would be to "save" the returned handler to each symbol created with .createChildSymbol() in an object like this { symbol: handler, name: "any name", created: "date/time", ... } and save them in an array of objects.
    Any better ideas?

    Hi juicy_life,
    store it into a symbol variable instance that I know will persist (the stage, maybe)
    Looks like a global variable
    It's just annoying you can get a symbol manually added to your edge animation by its "name" using .getSymbol(), but there is not an easy way to use that function with a dinamically created symbol
    May be are you also an AS3 coder used to search through the display list accessing display objetc containers either by index (getChildAt()) or by name (getChildByName()).
    mySym.aSymbolInstances will give you an array with all "names" when you create symbols with .createChildSymbol().
    Thank you for this helpful information. I didn't know about it.
    "name" (ID), something like this: #eid_1379485757227_mySymType
    For a manually instantiated symbol symB, nested in symA, itself instantiated in the Stage Symbol, the fully qualified name (ID) is Stage_symA_symB.
    It's useful to write a global function for the behavior (on click for example) shared by a group of buttons, provided you adopt a naming convention btn1, btn2, etc. Passing the event objet to that function, you can then recover the number of the clicked button via
    evt.target.getAttribute("ID").substr()
    This abstraction avoids duplicating the same code (differing only by the button number) on each button.
    Gil

  • Dynamically create context menu

    I'm trying to create a context menu based on a certain af:commandImageLink.
    I have an af:popup with an af:menu in my page. I bound the af:menu to my bean so I can change the content. I didn't put any children in the menu to start because I want to add the children based on the image that's click.
    I added an af:showPopupBehavior to show my popup on click. The idea was that I wanted to use the actionListener of the af:commandImageLink to dynamically create the menu that I need. But it seems that the actionListener fires after the showPopupBehavior most times. On the first click, it looks like the actionListener fires first then the showPopupBehavior. After that, it seems the actionListener always fires after.
    So it looks like this is not really supposed to work.
    Does anyone have any suggestions on how this should be made to work?

    Thanks a lot Timo,
    This does allow me to control when the popup shows up.
    I modified the code you gave slightly to include code to align the popup:
        public static void showPopup(String popupId, String alignId) {
            FacesContext context = FacesContext.getCurrentInstance();
            StringBuilder script = new StringBuilder();
            script.append("var popup = AdfPage.PAGE.findComponent('").append(popupId).append("'); ").append("if (!popup.isPopupVisible()) { ")
                .append("var hints = {}; ").append("hints[AdfRichPopup.HINT_ALIGN_ID] = '").append(alignId).append("'; ")
                .append("hints[AdfRichPopup.HINT_ALIGN] = AdfRichPopup.ALIGN_AFTER_END; ").append("popup.show(hints);}");
            ExtendedRenderKitService erks = Service.getService(context.getRenderKit(), ExtendedRenderKitService.class);
            erks.addScript(context, script.toString());
        }I still have some problems though. I need to give some more context on this.
    So I have an af:iterator that shows a list of images. I'm trying to popup a context menu when they click the image. The menu needs to be aligned relative to the image that was clicked.
    However, when I tried to get the ID from the ActionEvent, I get the design time ID which should not be the same as the run time ID because the iterator would have created multiple instances of the image, each with a unique ID. I'm assuming that's why the alignment is not working.
    Am I missing something here?
    Also, I seem to be having problems with modifying the menu. Here's my bean code:
        private RichMenu baseMenu;
        public void imageActionListener(ActionEvent actionEvent) {
            Object o = actionEvent.getComponent();
            RichCommandImageLink image = (RichCommandImageLink)o;
            DCIteratorBinding iteLoc = ADFUtils.findIterator("OpItemLocationsVO2Iterator");
            for(Row row : iteLoc.getAllRowsInRange()) {
                OpItemLocationsVORowImpl r = (OpItemLocationsVORowImpl)row;
                RichCommandMenuItem a = new RichCommandMenuItem();
                Number n = r.getItelocId().getSequenceNumber();
                a.setId("i" + r.getItelocId().getSequenceNumber().toString());
                a.setText(r.getItelocId().getSequenceNumber().toString());
                baseMenu.getChildren().add(a);
            AdfFacesContext.getCurrentInstance().addPartialTarget(baseMenu);
            showPopup("vmenu", image.getId());
        }So in my popup, I added a menu and I bound that menu to this bean. The idea was that whenever an image was clicked, I would remove all the children from the menu, then add the new ones. There would be a master-detail relationship between the image's iterator and the menu that's supposed to show up.
    The other problems that I'm getting with this is that the menu is not changing when I click on a different image. When I debug, I'll see the correct values being added, but nothing changes on the screen. It's always showing the first popup that was ever created. Also, I don't know how to remove the previous children. There doesn't seem to be an API to remove the children.
    Thoughts?

  • Problem with embeding the same view in dynamically created view container

    Hello Experts,
                  I am getiing a dump when i try to embed the same view inside the dynamically created view container of
    dynamically created tabs of a tabstrip
    The requirement go like this, i have 2 views in which i have have to embed the 2nd view to view1 where i have an empty
    tabstrip without tabs. During runtime i create tabs as well as view containers accordingly and then try to embed view2 in tabs.
    I have put the below mentioned code in HANDLEIN,
      DATA: lref_vcntlr  TYPE REF TO if_wd_view_controller,
            lref_comp    TYPE REF TO if_wd_component_usage,
            lv_embed_pos TYPE string.
      lref_vcntlr = wd_this->wd_get_api( ).
      lv_embed_pos = 'FILE_PERS_EDIT/VC_GENERAL'.
      TRY.
          CALL METHOD lref_vcntlr->do_dynamic_navigation
            EXPORTING
              source_window_name        = 'FILE_PERSISTENCE_WND'          " Window
              source_vusage_name        = 'FILE_PERS_EDIT_USAGE_1'       " Source View usage
              source_plug_name          = 'TO_EDIT_LAYOUT'                       " Outbound plug
              target_view_name          = 'PERS_EDIT_LAYOUT'                  " Second view to be embedded
              target_plug_name          = 'IN'                                                  " Second view inboun plug
              target_embedding_position = lv_embed_pos
            RECEIVING
              component_usage           = lref_comp.
        CATCH cx_wd_runtime_repository .
      ENDTRY.
      wd_this->fire_to_edit_layout_plg( ).
    This works fine for the first time.
    However onaction tab select i change the embeding position( 'FILE_PERS_EDIT/view container name of different tab') of the view2 an try to embed view2 in a different tab.
    At this point i get a dump stating View2 already present in the window 'FILE_PERSISTENCE_WND' of component.
    I think, the view2 embediing has to be removed before i add the view2 in a different tab
    Kindly let me know how to remove view2 embedding from tab1 before i add a view2 to a different tab or is there any other
    means to handle this problem?
    Thanks & Best Regards,
    Srini.

    Hello Srini,
    I found a solution to your problem, because I had a similar task.
    In WDDOINIT I changed the method do_dynamic_navigation to if_wd_navigation_services_new~prepare_dynamic_navigation:
    DATA:
        l_view_controller_api TYPE REF TO if_wd_view_controller.
      l_view_controller_api = wd_this->wd_get_api( ).
      TRY.
          CALL METHOD l_view_controller_api->if_wd_navigation_services_new~prepare_dynamic_navigation
            EXPORTING
              source_window_name        = 'WDW_MAIN'
              source_vusage_name        = 'VW_SUB_USAGE_1'
              source_plug_name          = 'TO_VW_CONTENT'
              target_component_name     = 'ZTEST_DYNAMIC'
              target_view_name          = 'VW_CONTENT'
              target_plug_name          = 'DEFAULT'
              target_embedding_position = 'VW_MAIN/VC_TAB.VW_SUB/TAB1_VC'
            RECEIVING
              repository_handle         = wd_this->g_rep_handle.
        CATCH cx_wd_runtime_repository .
      ENDTRY.
      wd_this->fire_to_vw_content_plg( param1 = 'TAB1' ).
    In the action I first deleted the navigation targets, then navigated to the empty-view and last I called my target view:
      DATA:
        lv_position           TYPE string,
        l_view_controller_api TYPE REF TO if_wd_view_controller,
        lr_view_usage         TYPE REF TO if_wd_rr_view_usage,
        lr_view_***_t         TYPE wdrr_vca_objects,
        lr_view_***           LIKE LINE OF lr_view_***_t.
      l_view_controller_api = wd_this->wd_get_api( ).
      lr_view_usage = wd_this->g_view->get_view_usage( ).
      lr_view_usage->delete_all_navigation_targets( plug_name = 'TO_VW_CONTENT' ).
      CLEAR lv_position.
      CONCATENATE 'VW_MAIN/VC_TAB.VW_SUB/' old_tab '_VC' INTO lv_position.
      TRY.
          l_view_controller_api->if_wd_navigation_services_new~do_dynamic_navigation(
          source_window_name = 'WDW_MAIN'
          source_vusage_name = 'VW_SUB_USAGE_1'
          source_plug_name   = 'TO_EMPTYVIEW'
          target_component_name = 'ZTEST_DYNAMIC'
          target_view_name   = 'EMPTYVIEW'
          target_plug_name   = 'DEFAULT'
          target_embedding_position = lv_position ).
        CATCH cx_wd_runtime_repository.
      ENDTRY.
      CLEAR lv_position.
      CONCATENATE 'VW_MAIN/VC_TAB.VW_SUB/' tab '_VC' INTO lv_position.
      TRY.
          wd_this->g_rep_handle = l_view_controller_api->if_wd_navigation_services_new~prepare_dynamic_navigation(
            source_window_name = 'WDW_MAIN'
            source_vusage_name = 'VW_SUB_USAGE_1'
            source_plug_name   = 'TO_VW_CONTENT'
            target_component_name = 'ZTEST_DYNAMIC'
            target_view_name   = 'VW_CONTENT'
            target_plug_name   = 'DEFAULT'
            target_embedding_position = lv_position ).
        CATCH cx_wd_runtime_repository.
      ENDTRY.
      wd_this->fire_to_vw_content_plg( param1 = tab ).
    Ann.: I my example, I had 3 views: VW_MAIN which embedds VW_SUB. VW_SUB has the tabs in it and VW_SUB embedds VW_CONTENT.
    BR,
    Roland

Maybe you are looking for