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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.12.2009, 14:15   #41  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1238 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Antant Посмотреть сообщение
Ни у кого не получилось решить задачку со сменой значка 4.0/5.0 ?
А зачем иконку менять? Нужно различать приложения?
Можно не иконку, а caption главного окна поменять

\Classes\Info\workspaceWindowCreated:
X++:
void workspaceWindowCreated(int _hWnd)
{
;
    // Put workspace window specific initialization here.

    //DSPIC -->
    WinApi::setWindowText(_hWnd, strFmt("%1 - %2", WinApi::getWindowText(_hWnd), "DEV"));
    //DSPIC <--
}

Последний раз редактировалось DSPIC; 30.12.2009 в 14:22.
За это сообщение автора поблагодарили: npokypatop (1).
Старый 29.07.2010, 12:22   #42  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Штатно в заголовке окна клиента AX 2009 из информации о сервере показывается лишь название хоста AOS'а. Чтобы не заморачиваться с изменением иконок, отображением названия каталога с приложением и проч., захотелось видеть в заголовке название БД (схемы в случае с Oracle). Для Oracle пришлось делать отдельный метод, потому что если задать в настройках AOS некий "общий" TNS, а схему указать отдельно, то я не нашел, как ее выцепить штатными средствами. В общем, решено это все было следующим образом:
\Classes\Info\DEV_setAxWorkspaceTitle
X++:
/// <summary>
///     выставляет более информативный и в то же время лаконичный заголовок окна рабочей области AX
/// </summary>
/// <param name="_hWnd">
///     дескриптор окна рабочей области, для которой нужно поменять заголовок
/// </param>
protected void DEV_setAxWorkspaceTitle( HWND _hWnd = this.hWnd( xInfo::currentWorkspaceNum() ) )
{
    xSession    session;
    str         caption;
    ;
    Debug::assert( _hWnd != 0 );
    session = new xSession();
    caption = strfmt( @"%1 [%2@%3: %4 %5] - [%6 - %7]", "@SYS119901", DEV_getCurrentDatabaseName(), session.AOSName(),
                        "@SYS7115", session.sessionId(), xInfo::currentWorkspaceNum(), curext()
                    );
    WinAPI::setWindowText( _hWnd, caption );
}
\Classes\Global\DEV_getCurrentDatabaseName
X++:
/// <summary>
///     возвращает название текущей базы (MsSQL) или схемы (Oracle)
/// </summary>
/// <returns>
///     название базы/схемы, с которой работает AOS
/// </returns>
/// <exception cref="Exception::Error">
///     выбрасывается, если используемая СУБД - не Ms SQL или Oracle
/// </exception>
public static client server str DEV_getCurrentDatabaseName()
{
    DatabaseId  databaseId;
    str         ret;
    ;
    ret = classFactory.globalCache().get( funcname(), '', '' );
    if (ret == '')
    {
        databaseId = SqlSystem::databaseBackendId();
        switch (databaseId)
        {
            case DatabaseId::Oracle :
                ret = DEV_getCurrentOracleSchemaName();
                break;
            case DatabaseId::MS_Sql_Server :
                ret = new SqlSystem().loginDatabase();
                break;
            default :
                throw error( Error::wrongUseOfFunction( funcname() ) );
        }
        classFactory.globalCache().set( funcname(), '', ret );
    }
    return ret;
}
\Classes\Global\DEV_getCurrentOracleSchemaName
X++:
/// <summary>
///     возвращает название текущей схемы в Oracle, если текущая используемая СУБД - Oracle
/// </summary>
/// <returns>
///     название текущей схемы в Oracle
/// </returns>
public static server str DEV_getCurrentOracleSchemaName()
{
    SqlStatementExecutePermission   sqlStatmPerm;
    str                             sqlStatm;
    Statement                       statement;
    ResultSet                       resultSet;
    str                             ret;
    ;
    Debug::assert( SqlSystem::databaseBackendId() == DatabaseId::Oracle );
    sqlStatm = @"select sys_context( 'userenv', 'current_schema' ) current_schema from dual";
    sqlStatmPerm = new SqlStatementExecutePermission( sqlStatm );
    sqlStatmPerm.assert();
    statement = new Connection().createStatement();
    // BP Deviation Documented
    resultSet = statement.executeQuery( sqlStatm );
    if (resultSet.next())
    {
        ret = resultSet.getString( 1 );
    }
    CodeAccessPermission::revertAssert();
    return ret;
}
Вызов this.DEV_setAxWorkspaceTitle() был добавлен в методы класса Info workspaceWindowCreated() и onEventGoingIdle(). Получилось примерно так:
За это сообщение автора поблагодарили: mazzy (2), raz (5), lev (2), aidsua (2), npokypatop (1).
Теги
ax2009, axapta, download, faq, winapi, база данных, внешний вид, законченный пример, иконка, интерфейс, полезное, фон

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сильно модифицировано ваше приложение Аксапты? mazzy DAX: Прочие вопросы 30 14.04.2011 17:26
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
миграция - в Аксапте и с Аксапты somebody DAX: Программирование 5 18.10.2005 11:06
Как быстро освоить библиотеку классов Аксапты? spartan DAX: Программирование 9 11.05.2005 12:07
Экспорт / импорт Help topics и запуск второй сессии Аксапты из-под себя DmitrySt DAX: Программирование 0 25.11.2004 00:22

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.