22.05.2009, 16:24 | #1 |
Участник
|
строка в статус баре
День добрый всем? Каким образом можно выводить свой текст в статус бар? т.е. если мы бегаем по АОТ, в нижнем левом углу отображается путь, а мне нужно в определенный момент выводить туда свой и текст и желательно изменять цвет фона.
|
|
22.05.2009, 16:32 | #2 |
Участник
|
А еще есть вот такой вариант.
|
|
|
За это сообщение автора поблагодарили: greench (1), DSPIC (2). |
22.05.2009, 16:32 | #3 |
Боец
|
Для изменения данного текста придется воспользоваться WinApi
\Classes\WinAPI\setWindowText(int _handle, str _txt ) Небольшая трудность(техническая) - в получении _handle этого окна. В этом также поможет WinApi и утилитка Microsoft Spy, которая идет в комплекте с MS VisualStudio |
|
22.05.2009, 16:37 | #4 |
Участник
|
Цитата:
Сообщение от Stitch_MS
А еще есть вот такой вариант.
|
|
22.05.2009, 16:42 | #5 |
Боец
|
Цитата:
Сообщение от Stitch_MS
А еще есть вот такой вариант.
+ наверняка - переключает статус-бар в "ручной режим". Как я понял - автору нужно туда мгновенные месаги кидать на ярком фоне, а в остальном - стандартное поведение должно быть ?! |
|
22.05.2009, 16:47 | #6 |
Участник
|
Вы меня абсолютно правильно поняли. В приведенном выше коде записывается сообщение в правую часть status line
|
|
22.05.2009, 16:50 | #7 |
Участник
|
WinAPI
В базе знаний: Как вывести строку в StatusBar?
__________________
Dynamics AX 4.0 SP2 |
|
22.05.2009, 17:02 | #8 |
Боец
|
Цитата:
Добавлю ещё как идею. В момент, когда нужно вывести текст в статус-бар, сам статус бар можно обводить в рамку или ещё как-нибудь выделять. Например, как в FormDigger'e, или что-нибудь похожее, чтобы юзер сразу обратил внимание. Но тут уж WinApi и тема, предложенная in.dc |
|
25.05.2009, 10:13 | #9 |
Участник
|
Простите за назойливость. А hWnd никто не подскажет для AX 4.0? Я из под терминала не могу поймать.
|
|
25.05.2009, 10:31 | #10 |
Боец
|
X++: static void hWndStatusBar(Args _args) { HWnd hWndStatusBar; ; hWndStatusBar = WinApi::findWindowEx(infolog.hWnd(), 0, identifierstr(AxChildFrame), ''); hWndStatusBar = WinApi::findWindowEx(hWndStatusBar, 0, identifierstr(AxStatusBar), ''); WinApi::setWindowText(hWndStatusBar, "234"); } |
|
|
За это сообщение автора поблагодарили: greench (1). |
25.05.2009, 10:54 | #11 |
NavAx
|
А так не пробовали?
X++: static void Test(Args _args) { int i; Percentbar percentbar; ; percentbar = new Percentbar(1000, "Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1"); sleep(3000); percentbar.finalize(); percentbar = new Percentbar(1000, "Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2"); sleep(3000); percentbar.finalize(); percentbar = new Percentbar(1000, "Operation in progress"); for (i = 1; i <= 1000; i++) { percentbar.set(i); sleep(3); } } |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
25.05.2009, 11:24 | #12 |
Участник
|
Небольшой штрих
Цитата:
Сообщение от DSPIC
X++: static void hWndStatusBar(Args _args) { HWnd hWndStatusBar; ; hWndStatusBar = WinApi::findWindowEx(infolog.hWnd(), 0, identifierstr(AxChildFrame), ''); hWndStatusBar = WinApi::findWindowEx(hWndStatusBar, 0, identifierstr(AxStatusBar), ''); WinApi::setWindowText(hWndStatusBar, "234"); } X++: static void jbStatusBarTextDax40(Args _args) { HWND hWndChildFrame = WinApi::findWindowEx( infolog.hWnd(), 0, identifierstr( AxChildFrame ), "StatusBar" ) ; HWND hWndStatusBar = WinApi::findWindowEx( hWndChildFrame, 0, identifierstr(AxStatusBar), "" ) ; ; if( hWndStatusBar ) WinApi::setWindowText( hWndStatusBar, "demo text in status bar" ) ; } X++: hWndStatusBar = WinApi::findWindowEx(infolog.hWnd(), 0, identifierstr(AxChildFrame), ''); UPD: результат тестирования исходного варианта X++: static void hWndStatusBar(Args _args) { HWnd hWndStatusBar; ; hWndStatusBar = WinApi::findWindowEx(infolog.hWnd(), 0, identifierstr(AxChildFrame), ''); info( strfmt( "%1 - %2", hWndStatusBar, WinAPI::getWindowText( hWndStatusBar ) ) ) ; hWndStatusBar = WinApi::findWindowEx(hWndStatusBar, 0, identifierstr(AxStatusBar), ''); info( strfmt( "%1 - %2", hWndStatusBar, WinAPI::getWindowText( hWndStatusBar ) ) ) ; WinApi::setWindowText(hWndStatusBar, "234"); } Последний раз редактировалось petergunn; 25.05.2009 в 11:31. |
|
25.05.2009, 11:37 | #13 |
Боец
|
Да, согласен.
А что за окно NavPaneFloatingFrame? что-то не нахожу |
|
25.05.2009, 11:51 | #14 |
NavAx
|
|
|
25.05.2009, 12:08 | #15 |
Участник
|
Выскажу предположение что на наличие этого окна в структуре окон приложения оказывает влияние параметр Auto-Hide Navigation (Автоматически скрыть область перехода) из меню View (Вид) - у меня он был отмечен.
Ниже приложил снимок иерархии окон в зависимости от состояния этого пункта меню: |
|
|
За это сообщение автора поблагодарили: DSPIC (2). |
25.05.2009, 14:56 | #16 |
Участник
|
Всем большое спасибо за ответы. Разобрался, но не пригодилось
Все равно понять для себя как такие вещи делаются - очень полезно. |
|