Показать сообщение отдельно
Старый 24.05.2012, 14:24   #8  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Про модальность молчу, так баловство, просто эффект "раскручивания" окна из высоты = 0
X++:
    Args                    args = New Args();
    int                     handleForm, mainwin;
    FormRun                 FormRun;
    TreeNode                TreeNode;
    FormStaticTextControl   FormSTControl;
    FormBuildDesign         FormDesign;
    Form                    Form;
    int                     i, rightPointer, topPointer;

    Binary                  data            = new Binary(32);
    DLL                     _winApiDLL      = new DLL('user32');
    DLLFunction             _function       = new DLLFunction(_winApiDLL, 'GetWindowRect');
    ;

    //FormRun = classFactory.formRunClass(new Args("Form18"));

    Form = new Form('EmptyForm');
    args.object(form);
    formRun = classFactory.formRunClass(args);

    FormDesign = Form.design();
    FormDesign.frame(FormFrame::Border);
    //FormDesign.windowType(FormWindowType::PopUp);
    FormDesign.colorScheme(2);
    FormDesign.backgroundColor(WinApi::RGB2int(112, 208, 250));
    FormDesign.columns(1);

    FormRun.init();

    _function.returns(ExtTypes::DWord);
    _function.arg(ExtTypes::DWord, ExtTypes::Pointer);
    _function.call(infolog.hWnd(), data);

    rightPointer = data.dWord(8)-4-22;
    topPointer = data.dWord(12);


    FormRun.design().width(180);
    FormRun.design().height(0);

    FormRun.design().left(rightPointer-180);
    FormRun.design().top(topPointer);

    FormSTControl = FormRun.design().addControl(FormControlType::StaticText, "TitleTextForm");
    FormSTControl.widthMode(FormWidth::ColumnWidth);
    FormSTControl.text("Çàãîëîâîê");
    FormSTControl.colorScheme(2);
    FormSTControl.backgroundColor(WinApi::RGB2int(255, 0, 0));
    FormSTControl.foregroundColor(WindowsPalette::Desktop);

    FormRun.run();
    FormRun.formOnTop();

    topPointer = FormRun.design().topValue();

    for (i = 1; i<=200; i++)
    {
        FormRun.design().top( FormRun.design().topValue() - 1 );
        if (FormRun.design().heightValue() <= 165)
        FormRun.design().height( FormRun.design().heightValue() + 1 );
        sleep(5);
    }

    sleep(4000);
    //FormRun.wait();
    FormRun.close();