Страница 1 из 2

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

Добавлено: 08 Январь 2016, 12:03
dsabitov
Уважаемые коллеги.

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

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

msgText"='ООО "ТК ГАСС-АВТО"'
MESSAGE(msgText")
, то при возникновении этого сообщения я получаю усеченный вариант:
screen.jpg
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)
Ваша процедура должна появляться всегда, шаблоны править не нужно.
Креатор, спасибо, конечно. А замыкания часом не получится? Лучше не стану.