Форум » [x]Harbour » ANN: Вышел релиз FastReport for [x]Harbour (продолжение) » Ответить

ANN: Вышел релиз FastReport for [x]Harbour (продолжение)

Sergey Spirin: Здравствуйте. Рад сообщить, что вышел релиз FastReport for [x]Harbour. Как всегда, информацию можно посмотреть: http://www.paritetsoft.ru/frh.htm Возможным русскоязычных покупателей лучше контактировать со мной напрямую по email. Цена для оплаты в рублях банковским переводом по выставленному счету- 9999 рублей. -- Спирин Сергей. Компания "Паритет Софт". FRH sales: http://www.paritetsoft.ru/frh.htm FRAX sales: http://www.hotsoft.ru/ALASKA/frax_eng.htm

Ответов - 268, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All

Sergey Spirin: Andrey пишет: Нет не получается.... Что не получается? Что делаете?

Sergey Spirin: Собрал 4.9.79, добавил часто спрашиваемую встроенную функцию: function LoadImageFromHbRes(Picture: TfrxPictureView; HbResName: string; IsBitmap: Boolean): Variant; Загружает картинку из ресурсов exe-шника. Если IsBitmap = True, то грузится RT_BITMAP иначе RT_RCDATA. Пример: procedure ReportHOnStartReport(Sender: TfrxComponent); begin LoadImageFromHbRes(Picture1, 'MYJPEG', False); end; P.S. Хотел отвертеться от желающих советом использовать [x]Harbour-средства, а затем LoadImageFromHbVar, не прокатило

Andrey: Вопрос удобства ! Взял свою готовую форму (было 2 базы). Удалил ненужную БАЗУ, АЛИАС тоже удалил. По всем полям прошелся, нет на экране ПОЛЕЙ удаленной базы. Вызываю просмотр, высвечивается ошибка: Набор данных "ХХХХ" не найден ! Ну я его же удалил. КАК ИСКАТЬ ЭТУ фигню УДАЛЕННУЮ на форме ??? Когда мало полей еще ничего, а если много то ....


Dr. Oldwarez: И ещё один вопросик. Как сделать так, чтобы в FastReport строка выпечатывалась только при определённых условиях, например, если заполнено одно из полей даты? Как сделать, чтобы Visible было не только TRUE и FALSE, но и условное, например !(EMPTY(DATAFIELD)) Подскажите пожалуйста.

TimTim: Dr. Oldwarez пишет: Как сделать так, чтобы в FastReport строка выпечатывалась только при определённых условиях, например, если заполнено одно из полей даты? Как сделать, чтобы Visible было не только TRUE и FALSE, но и условное, например !(EMPTY(DATAFIELD)) IMHO проще всего передать FRH уже проиндексированную БД по !(EMPTY(DATAFIELD)) Если хочется управлять параметром Visible в дизайнере, то надо создать событие OnBeforePrint для Masterdata, а затем в коде написать что-то типа [pre2]procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin MasterData1.Visible := True; if ( bla bla bla ) then MasterData1.Visible := False; end;[/pre2]

Andrey: Наверно эта ветка закрыта до окончания отдыха ? Приятного отдыха Sergey !!!

Sergey Spirin: Andrey пишет: Наверно эта ветка закрыта до окончания отдыха ? Все. Вернулся я Смотрю, вопросов особенно не накопилось - Как найти поле, в котором ошибка? Ну, вообще, когда происходит ошибка, то указывается имя объекта, в котором она произошла. Ну а найти этот объект всегда можно в дереве объектов. - Относительно фильтрации на стороне FRH, то TimTim все верно ответил, единственное, незачем Visible присваивать 2 раза Достаточно: MasterData1.Visible := ( bla bla bla ); P.S. Dr. Oldwarez, у вас шефа случайно не Timm Sodtalbers зовут? (Компания Sodtalbers IT). Просто покупка FRH из Германии чрезвычайно редкий случай (в отличие от FRAX). А тут приезжаю - есть такая, сразу вас вспомнил

