AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.04.2010, 10:37   #1  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Всплывающее окно
Очень впечатлило Уведомление при добавлении нового действия, можно ли в Ах сделать всплывающее окошко, чтоб никаких кнопок и само исчезало))?
PS: уже в предвкушении где смогу его использовать
Старый 22.04.2010, 10:54   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Возможно сделать все. Вопрос времени (c) sukhanchik
Старый 22.04.2010, 11:43   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Возможно сделать все. Вопрос времени (c) sukhanchik
Гы... уже цитируют
__________________
Возможно сделать все. Вопрос времени
Старый 22.04.2010, 12:13   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
типа алертов?
Старый 22.04.2010, 13:47   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Лучше, конечно, использовать стандартные оповещения - тогда пользователь не сможет "не заметить" оповещение - оно будет светится внизу форм, можно будет посмотреть в списке оповещений.

P.S. в принципе показать текущему пользователю всплывающее окошко не так сложно - минут 5 программирования см. класс EventAlertPoller.
__________________
Ivanhoe as is..
Старый 23.04.2010, 06:39   #6  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Лучше, конечно, использовать стандартные оповещения - тогда пользователь не сможет "не заметить" оповещение - оно будет светится внизу форм, можно будет посмотреть в списке оповещений.

P.S. в принципе показать текущему пользователю всплывающее окошко не так сложно - минут 5 программирования см. класс EventAlertPoller.
1. Список оповещения впринципе ненужен, окно нужно чтобы пользователь просто незабывал информацию. Ну если будет, пусть будет)
2. Можно поподробнее про не так сложно. Класса такого нет у нас - AX 3.0 SP4.
Старый 23.04.2010, 10:22   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Эхх какая у вас версия... оповещения появились тока в 4.0. А так см. сообщение номер два

Для счастливых обладателей AX 2009 пример во вложении.
Вложения
Тип файла: xpo PrivateProject_AttentionGrabber.xpo (44.4 Кб, 217 просмотров)
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 23.04.2010 в 10:26. Причина: Добавил вложение.
Старый 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();
Старый 24.05.2012, 16:08   #9  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Player1 Посмотреть сообщение
Очень впечатлило Уведомление при добавлении нового действия, можно ли в Ах сделать всплывающее окошко, чтоб никаких кнопок и само исчезало))?
PS: уже в предвкушении где смогу его использовать
Ну окошко без кнопок это совсем просто - через свойства. А так по таймеру закрывать или прятать.
X++:
element.setTimeOut('confirm', i * 1000);
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 25.05.2012, 07:57   #10  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Я как то выкладвал библиотечку, в ней были примеры плавающих окон (виртуальная клавиатура). Могу предложить последнюю версию. Посмотрите папку - готовые примеры.
Для работы с принтером ШК (PPLA), необходимы DLL, если кого заинтересует, то могу выложить вместе с описанием.

С уважением, Дмитрий.
Вложения
Тип файла: xpo SharedProject_TestJob (81).xpo (253.6 Кб, 150 просмотров)
Старый 25.05.2012, 07:58   #11  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
А если использовать внешнюю dll с нужной фукцией?

Только вот у меня огромная проблема: допустим нашел dll, с помощью DLL ExportViewer узнал имя нужной функции, а дальше? Как узнать какие типы писать в .args(..., в .returns(... и тем более как вызывать .call(...? Научити
PS: описание dll само собой нигде не найти, никаких guide нет.
Старый 25.05.2012, 08:17   #12  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Есть 2 способа подключения dll
1) Обращение к фукнкции dll с описанием параметров, кстати, пример посмотрите в WinApi или в выложеной мной библиотеке

DLL _dll = new DLL("GDI32.dll");
DLLFunction _CreateCompatibleBitmap = new DLLFunction _dll, "CreateCompatibleBitmap");
;

_CreateCompatibleBitmap.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord);
_CreateCompatibleBitmap.returns(ExtTypes::DWord);

return _CreateCompatibleBitmap.call(DC, w, h);

2) net dll, библиотека классов, написанная, например на с#
Используя командную строку <path gacutil –I имя.dll> зарегистрируйте dll. Копия dll скопирована системой в asm и будет доступна из Axapta как класс.
Для подключения использования в Axapta используйте
AOT\references\добавить ссылку - dll должна быть в списке. Выберете ее.


С уважением, Дмитрий

Последний раз редактировалось Dron AKA andy; 25.05.2012 в 11:51.
Старый 25.05.2012, 08:24   #13  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Если Вам ни чего не известно про dll, то попробуйте реассмблировать ее и посмотреть в каждой функции как извлекаются параметры из стека.

С уважением, Дмитрий.
Старый 25.05.2012, 08:24   #14  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Интересует 1 вариант, всё это я смотрел и понимаю что делается. Непонятно как узнать что в коде надо писать - передаю 3 параметра типа DWord...и т.д. Как это узнавать если нет документации?

PS: SharedProject_TestJob (81).xpo немогу загрузить, у меня Ах 3
Старый 25.05.2012, 08:32   #15  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Вы не можете определить количество параметров и их тип? Или только не понимаете, как описать тип?

Библиотека делалась в 2009. Но текст то посмотреть можно.

C уважением, Дмитрий
Старый 25.05.2012, 08:36   #16  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Ну получается ни то ни другое. С чего начать курочить стороннюю библиотеку?))
Кол-во параметров можно конечно перебором узнать, но это как-то не профессионально)
Старый 25.05.2012, 08:50   #17  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Я бы сначала попыталься понять, а можно ли ни чего не курочить....
Ну уж если надо...
Я не шутил, когда предложил Вам реассемблировать, в голове каждой функции вы могли бы точно увидеть, что извлекается из стека, взависимости от размещения данных понять ссылки это или значения и т.д. Это муторный вопрос....

С уважением, Дмитрий.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Диалоговое окно с запросом Poleax DAX: Программирование 3 21.05.2008 10:40
Где окно для ввода лицензий? natterru DAX: Прочие вопросы 1 29.01.2008 23:40
Вызвать отчет напрямую, минуя окно установки условий ATimTim DAX: Программирование 4 19.10.2004 12:10
Диалоговое окно с Lookup полями Julietta DAX: Программирование 1 15.12.2003 13:00
диалоговое окно в init (e) Report (a) Natasha DAX: Программирование 8 05.03.2003 16:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:43.