HOT SOFT: ИНСТРУМЕНТАРИЙ ДЛЯ РАЗРАБОТЧИКОВ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

НОВОСТИ

ПРОДУКТЫ

ЦЕНЫ

ПОДДЕРЖКА

FAQ

ДЕМО-ВЕРСИИ

КОНТАКТ

horizontal rule

Генератор Отчетов List & Label

Часто задаваемые вопросы, советы и уловки

При использовании List & Label возможна ли работа с несколькими базами данных одновременно?

Конечно. Поскольку List & Label самостоятельно базы данных не открывает, а получает данные непосредственно от программиста, то как вы в программе все организуете, так и будет: хоть поле, хоть переменную, хоть результат функции. List & Label требует написания программы, которая должна открыть описание формы, объявить для нее переменные и пройти по данным, заполняя переменные значениями и говоря "напечатать". Общая структура такой программы - типовая.

Где я могу найти информацию об использовании List & Label с Microsoft .NET?

Эту информацию можно найти здесь.

Существуют ли примеры использования List & Label с PowerBuilder?

К сожалению, в комплекте поставки List & Label версии 8.0 примеров для PowerBuilder'a нет, но структура обращения к List & Label едина для любой платформы. Примеры использования List & Label с Alaska Xbase++ (с комментариями на русском языке) можно найти здесь.

Я установил себе List & Label 8.0 и не могу найти Дизайнер в виде отдельного модуля.

List&Label не работает непосредственно с данными, а получает их из вашего приложения. Все передаваемые ему данные должны быть вами описаны, и это описание должно быть одинаковым при работе с Дизайнером и при непосредственной генерации документа. Поэтому Дизайнер не может существовать как самостоятельный исполняемый модуль, но его запуск должен производиться вами при помощи функции LlDefineLayout() после описания возможных переменных. Например:

начинаем работу с переменными
llDefineVariableStart(hJob)
объявляем используемые переменные, для примера присваивая им некоторые значения
llDefineVariableExt( hJob, 'Family', 'Иванов', LL_TEXT, 0 )
llDefineVariableExt( hJob, 'Name', 'Федор', LL_TEXT, 0 )
llDefineVariableExt( hJob, 'Father', 'Петрович', LL_TEXT, 0 )
вызываем дизайнер
LlDefineLayout( hJob, hWnd, "Дизайнер", LL_PROJECT_LABEL, 'Name.lbl' )

Я установил себе List & Label 8.0 и не могу найти документацию (HLP-файл) к Дизайнеру в папке, в которую проинсталлирован продукт.

Информацию о том, куда какие файлы установились, вы можете найти в файле install.log, расположенном в директории инсталляции List & Label. По умолчанию документация к Дизайнеру List & Label (HLP-файл) инсталлируется в системную папку Windows (например, под Windows 98 в C:\WIN*\SYSTEM) вместе с основной DLL (cm32l8.dll). При необходимости можно вручную переместить файлы, перечисленные в redist.txt (включая HLP-файлы), в другую папку и соответственно изменить переменную окружения PATH.

И, конечно, вы можете вызывать документацию из меню "Пуск -> Программы -> Combit... -> Documentation".

Где я могу посмотреть какая подверсия List & Label 8.0 у меня установлена?

Можете запустить List & Label Sample Application и зайти в пункт меню " ? -> About ", а можете использовать функцию LlGetVersion(). Описание функции LlGetVersion() смотрите в руководстве программиста (Progref.pdf), включенном в поставку List & Label.

Пример создания подсказок при использовании OCX/VCL

Если вы используете OCX (например, в Visual Basic) или VCL компонент (в Delphi), вы можете назначать подсказки на отдельные переменные и поля в списке переменных. 

Компоненты List  Label включают событие "VarHelpText", с помощью которого для имени переменной может быть назначена индивидуальная подсказка. 

Подсказка будет появляться в тот момент, когда указатель мыши делает паузу на выбранной переменной. 

Пожалуйста, имейте в виду, что для того, чтобы появилась соответствующая подсказка, должно быть выбрано имя переменной.

