Вы здесь

ReportPro 2.14d: Продолжение истории

ReportБлагодаря огромному труду автора, который выступает здесь под ником leo_bond, мы получили превосходный перевод библиотеки для отчётов в среде CA-Visual Objects 2.8. Естественно, я не преминул этим воспользоваться в своих целях. Собрал собственный вариант перевода (Rp2Rus32.dll), и сделал ещё несколько шагов, чтобы моим пользователям стало приятнее.
 
К сожалению, у ReportPro нет возможности штатно изменить язык самого дизайнера. И здесь, как указал leo_bond, подойдёт только подмена файла Rp2Eng32.dll на Rp2Rus32.dll. Т.е., в каталоге нашего ReportPro удаляем Rp2Eng32.dll и копируем туда Rp2Rus32.dll под именем Rp2Eng32.dll. После этого – дизайнер станет на русском языке.
 
Допустим, дизайнер я оставил на английском, но мне интересно сделать просмотр, печать и экспорт отчётов в моей программе на русском языке. Как это сделать? Ответ есть в помощи (для разработчиков) в самом ReportPro:
 
Setting the Active Language DLL
 The SetRpLangDLL() function allows you to specify which language DLL ReportPro uses.
 
Именно так я и сделал. Пользователям разложил свой вариант перевода (Rp2Rus32.dll), и окошко просмотра с печатью стало на русском языке. Но, окно экспорта отчёта в другие форматы осталось по-прежнему на английском. Что делать? А тут нам поможет недокументированная (?) функция SetRpExportLangDLL(). И, таким образом, для собственного удобства я написал свою функцию:
 
FUNCTION RpSetNatDLL( cNatDLL AS STRING ) AS VOID PASCAL // Pencil
      // Description: Функцияподключениеязыковогомодуля
      // Parameters : cNatDLL - имя .dll-файла (например: "Rp2Rus32.dll")
      // Returns    : VOID
 
      // Русские сообщения при печати
      SetRpRunLangDLL( cNatDLL ) // "Rp2Rus32.dll"
 
      // Русские сообщения при экспорте
      SetRpExportLangDLL( )
 
      RETURN
 
Теперь, если её вызвать, то на русском будет не только просмотр и печать, но и процедура экспорта данных. Хорошо!
 
 
Я решил не останавливаться на достигнутом, и сделать ещё кое-что приятное моим пользователям. Например, в дизайнере, в окне просмотра данных перед печатью, есть ToolTips-ы (всплывающие подсказки) на кнопках, а в моей программе – нет. В дизайнере есть иконка на окне, а в моей программе – нет (а при использовании старых версий ReportPro – была). Непорядок! Исправляем:
 
METHOD PostInit( ) CLASS rpPrintPreviewDialog // Pencil
      // Description:
      // Parameters :
      // Returns    :
 
// Исправляем отображение иконки
// Исправлеям отображение подсказок к кнопкам в окне перед печатью
 
LOCAL oIcon AS RpPreViewIcon
 
oIcon := RPPREVIEWICON{}
IF oIcon <> NULL_OBJECT
 
      SELF:Icon := oIcon
ENDIF
 
SELF:oCCCloseBtn:TooltipText       := LoadResString( "Closes the Print Preview Window", IDL_PP_CLOSE_DESC, rpLangDLL )
SELF:oCCPrintBtn:TooltipText       := LoadResString( "Prints the Report", IDL_PP_PRINT_DESC, rpLangDLL )
SELF:oCCExportBtn:TooltipText      := LoadResString( "Exports the Report", IDL_PP_EXPORT_DESC, rpLangDLL )
SELF:oCCFirstPageBtn:TooltipText := LoadResString( "Move to the First Page in the Report", IDL_PP_PAGE_FIRST_DESC, rpLangDLL )
SELF:oCCPrevPageBtn:TooltipText    := LoadResString( "Move to the Previous Page", IDL_PP_PAGE_PREV_DESC, rpLangDLL )
SELF:oCCNextPageBtn:TooltipText    := LoadResString( "Move to the Next Page", IDL_PP_PAGE_NEXT_DESC, rpLangDLL )
SELF:oCCLastPageBtn:TooltipText    := LoadResString( "Move to the Last Page", IDL_PP_PAGE_LAST_DESC, rpLangDLL )
SELF:oCCGotoBtn:TooltipText        := LoadResString( "Move to a Specified Page", IDL_PP_PAGE_GOTO_DESC, rpLangDLL )
SELF:oCCZoomInBtn:TooltipText      := LoadResString( "Zoom in", IDL_PP_ZOOM_IN_DESC, rpLangDLL )
SELF:oCCZoomOutBtn:TooltipText     := LoadResString( "Zoom out", IDL_PP_ZOOM_OUT_DESC, rpLangDLL )
 
RETURN NIL
 
 
А если кто-то сомневается в правомочности русификации указанным способом, то вот Вам маленькая выдержка из помощи разработчикам («ReportPro Developper`s Giude»):
 
ReportPro 32-Bit Internationalization
 
All libraries of the 32-Bit version of RP2 utilize the RP2ENG32 language library. RP2ENG32.AEF contains the code used to produce the 32-bit ENGLISH language library.
 
Use the following steps to create your own language DLL:
 
·        Import RP2ENG32.AEF into your CA-VO 2 repository.
·        Change the name of the RP2ENG32 application and DLL so you will not overwrite the existing DLL.
·        The character strings are located in three string table entries in the application:
ENGLISH - contains strings used by the runtime libraries.
ENGLISHEXE - contains strings used by the stand alone and linkable designers.
ENGLISHMENU - contains menu strings used by the stand alone and linkable designers.
 
·        Translate the character strings as required but do not change the string DEFINES.
·        Compile the new language DLL and generate the DLL file.
 
 
Может, кто-то подскажет, как исправить экспорт данных в .html и .pdf-форматы, задать шрифт? А то, по умолчанию там заданы некорректные шрифты, которые не поддерживают кириллицу.
 
Да, чуть не забыл. Вот Вам недокументированные настройки экспорта отчётов в файле «rpwin.ini» (настройкам экспорта там соответствует раздел «Internal»):
 
[Internal]
ELast=5
HTolerance=0
VTolerance=0
 
ELast - какой пункт меню был выбран при экспорте в файл.
HTolerance и VTolerance - допуски на отклонение колонок по горизонтали и вертикали
(при экспорте в MS-Excel и т.п.).
 
         Удачи! 
 

Комментарии

Thank you so much for providing individuals with remarkably special chance to check tips from this website. It is often very terrific and also jam-packed with a good time for me personally and my office colleagues to search your blog the equivalent of thrice weekly to read through the latest stuff you have got.

Читают на русском, думают на ханьском, а пишут для англоязычных. Спамеры... Что с них взять. :))

Ты - симпатяга. Было приятно общаться с тобой виртуально.

Только недавно стал Вашим читателем и сразу подписчиком. Спасибо за пост.

Довольно интересная статья. У себя в ЖЖ блоге я немного хочу процитировать Ваш пост. Разумеется, ссылка на Ваш сайт будет присутствовать. Надеюсь Вы не против?

Конечно. Цитируйте. Пользуйтесь.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer