Проблема с MESSAGE()

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Проблема с MESSAGE()

Сообщение dsabitov »

Уважаемые коллеги.

Может быть есть ответ на вопрос, почему в Clarion10 (win) у меня не правильно работает MESSAGE?
Например, если я в коде укажу

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

msgText"='ООО "ТК ГАСС-АВТО"'
MESSAGE(msgText")
, то при возникновении этого сообщения я получаю усеченный вариант:
screen.jpg
screen.jpg (7.59 КБ) 10320 просмотров
Проблема, видимо, в локализации. Ранее в форуме я нашел рекомендации нашего гуру (Admin) по этому вопросу - добавить в свое приложение код для поддержки кириллицы:

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

    LOCALE('CLACHARSET','WINDOWS')
    LOCALE('CLAMON','Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек')
    LOCALE('CLAMONTH','Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь')
    LOCALE('CLACASE','ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ,abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщьыъэюя')
    LOCALE('CLAAMPM','ут,вч')
    SYSTEM{PROP:CharSet}=CHARSET:CYRILLIC
    LOCALE('CLABUTTON','&OK,&Да,&Нет,Пре&рвать,&Повторить,&Игнорировать,&Отменить,&Справка')
Однако это не помогло...
Как исправить ситуацию?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с MESSAGE()

Сообщение Игорь Столяров »

Ну вот недавно эту тему уже по десятому кругу обсуждали:
http://forum.clarionlife.net/phpbb/view ... 3ACYRILLIC

Посмотрите пожалуйста. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Проблема с MESSAGE()

Сообщение dsabitov »

Спасибо, плохо искал...

Для себя экспериментальным путем выявил - помогает вставка:

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

    SYSTEM{PROP:FontCharSet}=CHARSET:CYRILLIC
    SYSTEM{PROP:Font} = 'Microsoft Sans Serif' 
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с MESSAGE()

Сообщение Игорь Столяров »

Пожалуйста. Как - вариант, наверно да.
Шрифт 'Microsoft Sans Serif' сам по себе стар и убог, оформление получается красивее с использованием
современных системных шрифтов Windows, или хотя бы "Arial" (как в моем примере).
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Проблема с MESSAGE()

Сообщение Губин Игорь »

dsabitov писал(а): Для себя экспериментальным путем выявил - помогает вставка
Увы, помогает не всегда. Я отказался от встроенного Message заменив на вызов стандартного из API. заодно и проблем с кривыми иконками не стало.
Это я только кажусь дураком! На самом деле я полный идиот!
ACN
Бывалый
Сообщения: 98
Зарегистрирован: 28 Июнь 2015, 13:04

Проблема с MESSAGE()

Сообщение ACN »

Губин Игорь писал(а): Я отказался от встроенного Message заменив на вызов стандартного из API.
А можно пример сразу, а то когда я не скоро доберусь до API?
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Проблема с MESSAGE()

Сообщение Губин Игорь »

ACN писал(а): А можно пример сразу, а то когда я не скоро доберусь до API?
Полного переходника, как такового, нет, поленился, но пример прост

Инструкция в MSDN: https://msdn.microsoft.com/ru-ru/librar ... 85%29.aspx

Переходник

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

             WinAPIMessage(String,String,long),Long ! Сообщение средствами API

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

WinAPIMessage          Procedure(WText,WHeader,WStyle)

CHeader                 CString(Size(WHeader)+1)
CText                   CString(Size(WText)+1)
IRet                    LONG
    CODE

        CHeader = Clip(WHeader)
        CText = Clip(WText)
        IRet = MessageBox(0{PROP:Handle},Address(CText),ADDRESS(CHeader),WStyle)
        Return(IRet)        
Пример вызова
Case WinAPIMessage('текст сообщения','заголовок сообщения',MB_ICONHAND + MB_OK + MB_APPLMODAL)
OF BIDOK
End
В головняке

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

! Кнопки из Windows API
BIDABORT Equate(3)
BIDCANCEL Equate(2)
BIDCONTINUE Equate(11)
BIDIGNORE Equate(5)
BIDNO Equate(7)
BIDOK Equate(1)
BIDRETRY Equate(4)
BIDTRYAGAIN Equate(10)
BIDYES Equate(6)
ну и надо подключить
Include('svapi.inc'),once
и в MAP: Include('svapifnc.inc'),ONCE
Это я только кажусь дураком! На самом деле я полный идиот!
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Проблема с MESSAGE()

Сообщение kreator »

Вопрос Игорю Губину. Не пробовал воспользоваться {prop:MessageHook}, он же {prop:LibHook,6}. Судя по описанию - как раз для замены стандартного кларионовского Message. Я подумываю попробовать, меня больше интересует дизайн окна, правда.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с MESSAGE()

Сообщение Игорь Столяров »

Стандартный Message() конечно просто в плане оформления, зато многофункционален.
Когда-то был шаблон MessageX (попробуй поискать) - он реализовал расширенные функционал и оформление,
через использование WinAPI и как раз позицировался для замены стандартного Message() ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Проблема с MESSAGE()

Сообщение Дед Пахом »

Залил на FTP CapesoftMessageBoxInstall_v2.37.exe
С уважением, ДП
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Проблема с MESSAGE()

Сообщение Губин Игорь »

kreator писал(а): Не пробовал воспользоваться {prop:MessageHook}, он же {prop:LibHook,6}
Если честно, то нет. Мне оказалось проще склепать вызов API, да и большинство вызовов этой процедуры у меня идёт через шаблоны, т.ч. "один раз сделал и больше не мучайся"
Игорь Столяров писал(а): Когда-то был шаблон MessageX (попробуй поискать) - он реализовал расширенные функционал и оформление

Надо поискать. Глядишь и что-то интересное получится
Это я только кажусь дураком! На самом деле я полный идиот!
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Проблема с MESSAGE()

Сообщение Shur »

Ну так, чтобы тема охватила все варианты! :)
Мне хватает наличия следующей процедуры в проекте:

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

MessageCR  PROCEDURE  (STRING _text,<STRING _caption>,<STRING _icon>,<STRING _buttons>,<ULONG _default>,<ULONG _style>) 
  CODE
  return(message(_text&'<13,10>',_caption,_icon,_buttons,_default,_style))
В своём коде пользуюсь ей, шаблоны оставил как есть.
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Проблема с MESSAGE()

Сообщение kreator »

Shur писал(а):В своём коде пользуюсь ей, шаблоны оставил как есть.
Всё правильно. Попробуй в начале программы вот так:

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

system{prop:MessageHook} = address(MessageCR)
Ваша процедура должна появляться всегда, шаблоны править не нужно.
Дед Пахом писал(а):Залил на FTP CapesoftMessageBoxInstall_v2.37.exe
Как бы то, что нужно. Почему денег не попросило данное чудо?
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Проблема с MESSAGE()

Сообщение Дед Пахом »

kreator писал(а): Почему денег не попросило данное чудо?
Мне переводи, я передам :-)
С уважением, ДП
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Проблема с MESSAGE()

Сообщение Shur »

kreator писал(а):Попробуй в начале программы вот так:

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

system{prop:MessageHook} = address(MessageCR)
Ваша процедура должна появляться всегда, шаблоны править не нужно.
Креатор, спасибо, конечно. А замыкания часом не получится? Лучше не стану.
Ответить