Следующий пример на Delphi покажет вам как это делается. Вам просто нужно заменить текст подсказки и имя переменной:

 

        procedure TForm1.L7_1VarHelpText(Sender: TObject;

        pszVarName: PChar; var pszHelpText: PChar);

        определяет тексты описания для переменных

        var HelpText: String;

        begin

        If StrPas(pszVarName)='ITEMNO' then

        HelpText:='Item Number'

        else if StrPas(pszVarName)='DESCRIP1' then

        HelpText:='Short Description'

        else if StrPas(pszVarName)='DESCRIP2' then

        HelpText:='Description'

        else if StrPas(pszVarName)='PRICEPP' then

        HelpText:='Price per Item'

        else if StrPas(pszVarName)='SalesStatistics' then

        HelpText:='Sales Statistics for Item'

        else

        HelpText:='Sorry, no help available';

        StrPCopy(pszHelpText, HelpText);

        end;

Если вы не используете OCX или VCL, вы можете получить тот же результат с помощью LL_CMND_VARHELPTEXT.

Подавление вывода данных

Для подавления вывода данных, установите значение переменной "1e100":

        LlDefineVariableExt("DATE", "1e100", LL_DATE_MS, NULL)

Это значение будет интерпретироваться как "пустое" и будет подавляться при использовании Date$(DATE) при обработке переменных с данными в проекте List & Label.

Иерархический просмотр полей/переменных в Дизайнере

Чтобы отобразить переменные и поля в Дизайнере List  Label иерархически, используйте период в именах полей/переменных.

        LlDefineField(hJob, "Item.Description1", "sample");

        LlDefineField(hJob, "Item.No", "0815");

Используя сложные периоды, вы можете создавать папки с иерархической структурой. При использовании в Дизайнере никакой настройки не требуется. Имена переменных/полей будут, конечно, содержать периоды, которые использовались для их преобразования.

Нелатинские буквы

Символ "ч" ( Chr(247) ) по умолчанию определяется List & Label как табуляция. Чтобы пользоваться им как буквой, переопределите табуляцию, например:

        LlSetOption( hJob, LL_OPTION_TABREPRESENTATIONCODE, 400 )

Чтобы не возникало проблем с именами переменных, данными русским языком, отключите опцию List & Label “использование в именах только латинских букв”:

        LlSetOption( hJob, LL_OPTION_XLATVARNAMES, .F. )

Формат даты

List & Label использует юлианский формат даты – ее представление в числе дней, прошедших с сотворения мира (а также в часах, минутах и секундах, хранящихся в дробной части такового числа). Если вы пишете на Visual Basic, Visual FoxPro или Delphi, то можете воспользоваться специальными типами формата даты:

        LL_DATE_OLE

        LL_DATE_MS

        LL_DATE_DELPHI

        LL_DATE_DELPHI_1

        LL_DATE_VFIXPRO

В прочих случаях остаются два варианта:

Первый вариант - при передаче данных в List & Label перекрутить дату в юлианский формат, например:

         Func JulianDate(dDate)

         Local nDate := 0

         If ! Empty(dDate)

            // 1 января 2000 года в юлианском формате

            nDate := 2451544

            // число дней с/до 1 января 2000 года

            nDate += dDate - SToD('20000101')

         Else

            nDate := 10 ** 10

         Endif

         Return Str(nDate)  // возвращаем строку, т.к. значения

                            // любого типа передаются

                            // функциям L&L в текстовом виде

Это имеет смысл, если вы хотите воспользоваться функциями дат, встроенными в Дизайнер Форм List & Label, но неудобно при наличии пустых дат, т.к. юлианский формат их не предусматривает. Придется присваивать пустой дате заведомо нереальное значение (в примере - 10**10) и ставить соответствующему объекту файла проекта List & Label условие видимости:

        DateToJulian(даты) < 10**10

Второй вариант - передавать дату в List & Label как строку текста, приведя ее к нужному формату в своем программном модуле. Это снимает проблему пустых дат, но лишает конечного пользователя возможности менять формат даты.

Формат строк

List & Label работает с символами формата ANSI. Если вы пользуетесь символами русского алфавита, введенными в формате OEM, не забывайте конвертировать их перед тем, как передать функциям List & Label.

Список подразделов

bullet

List & Label: Обзор возможностей

bullet

List & Label: Дизайнер Форм

bullet

List & Label: Новое в версии 18

bullet

List & Label: Демо-версия

bullet

List & Label: Прайс-Лист

bullet

List & Label: Лицензионное соглашение

bullet

List & Label: FAQ по лицензированию

bullet

List & Label: Техподдержка

bullet

List & Label: Советы и уловки

 

horizontal rule