Страница 1 из 2
Проблема с MESSAGE()
Добавлено: 08 Январь 2016, 12:03
dsabitov
Уважаемые коллеги.
Может быть есть ответ на вопрос, почему в Clarion10 (win) у меня не правильно работает MESSAGE?
Например, если я в коде укажу
Код: Выделить всё
msgText"='ООО "ТК ГАСС-АВТО"'
MESSAGE(msgText")
, то при возникновении этого сообщения я получаю усеченный вариант:

- screen.jpg (7.59 КБ) 12998 просмотров
Проблема, видимо, в локализации. Ранее в форуме я нашел рекомендации нашего гуру (Admin) по этому вопросу - добавить в свое приложение код для поддержки кириллицы:
Код: Выделить всё
LOCALE('CLACHARSET','WINDOWS')
LOCALE('CLAMON','Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек')
LOCALE('CLAMONTH','Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь')
LOCALE('CLACASE','ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ,abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщьыъэюя')
LOCALE('CLAAMPM','ут,вч')
SYSTEM{PROP:CharSet}=CHARSET:CYRILLIC
LOCALE('CLABUTTON','&OK,&Да,&Нет,Пре&рвать,&Повторить,&Игнорировать,&Отменить,&Справка')
Однако это не помогло...
Как исправить ситуацию?
Проблема с MESSAGE()
Добавлено: 08 Январь 2016, 12:09
Игорь Столяров
Ну вот недавно эту тему уже по десятому кругу обсуждали:
http://forum.clarionlife.net/phpbb/view ... 3ACYRILLIC
Посмотрите пожалуйста.

Проблема с MESSAGE()
Добавлено: 08 Январь 2016, 12:32
dsabitov
Спасибо, плохо искал...
Для себя экспериментальным путем выявил - помогает вставка:
Код: Выделить всё
SYSTEM{PROP:FontCharSet}=CHARSET:CYRILLIC
SYSTEM{PROP:Font} = 'Microsoft Sans Serif'
Проблема с MESSAGE()
Добавлено: 08 Январь 2016, 12:39
Игорь Столяров
Пожалуйста. Как - вариант, наверно да.
Шрифт 'Microsoft Sans Serif' сам по себе стар и убог, оформление получается красивее с использованием
современных системных шрифтов Windows, или хотя бы "Arial" (как в моем примере).
Проблема с MESSAGE()
Добавлено: 08 Январь 2016, 13:57
Губин Игорь
dsabitov писал(а): Для себя экспериментальным путем выявил - помогает вставка
Увы, помогает не всегда. Я отказался от встроенного Message заменив на вызов стандартного из API. заодно и проблем с кривыми иконками не стало.
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 8:56
ACN
Губин Игорь писал(а): Я отказался от встроенного Message заменив на вызов стандартного из API.
А можно пример сразу, а то когда я не скоро доберусь до API?
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 9:46
Губин Игорь
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
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 11:48
kreator
Вопрос Игорю Губину. Не пробовал воспользоваться {prop:MessageHook}, он же {prop:LibHook,6}. Судя по описанию - как раз для замены стандартного кларионовского Message. Я подумываю попробовать, меня больше интересует дизайн окна, правда.
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 12:01
Игорь Столяров
Стандартный Message() конечно просто в плане оформления, зато многофункционален.
Когда-то был шаблон MessageX (попробуй поискать) - он реализовал расширенные функционал и оформление,
через использование WinAPI и как раз позицировался для замены стандартного Message() ...
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 12:54
Дед Пахом
Залил на FTP CapesoftMessageBoxInstall_v2.37.exe
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 13:17
Губин Игорь
kreator писал(а): Не пробовал воспользоваться {prop:MessageHook}, он же {prop:LibHook,6}
Если честно, то нет. Мне оказалось проще склепать вызов API, да и большинство вызовов этой процедуры у меня идёт через шаблоны, т.ч. "один раз сделал и больше не мучайся"
Игорь Столяров писал(а): Когда-то был шаблон MessageX (попробуй поискать) - он реализовал расширенные функционал и оформление
Надо поискать. Глядишь и что-то интересное получится
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 13:32
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))
В своём коде пользуюсь ей, шаблоны оставил как есть.
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 13:52
kreator
Shur писал(а):В своём коде пользуюсь ей, шаблоны оставил как есть.
Всё правильно. Попробуй в начале программы вот так:
Код: Выделить всё
system{prop:MessageHook} = address(MessageCR)
Ваша процедура должна появляться всегда, шаблоны править не нужно.
Дед Пахом писал(а):Залил на FTP CapesoftMessageBoxInstall_v2.37.exe
Как бы то, что нужно. Почему денег не попросило данное чудо?
Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 13:55
Дед Пахом
kreator писал(а): Почему денег не попросило данное чудо?
Мне переводи, я передам

Проблема с MESSAGE()
Добавлено: 10 Январь 2016, 14:33
Shur
kreator писал(а):Попробуй в начале программы вот так:
Код: Выделить всё
system{prop:MessageHook} = address(MessageCR)
Ваша процедура должна появляться всегда, шаблоны править не нужно.
Креатор, спасибо, конечно. А замыкания часом не получится? Лучше не стану.