Creating a Stepper with ScriptUI?

Has anyone created a stepper using ScriptUI? I'm working on a palette that provides an alternative to using the Margins and Columns window that also helps build strong typographic grids (kind of a combination Margins, Columns and Create Guides window). I don't want the palette to be too different than the existing Margins and Columns window, but ScriptUI doesn't seem to provide a simple way to create a stepper widget like is currently used in the Margins and Columns windows:
Am I just missing it in the scripting guide books, or does this type of widget require scripting it from scratch?
Thanks for any help you can provide.

I'm working on a similar script and I've created an eXtendedWidget class to encapsulate the component you need
In the rough sample code below, checkout the usage of ScrollEditText.
ScrollEditText can even emulates the behavior of a measurementEditBox, with specified units and min/max :
myStepper: XW.ScrollEditText({title:"Top:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
To see how it works, try this:
var toUIString = function()
     { // <this> : ui object
     var r = this.toSource().
          replace(/\\u([0-9a- f]{4})/gi, function(_,$1){return String.fromCharCode(Number('0x'+$1));} ).
          replace(/(?:\{_([^:]+):)/g,'$1').
          replace(/\}\}/g,'}').
          replace(/(^\()|(\)$ )/g,'');
     return r;
Window.prototype.focus = (function()
{ //Window.prototype.focus
var getControls = function()
     var r = [];
     for ( var i=0, c ; i<this.children.length ; i++ )
          c = this.children[i];
          if (c.constructor == StaticText) continue;      // exclude StaticText focus
          if (c.constructor == Scrollbar) continue;     // exclude Scrollbar focus
          if ('active' in c) {r.push(c);continue;}
          r = r.concat(arguments.callee.call(c));
     return r;
return function(/*int*/step)
     this.controls = this.controls || getControls.call(this);
     var sz = this.controls.length;
     for (var i=0 ; i<sz ; i++)
          if (this.controls[i].active == true) break;
     if (!step) return this.controls[i];
     i = (i+step+sz)%sz;
     step = (step<0)?-1:1;
     while(!this.controls[i].enabled) i+=step;
     this.controls[i].active = true;
     return this.controls[i];
var XW = (function()
// Extended Widgets
var widgets = {}, xWidgets = {};
var xWidget = function(/*str*/xType)
     { // constructor
     this.xType = xType;
     this.widget = widgets[this.xType];
xWidget.prototype.ui = function(settings_)
     var ui = this.widget.ui(settings_);
     var ac = this.widget.access;
     ui[ac].settings = settings_;
     ui[ac].xType = this.xType;
     return ui;
xWidget.prototype.connect = function(parent)
     var c = parent.children;
     for (var i = c.length-1 ; i>=0 ; i-- )
          if ( c[i].xType && (c[i].xType == this.xType) )
             this.widget.connect.call(c[i]);
             continue;
          if (c[i].children.length) this.connect(c[i]);
// DropListBox
widgets.DropListBox =
     access: '_Group',
     ui: function(settings_)
          {return {_Group:{
             margins:0, spacing:0, orientation: 'row', alignChildren: ['left','center'],
             lTit: (settings_.title)?{_StaticText:{characters:12,text:settings_.title,justify:'right'}}:null,
             lSpa: (settings_.title)?{_StaticText:{characters:1}}:null,
             ddList: {_DropDownList: {maximumSize:[100,25]}}
     connect: function()
          { // <this> UI Group
          (function(items_)
             { // ddList : load items
             for(var i=0, tp ; i<items_.length ; i++)
                  tp = (items_[i] == '-') ? 'separator' : 'item';
                  this.add(tp,items_[i]);
             }).call(this.ddList,this.settings.items);
// ScrollEditText  (this is your 'stepper')
widgets.ScrollEditText =
     access: '_Group',
     ui: function(settings_)
          {return {_Group:{
             margins:0, spacing:0, orientation: 'row', alignChildren: ['left','center'],
             lTit: (settings_.title)?{_StaticText:{characters:12,text:settings_.title,justify:'right'}}:null,
             lSpa: (settings_.title)?{_StaticText:{characters:1}}:null,
             sBar: {_Scrollbar:{size:[16,24]}},
             eTxt: {_EditText:{characters:settings_.characters||8}}
     connect: function()
          { // <this> Group
          (function()
             this.units = this.units||'';
             this.decimals = (typeof this.decimals=='undefined')?-1:this.decimals;
             this.characters = this.characters||6;
             this.step = this.step||1;
             this.jump = this.jump||this.step*5;
             }).call(this.settings);
          this.parseUnit = (this.settings.units)?
             function(/*str*/s)
                  var m = s.match(/^-?(\d+)([cp])([\d\.]+)/i); // #p# ou #c#
                  if (m && m.length) s = ((m[0][0]=='-')?'-':'') + ((m[1]-0)+(m[3]/12)) + ((m[2]=='c')?'ci':'pc');
                  m = s.match(/agt|cm|ci|in|mm|pc|pt/i);
                  return (m && m.length) ?
                       UnitValue (s).as(this.settings.units) :
                       Number(s. replace(/[^0-9\.-]/g,''));
             function(/*str*/s) {return Number(s.replace(/[^0-9\.-]/g,''));};
          this.parseStrValue = function(/*str*/s)
             var v = this.parseUnit(s.replace(',','.'));
             return (isNaN(v)) ? null : v;
          this.fixDecimals = (this.settings.decimals >=0 )?
             function(/*num*/v){return v.toFixed(this.settings.decimals)-0;}:
             function(/*num*/v){return v;};
          this.displayValue = (this.settings.units)?
             function(/*num*/v)
                  var u = this.settings.units;
                  if ( u=='pc' || u=='ci' )
                       { // #,#pc -> $p$  ou  #,#ci -> $c$
                       var sg = (v<0)?-1:1;
                       v = v*sg;
                       var sx = Math.floor(v);
                       var sy = (v-sx)*12;
                       return sx*sg + u[0] + sy.toLocaleString().substr(0,this.settings.characters);
                  else
                       var s = v.toLocaleString().substr(0,this.settings.characters);
                       return s + ' ' + u;
             function(/*num*/v)
                  return v.toLocaleString().substr(0,this.settings.characters);
          this.settings.minvalue = (this.settings.minvalue)?this.parseStrValue(''+this.settings.minvalue):0;
          this.settings.maxvalue = (this.settings.maxvalue)?this.parseStrValue(''+this.settings.maxvalue):100;
          if (typeof this.settings.value == 'undefined') this.settings.value = this.fixDecimals(this.settings.minvalue);
          this.offsetValue = function(/*num*/delta)
             this.changeValue(this.eTxt.text,'NO_DISPLAY');
             this.changeValue(Math.round(this.settings.value + delta));
          this.changeValue = function(/*var*/vs,/*var*/noDisplay,/*var*/noEvent)
             var v = (typeof vs == 'string') ? this.parseStrValue(vs) : vs;
             v = ( typeof v == 'number' ) ? this.fixDecimals(v) : this.settings.value;
             if ( v < this.settings.minvalue ) v = this.settings.minvalue;
             if ( v > this.settings.maxvalue ) v = this.settings.maxvalue;
             var noChange = (this.settings.value == v);
             if (!noChange) this.settings.value = v;
             if (!noDisplay) this.eTxt.text = this.displayValue(this.settings.value);
             if ((!noChange) && (!noEvent)) this.eTxt.notify();
          (function()
             { // scrollbar
             this.minvalue = -1;
             this.maxvalue = 1;
             this.value = 0;
             this.onChanging = function()
                  this.parent.offsetValue(-this.value*this.parent.settings.step);
                  this.value = 0;
             }).call(this.sBar);
          (function()
             { // edittext
             this.addEventListener('blur', function(ev)
                  { // lost focus
                  this.parent.changeValue(this.text);
             this.addEventListener('keydown', function(ev)
                  { // up/down keys
                  var delta = 1;
                  switch(ev.keyName)
                       case 'Down' : delta = -1;
                       case 'Up' :
                        delta *= this.parent.settings.step;
                        if (ev.shiftKey) delta *= this.parent.settings.jump;
                        this.parent.offsetValue(delta);
                        break;
                       default:;
             }).call(this.eTxt);
          this.changeValue();
// XW interface
var r = {};
for(var w in widgets)
     r[w] = (function()
          var w_ = w;
          return function(/*obj*/ settings)
             xWidgets[w_] = xWidgets[w_] || new xWidget(w_);
             return xWidgets[w_].ui(settings);
r.connectAll = function(/*Window*/parent)
     for each(var xw in xWidgets) xw.connect(parent);
return r;
//==================================================
// sample code
//==================================================
// if you need a palette Window, replace _dialog by _palette
// (and use #targetengine)
var ui = toUIString.call({_dialog:{
     text: "Column Rules",
     properties: {closeOnKey: 'OSCmnd+W'},
     orientation: 'row', alignChildren: ['fill','top'],
     gTextFrame: {_Group:{
          margins:0, spacing:10, orientation: 'column',
          pInsetSpacing: {_Panel:{
             margins:10, spacing:2, alignChildren: ['fill','fill'],
             text: "Inset Spacing",
             seTop: XW.ScrollEditText({title:"Top:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
             seBot: XW.ScrollEditText({title:"Bottom:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
             cLinked: {_Checkbox:{text: "Linked"}},
             seLeft: XW.ScrollEditText({title:"Left:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
             seRight: XW.ScrollEditText({title:"Right:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
          pColumns: {_Panel:{
             margins:10, spacing:2, alignChildren: ['fill','fill'],
             text: "Columns",
             seNumber: XW.ScrollEditText({title:"Number:",minvalue:1,maxvalue:40}),
             seGutter: XW.ScrollEditText({title:"Gutter:",minvalue:0,maxvalue:'8640pt',decimals:3,units:'mm'}),
          cIgnoreTextWrap: {_Checkbox:{text: "Ignore Text Wrap", alignment:'left'}},
     gProcess: {_Group:{
          margins:10, spacing:8, alignChildren: ['center','fill'],
          orientation: 'column',
          gValid: {_Group:{
             margins:10, spacing:10, orientation: 'row',
             bOK: {_Button: {text:"OK"}},
             bCancel: {_Button: {text:"Cancel"}},
// create the main window
var w = new Window(ui);
// connect XWidgets
XW.connectAll(w);
// manage the tab key
(function(){
     this.addEventListener('keydown', function(ev)
          { // Tab
          if (ev.keyName == 'Tab')
             ev.preventDefault();
             this.focus( ((ev.shiftKey)?-1:1 ) );
     }).call(w);
// controls event manager
// here you add the event listeners for w.gTextFrame.pInsetSpacing, etc.
w.show();
You will notice I use a special format rather than UI string resource. This allows to create compact object declaration, using finally the toUIString helper function. The XW object invokes also that stuff.
The ScrollEditText component encapsulates the stepper+editText association. You don't have to manage the interaction. Each time the value changes, the component notify a change event on the editText target.
Hope it could hep you.
@+
Marc

Similar Messages

  • How can I create VI's with inputs which will execute immediately when updated?

    I am using LabView to control stepper motors. I would like to create a VI with a front panel which has 4 directional arrows, 2 per motor. My goal is to be able to run the VI and then press a button to move the motor.
    I have created separate VI for each funcition of the motors - a vi to set the holding current, one to set the moving current, another to move up by a certain amount, and so on. These vi's work and I can move and adjust the motors, but only by running separate VI.
    How can i combine them into one VI and have them execute at the press of a button or change of a property? An example would be to set a new holding current, and have the holding current vi execute immediately and send the command to the motor. Then keep on pressing the directional buttons without having to hit "run" on another vi.
    Thank you very much
    Solved!
    Go to Solution.

    The event structure will allow you to handle user input and execute when controls are used.  A "value change" event is what you're looking for.
    =============
    XP SP2, LV 8.2
    CLAD

  • Is there a way to create a project with custom audio settings that are NOT only "Stereo" or "Surround"?

    Is there a way to create a project with custom audio settings that are NOT only "Stereo" or "Surround"?
    Thanks!
    -Adrian

    the old apps are on my computer but they have had upgrades since they were put on the ipod originally.  you think you would get a warning about this when you restored. I was not worried about losing the progress of the apps but i would have been worried about the app it self!!!!!

  • Error while creating  a PO with Account assignment

    HI MM Gurus
    In our case, we need to create the STO for account assignment cat `Unknown`.
    In SPRO I maintained combination of account assign cat and item cat.
    Now, while creating  a PO with Account assign U we get Error message -  ME069 :Unknown account assignment not defined for use here.
    Please advise how to resolve this issue.

    Hi
    When you are posting actuals, you need to give true account assignment object. With U (unknown), system cannot identify which account to be posted. Change account assignment in PO to another.
    In standard SAP Unknown account assignment is not allowed in PO's. Only exception is Blanket PO.
    Unknown is allowed only in PR and Blanket PO.
    The reason is logically you are releasing the PO to the external vendor or Plant in this case you must know the account assignment.
    Regards,
    Ninad Kshirsagar

  • How to create a node with attributes at runtime in webdynpro for ABAP?

    Hi Experts,
             How to create a node with attributes at runtime in webdynpro for ABAP? What classes or interfaces I should use? Please provide some sample code.
    I have checked IF_WD_CONTEXT_NODE_INFO and there is ADD_NEW_CHILD_NODE method. But this is not creating any node. I this this creates only a "node info" object.
    I even check IF_WD_CONTEXT_NODE but i could not find any method that creates a node with attribute.
    Please help!
    Thanks
    Gopal

    Hi
       I am getting the following error while creating a dynamic context node with 2 attributes. Please help me resolve this problem.
    Note
    The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
    The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
    Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
    Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
    Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
    My code is like the following:
    TYPES: BEGIN OF t_type,
                CARRID TYPE sflight-carrid,
                CONNID TYPE sflight-connid,
             END OF t_type.
      Data:  i_struc type table of t_type,
      dyn_node   type ref to if_wd_context_node,
      rootnode_info   type ref to if_wd_context_node_info,
      i_node_att type wdr_context_attr_info_map,
      wa_node_att type line of wdr_context_attr_info_map.
          wa_node_att-name = 'CARRID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
          insert wa_node_att into table i_node_att.
          wa_node_att-name = 'CONNID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
          insert wa_node_att into table i_node_att.
    clear i_struc. refresh i_struc.
      select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    rootnode_info = wd_context->get_node_info( ).
    rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
                                       attributes = i_node_att
                                       is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
    dyn_node->bind_table( i_struc ).
    l_ref_interfacecontroller->set_data( dyn_node ).
    I am trying to create a new node. That is
    CONTEXT
    - DYNFLIGHT
    CARRID
    CONNID
    As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
    Also I cannot define the structure in the ABAP dictionary because it changes based on condition
    Message was edited by: gopalkrishna baliga

  • I can't print a PDF created in MAC with window 8.1?

    En pdf-fil skapad i MAC går inte att skriva ut med Wondows 8.1

    Hi.
    The problem is now fixed by help of HP.
    Best regards
    Lars Hansson
    Bergsgatan 24 A
    83241 Frösön
    Tfn: 070-3853088
    Från: Ajlan huda 
    Skickat: den 7 november 2014 08:28
    Till: Lars Hansson
    Ämne:  I can't print a PDF created in MAC with window 8.1?
    I can't print a PDF created in MAC with window 8.1?
    created by Ajlan huda <https://forums.adobe.com/people/Ajlan+huda>  in Adobe Reader - View the full discussion <https://forums.adobe.com/message/6908045#6908045>

  • I am new to IPAD and I want o use facetime, how can I use it to communicate with my mac at home, do I need to create another account with a different email account

    I am new to IPAD and I want o use facetime, how can I use it to communicate with my mac at home, do I need to create another account with a different email account

    do I need to create another account with a different email account
    Yes, the email addresses need to be unique to each device. You may use the same Apple ID on each device, but the email address used by each device needs to be different.

  • How to create a report with survey data

    Hi All,
    I need to create a report with survey data in below format. Can anyone help me how to display the summary in this format.
    Swapna

    Hi Swapna,
    According to your description, you want to create a report with survey data and display the summary.
    Reporting Services is used for rendering the report with data retrieved from datasource. In Reporting Services, we can retrieve data from the datasource then design a report, after the report processed, data is fixed on the report. So it’s not supported
    to have the end users selection and do summary. For your requirement, it’s can’t be achieved currently.
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • How to create a report with data using the Crystal Reports for Java SDK

    Hi,
    How do I create a report with data that can be displayed via the Crystal Report for Java SDK and the Viewers API?
    I am writing my own report designer, and would like to use the Crystal Runtime Engine to display my report in DHTML, PDF, and Excel formats.  I can create my own report through the following code snippet:
    ReportClientDocument boReportClientDocument = new ReportClientDocument();
    boReportClientDocument.newDocument();
    However, I cannot find a way to add data elements to the report without specifying an RPT file.  Is this possible?  I seems like it is since the Eclipse Plug In allows you to specify your database parameters when creating an RPT file.
    is there a way to do this through these packages?
    com.crystaldecisions.sdk.occa.report.data
    com.crystaldecisions.sdk.occa.report.definition
    Am I forced to create a RPT file for the different table and column structures I have? 
    Thank you in advance for any insights.
    Ted Jenney

    Hi Rameez,
    After working through the example code some more, and doing some more research, I remain unable to populate a report with my own data and view the report in a browser.  I realize this is a long post, but there are multiple errors I am receiving, and these are the seemingly essential ones that I am hitting.
    Modeling the Sample code from Create_Report_From_Scratch.zip to add a database table, using the following code:
    <%@ page import="com.crystaldecisions.sdk.occa.report.application.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.data.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.document.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.definition.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
    <%@ page import = "com.crystaldecisions.report.web.viewer.*"%>
    <%
    try { 
                ReportClientDocument rcd = new ReportClientDocument();
                rcd.newDocument();
    // Setup the DB connection
                String database_dll = "Sqlsrv32.dll";
                String db = "qa_start_2012";
                String dsn = "SQL Server";
                String userName = "sa";
                String pwd = "sa";
                // Create the DB connection
                ConnectionInfo oConnectionInfo = new ConnectionInfo();
                PropertyBag oPropertyBag1 = oConnectionInfo.getAttributes();
                // Set new table logon properties
                PropertyBag oPropertyBag2 = new PropertyBag();
                oPropertyBag2.put("DSN", dsn);
                oPropertyBag2.put("Data Source", db);
                // Set the connection info objects members
                // 1. Pass the Logon Properties to the main PropertyBag
                // 2. Set the Server Description to the new **System DSN**
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_LOGONPROPERTIES, oPropertyBag2);
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_SERVERDESCRIPTION, dsn);
                oPropertyBag1.put("Database DLL", database_dll);
                oConnectionInfo.setAttributes(oPropertyBag1);
                oConnectionInfo.setUserName(userName);
                oConnectionInfo.setPassword(pwd);
                // The Kind of connectionInfos is CRQE (Crystal Reports Query Engine).
                oConnectionInfo.setKind(ConnectionInfoKind.CRQE);
    // Add a Database table
              String tableName = "Building";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
        catch(ReportSDKException RsdkEx) {
                out.println(RsdkEx);  
        catch (Exception ex) {
              out.println(ex);  
    %>
    Throws the exception
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: java.lang.NullPointerException---- Error code:-2147467259 Error code name:failed
    There was other sample code on SDN which suggested the following - adding the table after calling table.setDataFields() as in:
              String tableName = "Building";
                String fieldname = "Building_Name";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setAlias(tableName);
                oTable.setQualifiedName(tableName);
                oTable.setDescription(tableName) ;
                Fields fields = new Fields();
                DBField field = new DBField();
                field.setDescription(fieldname);
                field.setHeadingText(fieldname);
                field.setName(fieldname);
                field.setType(FieldValueType.stringField);
                field.setLength(40);
                fields.add(field);
                oTable.setDataFields(fields);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
    This code succeeds, but it is not clear how to add that database field to a section.  If I attempt to call the following:
    FieldObject oFieldObject = new FieldObject();
                oFieldObject.setDataSourceName(field.getFormulaForm());
                oFieldObject.setFieldValueType(field.getType());
                // Now add it to the section
                oFieldObject.setLeft(3120);
                oFieldObject.setTop(120);
                oFieldObject.setWidth(1911);
                oFieldObject.setHeight(226);
                rcd.getReportDefController().getReportObjectController().add(oFieldObject, rcd.getReportDefController().getReportDefinition().getDetailArea().getSections().getSection(0), -1);
    Then I get an error (which is not unexpected)
    com.crystaldecisions.sdk.occa.report.lib.ReportDefControllerException: The field was not found.---- Error code:-2147213283 Error code name:invalidFieldObject
    How do I add one of the table.SetDataFields()  to my report to be displayed?
    Are there any other pointers or suggestions you may have?
    Thank you

  • How to create a report with different page sizes

    Hi,
    I would like to create a report with different page sizes, it's possible to do it with diadem?
    When I change the layout parameters, changes afect to all sheets...
    Is there a way to change page size individually for each sheet?
    Thanks in advance.
    Marc

    Hi Marc,
    You can use the DocStart and DocEnd commands along with the PicPrint command to spool multiple print commands to the same output PDF file using the direct printer approach.  This should enable you to programmatically specify the page size differently for each sheet that you add to the print job.
    ' Print PDF Page by Page.VBS
    OPTION EXPLICIT
    Dim i, Path, OldPrintName
    Path = AutoActPath & "2D Stacked"
    Call DataDelAll
    Call DataFileLoad(Path & ".TDM")
    PDFFileName = Path & " Page by Page.pdf"
    IF FileExist(PDFFileName) THEN Call FileDelete(PDFFileName)
    OldPrintName = PrintName
    PrintName = "winspool,DIAdem PDF Export,LPT1:" ' Set to PDF printer
    PDFResolution = "72 DPI" ' "2400 DPI" , "default"
    PDFOptimization = TRUE
    PDFFontsEmbedded = FALSE
    PDFJPGCompressed = "high"
    PrintOrient = "landscape" ' orient paper
    Call PrintMaxScale("GRAPH") ' auto-max, see alternative margin setting variables below
    PrintLeftMarg = 0.181
    PrintTopMarg = 0.181
    PrintWidth = 10.67
    'PrintHeigth = 7 (read-only)
    Call WndShow("REPORT")
    Call DocStart ' Begin multi-page document/print job
    FOR i = 1 TO 4
    Call PicLoad(Path & ".TDR")
    Call GraphSheetNGet(1)
    Call GraphSheetRename(GraphSheetName, "Page " & i)
    Call PicUpdate
    Call PicPrint("WinPrint") ' Add a page to be printed
    NEXT ' i
    Call DocEnd ' End multi-page document/print job
    PrintName = OldPrintName
    Call ExtProgram(PDFFileName)
    Brad Turpin
    DIAdem Product Support Engineer
    National Instruments

  • Creating if statements with 3 options

    Hey
    I have a Choose from List with 2 items, that if selected will pass the variable through for the Code variable.
    But if the variable for Code is not set from the previous selection, i want the option to type a variable for Code.
    but it does not ask for input even if there is no previous selection for the Code variable.
    Can someone please point out my stupidity ?
    if answer1 is equal to "PACKAGING" then
              set Code to "TA01"
    else
              if answer2 is equal to "IPOP" then
                        set Code to "TA02"
              else
                        set Code to text returned of (display dialog ¬
                                  "Enter Code:" with title ¬
                                  "Create Client Folder " with icon 1 ¬
      default answer ¬
                                  "" buttons {"Cancel", "Next…"} ¬
      default button 2)
              end if
    end if

    Are you sure it is Code that is not defined and not Job?
    Just noticed you can possibly not have job set when you go to use it.
    This works
    set Code to ""
    set job to ""
    if job is equal to "PACKAGING" then
              set Code to "TA01"
    else if job is equal to "IPOP" then
              set Code to "TA02"
    end if
    if Code is equal to "" then
              set Code to text returned of (display dialog ¬
                        "Enter Client Code:" with title ¬
                        "Create Client Folder " with icon 1 ¬
      default answer ¬
                        "" buttons {"Cancel", "Next…"} ¬
      default button 2)
    end if

  • Creating a link with the Link Tool

    I used the Link Tool to create a Link in my pdf file.  The link is set to open a website file.  I created 2, one with just a little text and the other was a picture that was 200 X 300 px.  When I follow the links, each is opening a full web page.  I expected that with the Text link because I put the text on an html page but the picture I sized to the 200X300 but that opened a full web page also.  When setting up the link to the Web File I did not see an additional settings as far as how to open the web page such as _parent or _child etc.  I believe it is normally the Target.
    Does anyone know how I would either do this with the link tool or know of a better way to do it overall?
    Thanks
    Bob

    Hi,
    You may be confusing HTML markup for links with PDF links.
    In PDF, HTML markup is not applicable.
    So "target_xxxx" or any other HTML 'stuff' cannot be used.
    For the graphic file (JPG, PNG, whatever), make a web page file that is configured to display the graphic file in a manner you desire.
    The web link you set in the PDF, with Acrobat, will result in this web page file opening.
    This is the file that will control how the graphic is rendered.
    If needed, a resource for HTML "how to" is W3 Schools.
    Be well...

  • Creating a .pdf with different page views

    I'm tyring to create a .pdf with different page views.  For example as the viewer goes through the .pdf some pages I would like viewed as "single page view" and others "two page view".  Is this possible?   I'm working with Adobe Acrobate Pro.  Thanks for any suggestions.

    It's possible to use the Page Open actions to trigger a view mode change but it's messy - if the user tries to override them because they prefer to zoom in, etc. then they'll get very annoyed when things keep resetting.
    To create a Page Open action, open the thumbnails panel, right-click on a page, choose Page Properties, then the Actions tab. You can use the Execute a Menu Item tool to fire one of the view modes.

  • Creating a list with different row sizes...

    I'm new to AS 3.0 and CS4 and I've been getting up to speed
    on all of it. I've used the List component before with my own
    CellRenderer. I now need to create a list with different row
    heights. The List component is great and does everything that I
    want but it requires all rows to be the same height.
    I'm unsure of where to go. Creating my own class seems like a
    lot of work. The TileList and Grid components don't allow different
    sized (and dynamically changing) row heights either. Is there some
    base class (SelectableList? BaseScrollPane?) that I should extend
    or do I need to just bite the bullet and write it all from scratch?
    I need each row to have it's own height and interaction with
    a row could change the height of the row. The main use is a list of
    data. If the user clicks in an item, it turns the display into
    something they can edit (which will need more height).
    Thanks for any thoughts on a direction I should think about.
    By the way, I really like that AS 3.0 is much more consistent of a
    programming language than previous MX versions that I've used.
    We're doing a lot of AS/Flash/AIR work with it and it's turning
    into a wonderful environment...

    Any ideas about this??

  • Problem in Sales order create using BAPI with reference to quotation

    Hi,
    I am creating a sales order from Quotation using BAPI /AFS/BAPI_SALESORD_CREATEFDATA.
    The Sale order is getting created and the document flow is updated. When i check the status of quotation it is "OPEN".
    Ideally when a sale order is created in VA01 with reference to a quotation and if all items are added in the order from quotation, then the status of the quotation must be "Complete".
    When i use the BAPI, the status of the quotation is sill "Open". Has anyone faced this issue?
    Even if anyone has faced this issue with BAPI_SALESORDER_CREATEFROMDAT2, please let me know...
    Regards

    Hi RV,
    I am using BAPI  to create order reference to contracts. I am facing same issue. Its not updating document flow (vbfa-plmin field). After creating orders I am forcing to update plmin field in vbfa. This worked fine. But now status in reference document not updating properly. I saw your thread. It looks like similar issue. I saw your comments "Customization was not maintained properly for the Order types ". Please can you explain little bit more about your solution. It will helps us lot.
    Thanks,
    srini

Maybe you are looking for

  • Can't consolidate files- error message 69

    I am trying to back up my iTunes file to a hard drive. While consolidating, I repeatedly receive the error message :copying music failed. an unknown error occurred. It consolidates most of my music, but keeps stopping at random songs. Can anyone help

  • HOW LONG DOES IT TAKE TO GET iPHOTO BOOK?

    I would like to order my first HARD COVER book and since I am not living in USA, my friend would bring the book back to Europe. But the only problem is that, she will be there only two days, so the book must be at the address, she will be living on 9

  • Content conversion in Sender JMS channel

    Hello All, My scenario is JMS to Proxy. SAP PI receives a flat file from JMS application. Can any one please help us on converting flat file to XML conversion within sender JMS adapter Thanks&Regards, Moorthy

  • Difference in UCCX historical reports

    'Agent summary report' is showing average talk time "00:02:45" and when I manually calcuate the average talk time from the report "Agent state detail report" (by adding the total talk time and dividing it with total number of calls) it gives me avera

  • Reporting Financials EHP3 - Problem with 0FIGL_M30

    Hi All,   We are using the multiprovider 0FIGL_M30 for the Balance Sheet, P&L and Cash Flow Statements in SAP BW. When we activate the multiprovider 0FIGL_M30, I see the Infoproviders 0FIGL_V30, 0FIGL_C30 and 0FIGL_V31 under the multi provider. But w