Sergey Spirin: И, кстати, говоря: Выпуск FastReport VCL 5 намечен на осень 2010. Вот далеко не полный перечень тех нововведений, которые будут в FastReport VCL 5: Улучшенный движок: - улучшенный механизм смещения; - объединение дублирующихся значений; - новые агрегатные функции; - улучшенный CrossTab; - изменения в XML формате(запись коллекций в виде XML); - улучшенное наследование отчетов; - печать иерархий; - водяной знак/ заливка объектов градиентом; - улучшенные линейные штрих коды; - улучшенные интерактивные отчеты: OnMouseEnter/OnMouseLeave события; - детализированные отчеты; - многостраничный предпросмотр для детализированных отчетов; Новые объекты: - двухмерные штрих коды: DataMatrix и PDF417; - Объект таблица; - Cellular text; - Zip Code; Новые экспорты: - BIFF XLS экспорт - PPTX экспорт; - XLSX экспорт; - DOCX экспорт; И пара скриншотиков (сравните с FastReport.Net): http://www.fast-report.com/ru/products/fastreport-vcl-5-screenshots.html

Andrey: Sergey Spirin пишет: - Как найти поле, в котором ошибка? Ну, вообще, когда происходит ошибка, то указывается имя объекта, в котором она произошла. Ну а найти этот объект всегда можно в дереве объектов. Нет нельзя ! Сделайте сам и поймете в чем дело ! Берем готовую форму, подключаем ДРУГУЮ базу, правим поля в форме на новую базу и ИМЕЕМ те ошибки о которых я писал. И невозможно найти ПОЛЯ на какие выдаются ошибки... Т.е. переменная Memo20 выдается на ней ошибка, смотришь ее - НАПИСАНО ПРАВИЛЬНО !!! Лезешь в форму Far'ом и там в конце свойства прописаны другого поля из ДРУГОЙ базы, которую уже убрали ! Это я только потом допер что за фигня появляется !!! Вопрос остается открытым: КАК НАЙТИ и УБРАТЬ ошибку: Набор данных "ХХХХ" не найден !

Sergey Spirin: Andrey пишет: Вопрос остается открытым: КАК НАЙТИ и УБРАТЬ ошибку: Набор данных "ХХХХ" не найден ! Достаточно просто Если в отчете сменился набор датасетов, то, очевидно, что упоминания об "утраченном" датасете в отчете остались, однако в глобальном списке его уже нет. Чтобы обновить ссылки зайдите "Отчет"->"Данные" и просто нажмите "Ok" (даже,если не делаете там изменений). Ссылки обновятся, и ошибки "по Мемам" станут более осмысленными.

Andrey: Sergey Spirin пишет: Чтобы обновить ссылки зайдите "Отчет"->"Данные" и просто нажмите "Ok" (даже,если не делаете там изменений). Ссылки обновятся, и ошибки "по Мемам" станут более осмысленными. Спасибо ! Еще один вопрос по языкам ! Мне нужны формы на русском и украинском языках ! Если я переключаюсь на украинский язык, то все суммы остаются в русском языке (руб.коп). А как можно сделать переключение на украинский, чтоб суммы были на украинском (гривны) ? Самый простой выход держать 2 формы: на русском и украинском ! Но у меня порядка 50 форм, не хотелось бы раздувать кол-во файлов !

Sergey Spirin: Andrey пишет: Если я переключаюсь на украинский язык, то все суммы остаются в русском языке (руб.коп). А как можно сделать переключение на украинский, чтоб суммы были на украинском (гривны) ? Вообще говоря, все региональные настройки по умолчанию считываются из настроек Windows. Поэтому у вас рубль и остается так как все на русской Винде. Будет украинская - появится гривна. Вообще, как в любом delphi приложении менять их можно, но их многовато, чтобы сделать отдельные методы для каждой настройки, вот некоторые например: var CurrencyString: string; CurrencyFormat: Byte; NegCurrFormat: Byte; ThousandSeparator: Char; DecimalSeparator: Char; CurrencyDecimals: Byte; DateSeparator: Char; ShortDateFormat: string; LongDateFormat: string; TimeSeparator: Char; TimeAMString: string; TimePMString: string; ShortTimeFormat: string; LongTimeFormat: string; ShortMonthNames: array[1..12] of string; LongMonthNames: array[1..12] of string; ShortDayNames: array[1..7] of string; LongDayNames: array[1..7] of string; SysLocale: TSysLocale; TwoDigitYearCenturyWindow: Word = 50; ListSeparator: Char; Вообще же говоря, в вашем случае, по уму у вас в программе должен определяться тип валюты и он должен в отчетах использоваться - это наиболее грамотно.

Andrey: Использую формат вывод сумм %2.2m ! При переключении на украинский язык все равно печатает руб. А если Windows будет украинская, то будет печатать гривны ! Понятно ! А как быть если установлена Windows русская, а нужно печатать гривны ? Можно ли завести свой формат печати ? Я конечно могу завести свою функцию в программе, и выводить через нее... Блин но столько переделывать форм... Есть ли еще другие варианты ?

