Еще раз о переключении RUS-LAT в WINXP

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Гость

Сообщение Гость »

На форуме перидически обсуждается проблема переключения
РУС-ЛАТ в ХР.Может мне очень везет,но почему то у меня этой
проблемы не было на XP,XP+SP1,XP+sp2 как на русских версиях,
так и на анлийских с MUI.Платформы CLARION от с5 до с61.Причем
не только на своем компе,но и на компах заказчиков.Один раз была
проблема у заказчика под WIN2000 при переустановке системы,но
его админ сам решил проблему.Так может быть дело не в кларионе,
а каких то нестандарных настройках ХР?

Написал: lsgsoftware(155)
Гость

Сообщение Гость »

Прблема проявляется только при работе с MDI интерфейсом.

Если Вы используете для своих проектов интерфейс SDI - то
с этой проблемой никогда не столкнетесь (а в C55 еще и с
проблемой переключения потоков).

С уважением, ТАТА
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

А ещё надо поставить Office - тогда в памяти сядет ctfmon.exe и весь букет удовольствий - на лицо...
Написал: Aragorn(147)
Гость

Сообщение Гость »

Дорогая Тата!
Режим MDI я действительно не использую из-за
личных принципиальных соображений.Но чтобы закрыть вопрос
собрал простенький АРР на С61 с MDI-интерфейсом.ОС WINX+SP1+MUI.Установлен MS OFFICE 2003.Как ни странно,но переключение RUS-LAT работает нормально.Так что может быть
все таки дело не в Clarion?
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

Я, конечно, дико извиняюсь за то, что опять влезаю в ваш диалог... а какой комбинацией клавиш вы пользуетесь для переключения?
Написал: Aragorn(147)
Гость

Сообщение Гость »

Переключение Лев.Alt_Пр.Shift-стандарт,а также мышью по
языковой панели,что зачастую удобнее!
Гость

Сообщение Гость »

Влазьте. На то и форум ... ;)
Чем больше будут "влазить" - тем быстрее "вылезем" ... ;)

А сделайте пожалуйста простой эксперимент на Вашем чудо-компьютере.
- Запустите, что нибудь из MS Office 2003 - например Word;
- Вызовите помощника (Справка -> Показать помощника)
- Щелкните по нему мышкой - откроется желтое окно для запроса
- В нем у Вас тоже нормально с клавиатуры переключается раскладка ?

Спасибо за информацию.

P/S: Если бы всем было бы удобней переключать "мышью по панели" - тогда бы точно проблемы не было ... ;)

C уважением, ТАТА
Гость

Сообщение Гость »

из этого следует - помошник написан на кларионе! ;)
Написал: vad7(154)
Гость

Сообщение Гость »

Из этого следует - что в WinXP есть проблемы с переключением
раскладки клавиатуры не зависящие от Clarion и программ на нем
написанных.
Пример с Word не единственный, но наиболее наглядный.
Проявляется сия проблема при т.н. текстовом вводе -
которые используется в приложениях собранных на Clarion ... :(

TATA
Гость

Сообщение Гость »

Господа ! Я прошу прощения но!
Установка Пунто http://WWW.PUNTO.RU Решает эту проблемку
С ХР:)
Гость

Сообщение Гость »

Безусловно решает (если отключить дополнительные текстовые службы).
Правда появляются другие - не переключается раскладка на рабочем
столе Windows (XP SP2), но это уже мелочи ...

Разговор был о другом - как решить проблему из Clarion-программ.

ТАТА
Гость

Сообщение Гость »

Так все же? Есть решение по переключению раскладки в XP из Клариона?
Написал: Vasiliy(173)
Гость

Сообщение Гость »

Привет!
Я переключал язык из Клариона с помощью API-функций.
Посмотри пример - вдруг чем-либо поможет.

Код: Выделить всё

      Program

   INCLUDE('EQUATES.CLW')
   INCLUDE('ERRORS.CLW')
   INCLUDE('KEYCODES.CLW')

Latin    CSTRING('00000409')
Russian  CSTRING('00000419')
Ukraine  CSTRING('00000422')
CurL     string(2)

   MAP
     SwitchKBD(String KBDLayout)
     MODULE('Windows.lib')
      GetKBDLName(*CSTRING),BOOL,PASCAL,RAW,!
                            NAME('GetKeyboardLayoutNameA')
      ActivateKBDL(ULONG,UNSIGNED),ULONG,PASCAL,!
                            NAME('ActivateKeyboardLayout')
     END
   END

LID     cstring(10)
TmpStr  string(50)

Window WINDOW('Тест переключени<255> <255>зыка'),AT(,,185,92), !
                                FONT('MS Sans Serif',8,,FONT:regular),GRAY
       STRING('ID <255>зыка:'),AT(13,11),USE(?String1)
       STRING(@s10),AT(52,11),USE(LID)
       PANEL,AT(94,11,17,11),USE(?Panel1),BEVEL(-1)
       STRING(@s2),AT(95,11,14,10),USE(CurL),CENTER,!
                            FONT(,,COLOR:White,),COLOR(0A00000H)
       ENTRY(@s50),AT(22,38,112,10),USE(TmpStr)
       BUTTON('Язык'),AT(37,71,35,14),USE(?OkButton),DEFAULT
       BUTTON('Cancel'),AT(82,71,36,14),USE(?CancelButton),!
                    STD(STD:Close)
     END

    code
    DO GetKBDL
    open(Window)
    accept
      case accepted()
      of ?OkButton
        Q# = ActivateKBDL(1,0)
        DO GetKBDL
        display(?LID);display(?CurL)
        select(?TmpStr)
        presskey(RightKey)
      end ! case
    end !accept
GetKBDL  ROUTINE
    R# = GetKBDLName(LID)
    case LID
      of Latin   ; CurL = 'En'
      of Russian ; CurL = 'Ru'
      of Ukraine ; CurL = 'Uk'
    else
      CurL = '**'
    end

SwitchKBD Procedure (KBDLayout)
AKL  ULONG
TMP  CSTRING(20)
loc:i Long
 Code
 loc:i = GetKBDLName(Tmp)
 if Tmp<>KBDLayout
   AKL = ActivateKBDL(1,0)
 end
С уважением,
Mit
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Сообщение Aragorn »

Пардон, но это код типа "Вот ща мы тут нажмём мышкой на эту пимпочку (кнопочку), и у нас переключится раскладка!!!"
А это СОВСЕМ НЕ ТО ЧТО НУЖНО!!!
Нужно, чтобы раскладка по-нормальному переключалась по Ctrl+Shift или Alt+Shift!!!
А то, что предложено, и так ясно, как забацать.
Написал: Aragorn(147)
Гость

Сообщение Гость »

Действительно все работает, только глобально для всей программы переключение раскладки определить не удалось. Даже прописав клавиши по умолчанию и спрятав кнопку. Срабатывает только для главного окна, а в каждой форме приходиться прописывать заново. Что не есть удобно :(
Написал: Vasiliy(173)
Ответить