Показать сообщение отдельно
Старый 27.08.2007, 23:00   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
dax-lessons: Graphical Indiactors in AX(Analogmeters)
Источник: http://DAX-Lessons.spaces.live.com/B...FCD1!128.entry
==============

 
Graphical indicators(Analogmeters) are used to display the results of a query or statistics related to measurements.

For each graphical indicator, you need to define the following:
  • A starting and ending value for a segmented semi-circle
  • The maximum value for each segment, or area, of the semi-circle
  • A header and a unit for all valuesA color for each segment, text, value, and background.
Here is a small job which will create form and analogmeter at runtime. Values(Min,Max,Pos etc)are hardcoded in the below example.You can change the code to take the values from the tables.

static void createAnalogMeter(Args _args)
{
    Form                           formBrowse;
    FormActivexControl      activex;
    FormRun                      formRun;
    Args                            args;

    TreeNode                treeNode;
    Object  waitObject = new Object();
    ;

    formBrowse = new Form('AnalogMeter Example', true);
    formBrowse.design().width(500);
    formBrowse.design().height(500);
    formBrowse.design().caption('Analogmeter');
    formBrowse.design().addControl(FormControlType::ActiveX, 'Browser');

    args = new Args(formBrowse.name());
    args.name(formBrowse.name());
    args.object(formBrowse);

    formRun = classFactory.formRunClass(args);
    formRun.init();

    activex = formRun.design().controlName('Browser');
    activex.height(1,1);
    activex.width(1,1);
    activex.className('{706FF037-D46D-11D2-AB8D-0008C7631C69}');
    activex.BackColor(winapi::RGB2int(255,255,236));
    activex.displayHotArea(true);
    activex._Caption('Analog meter Example');
    activex.minValue(22000);
    activex.maxValue(40000);
    activex.addMarker(25000,255,"This is where i stand");
    activex.NeedleColor(winapi::RGB2int(0,128,0));
    activex.pos(25000);
    formRun.run();

    formRun.detach();
    while (activex.pos() != 40000)
    {

        waitObject.setTimeOut('Notify', 1000);
        waitObject.wait();
        activex.pos(activex.pos() + 1000);
    }

}
This is how analogmeter looks




Источник: http://DAX-Lessons.spaces.live.com/B...FCD1!128.entry
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.