Sergey Spirin: Andrey пишет: А как быть если установлена Windows русская, а нужно печатать гривны ? Можно ли завести свой формат печати ? Ну, на данный момент надо пойти в "Пуск"->"Панель управления"-> "Язык и региональные стандарты" и поменять там валюту Andrey пишет: Я конечно могу завести свою функцию в программе, и выводить через нее... Блин но столько переделывать форм... Есть ли еще другие варианты ? Ну, можно в принципе добавить еще один метод в frReportManager. Ладно, добавлю на днях.

Andrey: Sergey Spirin пишет: Ну, можно в принципе добавить еще один метод в frReportManager. Ладно, добавлю на днях. Спасибо большое !!! Жду !

Sergey Spirin: Добавил метод :SetFormatSettings(nSetting, xValue) Андрей! Перекомпилил пока только вашу копию и жду тестирования для выкладывания в общую сборку! :) Возможные значения для nSetting пока только такие и описаны в FastRepH.ch (ваш случай frxCurrencyString): #define frxCurrencyString 1 #define frxCurrencyFormat 2 #define frxNegCurrFormat 3 #define frxThousandSeparator 4 #define frxDecimalSeparator 5 #define frxCurrencyDecimals 6 #define frxDateSeparator 7 #define frxShortDateFormat 8 #define frxLongDateFormat 9 #define frxTimeSeparator 10 #define frxTimeAMString 11 #define frxTimePMString 12 #define frxShortTimeFormat 13 #define frxLongTimeFormat 14 #define frxShortMonthNames 15 #define frxLongMonthNames 16 #define frxShortDayNames 17 #define frxLongDayNames 18 #define frxTwoDigitYearCenturyWindow 20 #define frxListSeparator 21 Описание всех вариантов: { Currency and date/time formatting options The initial values of these variables are fetched from the system registry using the GetLocaleInfo function in the Win32 API. The description of each variable specifies the LOCALE_XXXX constant used to fetch the initial value. CurrencyString - Defines the currency symbol used in floating-point to decimal conversions. The initial value is fetched from LOCALE_SCURRENCY. CurrencyFormat - Defines the currency symbol placement and separation used in floating-point to decimal conversions. Possible values are: 0 = '$1' 1 = '1$' 2 = '$ 1' 3 = '1 $' The initial value is fetched from LOCALE_ICURRENCY. NegCurrFormat - Defines the currency format for used in floating-point to decimal conversions of negative numbers. Possible values are: 0 = '($1)' 4 = '(1$)' 8 = '-1 $' 12 = '$ -1' 1 = '-$1' 5 = '-1$' 9 = '-$ 1' 13 = '1- $' 2 = '$-1' 6 = '1-$' 10 = '1 $-' 14 = '($ 1)' 3 = '$1-' 7 = '1$-' 11 = '$ 1-' 15 = '(1 $)' The initial value is fetched from LOCALE_INEGCURR. ThousandSeparator - The character used to separate thousands in numbers with more than three digits to the left of the decimal separator. The initial value is fetched from LOCALE_STHOUSAND. A value of #0 indicates no thousand separator character should be output even if the format string specifies thousand separators. DecimalSeparator - The character used to separate the integer part from the fractional part of a number. The initial value is fetched from LOCALE_SDECIMAL. DecimalSeparator must be a non-zero value. CurrencyDecimals - The number of digits to the right of the decimal point in a currency amount. The initial value is fetched from LOCALE_ICURRDIGITS. DateSeparator - The character used to separate the year, month, and day parts of a date value. The initial value is fetched from LOCATE_SDATE. ShortDateFormat - The format string used to convert a date value to a short string suitable for editing. For a complete description of date and time format strings, refer to the documentation for the FormatDate function. The short date format should only use the date separator character and the m, mm, d, dd, yy, and yyyy format specifiers. The initial value is fetched from LOCALE_SSHORTDATE. LongDateFormat - The format string used to convert a date value to a long string suitable for display but not for editing. For a complete description of date and time format strings, refer to the documentation for the FormatDate function. The initial value is fetched from LOCALE_SLONGDATE. TimeSeparator - The character used to separate the hour, minute, and second parts of a time value. The initial value is fetched from LOCALE_STIME. TimeAMString - The suffix string used for time values between 00:00 and 11:59 in 12-hour clock format. The initial value is fetched from LOCALE_S1159. TimePMString - The suffix string used for time values between 12:00 and 23:59 in 12-hour clock format. The initial value is fetched from LOCALE_S2359. ShortTimeFormat - The format string used to convert a time value to a short string with only hours and minutes. The default value is computed from LOCALE_ITIME and LOCALE_ITLZERO. LongTimeFormat - The format string used to convert a time value to a long string with hours, minutes, and seconds. The default value is computed from LOCALE_ITIME and LOCALE_ITLZERO. ShortMonthNames - Array of strings containing short month names. The mmm format specifier in a format string passed to FormatDate causes a short month name to be substituted. The default values are fecthed from the LOCALE_SABBREVMONTHNAME system locale entries. LongMonthNames - Array of strings containing long month names. The mmmm format specifier in a format string passed to FormatDate causes a long month name to be substituted. The default values are fecthed from the LOCALE_SMONTHNAME system locale entries. ShortDayNames - Array of strings containing short day names. The ddd format specifier in a format string passed to FormatDate causes a short day name to be substituted. The default values are fecthed from the LOCALE_SABBREVDAYNAME system locale entries. LongDayNames - Array of strings containing long day names. The dddd format specifier in a format string passed to FormatDate causes a long day name to be substituted. The default values are fecthed from the LOCALE_SDAYNAME system locale entries. ListSeparator - The character used to separate items in a list. The initial value is fetched from LOCALE_SLIST. TwoDigitYearCenturyWindow - Determines what century is added to two digit years when converting string dates to numeric dates. This value is subtracted from the current year before extracting the century. This can be used to extend the lifetime of existing applications that are inextricably tied to 2 digit year data entry. The best solution to Year 2000 (Y2k) issues is not to accept 2 digit years at all - require 4 digit years in data entry to eliminate century ambiguities. Examples: Current TwoDigitCenturyWindow Century StrToDate() of: Year Value Pivot '01/01/03' '01/01/68' '01/01/50' ------------------------------------------------------------------------- 1998 0 1900 1903 1968 1950 2002 0 2000 2003 2068 2050 1998 50 (default) 1948 2003 1968 1950 2002 50 (default) 1952 2003 1968 2050 2020 50 (default) 1970 2003 2068 2050 }

Andrey: Sergey Spirin пишет: Возможные значения для nSetting пока только такие и описаны в FastRepH.ch (ваш случай frxCurrencyString): ......... и т.д. Блин... Столько строчек я сегодня не переведу... И как все это компоновать ? А покороче нельзя ? Или пример ? А то я еще неделю буду в этом разбираться....

Sergey Spirin: Andrey пишет: Или пример ? В вашем конкретном случае : FrPrn:SetFormatSettings(frxCurrencyString, "GRIVNA") "GRIVNA"- понятно что условно, я уж не знаю как она там отображается. Про остальное, что сможете

Andrey: Sergey Spirin пишет: FrPrn:SetFormatSettings(frxCurrencyString, "GRIVNA") "GRIVNA"- понятно что условно, я уж не знаю как она там отображается. А если я $ захочу отображать ? или фунты ?

Sergey Spirin: Andrey пишет: А если я $ захочу отображать ? или фунты ? FrPrn:SetFormatSettings(frxCurrencyString, "$") FrPrn:SetFormatSettings(frxCurrencyString, "£") Андрей, вы меня все больше и больше удивляете Уже даже предчувствую, пытаюсь "разжевать": Sergey Spirin пишет: "GRIVNA"- понятно что условно, я уж не знаю как она там отображается. донести, что "GRIVNA" - это я так написал, как правильно напиши давай сам.... В результате, по логам сервера вижу, что ничего еще не скачивал, значит и не пробовал, а уже ничего ему непонятно (!) Андрей, ну что за детский сад? Специально погуглил сайты с ценами в гривнах, обычно пишут "грн.", поэтому: FrPrn:SetFormatSettings(frxCurrencyString, "грн.") Если нужно по-другому, то так и пишите: FrPrn:SetFormatSettings(frxCurrencyString, "как я хочу так и обзову!") Предвидя вопрос - "как знак доллара поставить слева": FrPrn:SetFormatSettings(frxCurrencyFormat, 0) Варианты значений в справке, которую я привел: 0 = '$1' 1 = '1$' 2 = '$ 1' 3 = '1 $'



полная версия страницы