Автор | Сообщение |
|
| постоянный участник
|
Пост N: 129
Зарегистрирован: 25.12.07
|
|
Отправлено: 10.03.08 23:53. Заголовок: ANN: Вышел релиз FastReport for [x]Harbour
|
|
|
Ответов - 258
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 547
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.04.08 21:11. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Поэтому текущий разговор достаточно абстрактен. |
| А что есть для FastReport на текущий момент. Можно ли получить (сделать) печать под FastReport на текущий момент времени ??? Печать форм для Windows из FastReport просто "обалденная" т.е. очень развита и не нужно более ничего изобретать - бери и пользуйся....... Возможна ли такая печать для Linux из FastReport ? Я понял что нет, тат как не реализован вызов FastReport из под xHarbour ? Вопрос пока чисто теоретически, сколько по времени нужно затратить для переноса FastReport для xHarbour ?
|
|
|
|
| постоянный участник
|
Пост N: 157
Зарегистрирован: 25.12.07
|
|
Отправлено: 26.04.08 21:52. Заголовок: Andrey пишет: Вопро..
Andrey пишет: цитата: | Вопрос пока чисто теоретически, сколько по времени нужно затратить для переноса FastReport для xHarbour ? |
| Ну, если уж Вам так интересно, то, на вскидку 3-4 месяца... То есть, где-нибудь, учитывая все расходы, тысяч 20 упавших долларов.
|
|
|
|
| постоянный участник
|
Пост N: 548
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.08 11:36. Заголовок: Столкнулся с некотор..
Столкнулся с некоторыми неудобствами. У меня используется OEM кодировка, а при печати используется WIN-кодировка. не хочу везже в своих формах писать такую конструкцию [CallHbFunc('HB_OEMTOANSI',[GetHbVar('myFirma')])] хочется иметь простые конструкции типа: [My_Firma], [My_Adres], [My_Telefon], [My_Viborka] и т.д. Вопрос: как в программе заранее определить эти переменные, а потом чтоб эти переменные были видны в ДИЗАЙНЕРЕ ? По доке смотрел, сделал наподобее, а не работает. Где я ошибся ? PUBLIC myFirma, MyAdres, MyTelefon, MyViborka MyFirma := HB_OEMTOANSI('ООО "Рога и Копыта"') MyAdres := HB_OEMTOANSI('г.Москва, Набережная 13') MyTelefon := HB_OEMTOANSI('тел.: (495) 123-45-67') MyViborka := HB_OEMTOANSI('Дата договора: = 12.01.08 .....') ............. ............. FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , MyFirma ) FrPrn:AddVariable( "My Lovely Vars", "My_Adres" , MyAdres ) FrPrn:AddVariable( "My Lovely Vars", "My_Telefon", MyTelefon ) FrPrn:DesignReport() При просмотре выдает ошибку: Memo3: Ошибка в выражении: "myFirma": Неопределенный индентификатор "myFirma"
|
|
|
|
| постоянный участник
|
Пост N: 158
Зарегистрирован: 25.12.07
|
|
Отправлено: 28.04.08 15:51. Заголовок: Andrey пишет: PUBLI..
Andrey пишет: цитата: | PUBLIC myFirma, MyAdres, MyTelefon, MyViborka MyFirma := HB_OEMTOANSI('ООО "Рога и Копыта"') MyAdres := HB_OEMTOANSI('г.Москва, Набережная 13') MyTelefon := HB_OEMTOANSI('тел.: (495) 123-45-67') MyViborka := HB_OEMTOANSI('Дата договора: = 12.01.08 .....') ............. ............. FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , MyFirma ) FrPrn:AddVariable( "My Lovely Vars", "My_Adres" , MyAdres ) FrPrn:AddVariable( "My Lovely Vars", "My_Telefon", MyTelefon ) FrPrn:DesignReport() При просмотре выдает ошибку: Memo3: Ошибка в выражении: "myFirma": Неопределенный индентификатор "myFirma" |
| Наверняка результат самой популярной "непонятки" в Фасте . Если значение перменной (отчетной, не скриптовой) строковое, то оно считается интепретируемым выражением и вычисляется. Просто строка должна быть в одинарныйх кавычках. Поэтому, либо : FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "'" + MyFirma + "'" ) Либо: FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "CallHbFunc('HB_OEMTOANSI', [GetHbVar('myFirma')])" )
|
|
|
|
| постоянный участник
|
Пост N: 553
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.08 22:57. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "'" + MyFirma + "'" ) Либо: FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "CallHbFunc('HB_OEMTOANSI', [GetHbVar('myFirma')])" ) |
| НЕ РАБОТАЕТ !!! И в списке переменных (в Дизайнере) не появляется группа "My Lovely Vars" !!! Что делать ???
|
|
|
|
| постоянный участник
|
Пост N: 554
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.04.08 09:31. Заголовок: НЕ РАБОТАЕТ !!! И в ..
НЕ РАБОТАЕТ !!! И в списке переменных (в Дизайнере) не появляется группа "My Lovely Vars" !!! Что делать ???
|
|
|
|
| постоянный участник
|
Пост N: 159
Зарегистрирован: 25.12.07
|
|
Отправлено: 29.04.08 10:12. Заголовок: Andrey пишет: НЕ РА..
Andrey пишет: цитата: | НЕ РАБОТАЕТ !!! И в списке переменных (в Дизайнере) не появляется группа "My Lovely Vars" !!! Что делать ??? |
| Если Вы пишите : FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "'" + MyFirma + "'" ) FrPrn:LoadFromFile(...) То и не появятся Вернее сотрутся загруженным отчетом у которого свои переменные. Поэтому: FrPrn:LoadFromFile(...) FrPrn:AddVariable( "My Lovely Vars", "My_Firma" , "'" + MyFirma + "'" )
|
|
|
|
| постоянный участник
|
Пост N: 555
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.04.08 12:03. Заголовок: Блин, а я смотрел на..
Блин, а я смотрел на загрузку ваших функций и ставил раньше них. И эту функцию было видно в Дизайнере. FrPrn:AddFunction( "function XBaseStr(nValue: Double, nLength: Variant = EmptyVar, nDecimals: Variant = EmptyVar): Variant", "My Lovely Functions!", "It's a XBase Str() function!" ) Спасибо, заработало. Только еще один вопрос: У меня в базе поле времени числовое (N 4,0) - т.е. типа: 1208, 1310 и т.д. Если в дизайнере указываешь формат вывода Дата/время hh:mm, то показывает 00:00 Как правильно сделать ?
|
|
|
|
| постоянный участник
|
Пост N: 160
Зарегистрирован: 25.12.07
|
|
Отправлено: 29.04.08 13:57. Заголовок: Andrey пишет: Блин,..
Andrey пишет: цитата: | Блин, а я смотрел на загрузку ваших функций и ставил раньше них. И эту функцию было видно в Дизайнере. FrPrn:AddFunction( "function XBaseStr(nValue: Double, nLength: Variant = EmptyVar, nDecimals: Variant = EmptyVar): Variant", "My Lovely Functions!", "It's a XBase Str() function!" ) Спасибо, заработало. Только еще один вопрос: У меня в базе поле времени числовое (N 4,0) - т.е. типа: 1208, 1310 и т.д. Если в дизайнере указываешь формат вывода Дата/время hh:mm, то показывает 00:00 Как правильно сделать ? |
| Функции к отчетам не привязаны, поэтому их можно добавлять, где хочется. Правильно показывает 00:00 У "нас-дельфистов" тип TDateTime - это float. В целой части хранится дата, в дробной - время. Целое число всегда имеет время 00:00. Поставьте формат - числовой, строка формата - ##:##
|
|
|
|
| постоянный участник
|
Пост N: 559
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.08 11:05. Заголовок: Спасибо заработало !..
Спасибо заработало !!!
|
|
|
|
| постоянный участник
|
Пост N: 161
Зарегистрирован: 25.12.07
|
|
Отправлено: 06.05.08 10:23. Заголовок: Здравствуйте, Я рас..
Здравствуйте, Я рассылал приглашение в английскую конфу всем русскоязычным пользователям, однако никто "не присоединился" к этой конфе. Тем не менее, в этой конфе начинает накапливаться полезная информация, поэтому все-таки рекомендую это сделать всем интересующимся FastReport. Напомню адрес: [url=http://groups.google.com/group/fastreport_for_x_harbour/topics ]http://groups.google.com/group/fastreport_for_x_harbour/topics [/url]
|
|
|
|
|
| постоянный участник
|
Пост N: 563
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.05.08 00:55. Заголовок: Хочу сделать вызов п..
Хочу сделать вызов печати универсальной для своих задач. Т.е. Вызываю функцию печати и туда передаю имя_формы. А как сделать передачу назначения доп.переменных, функций и SetFieldAliases ? Вот мой пример: ////////////////////////////////////////////////////////////////////// #include "FastRepH.ch" FUNCTION MyFR4() LOCAL cFileForm, cPath, nShowDesignReport PUBLIC myFirma, MyAdres, MyTelefon, MyViborka, MyNumba, myPathRes M->myPathRes := CurDrive() + ":\" + CurDir() + '\' M->MyFirma := HB_OEMTOANSI('ООО "Рога и Копыта"') M->MyAdres := HB_OEMTOANSI('г.Москва, Набережная 13') M->MyTelefon := HB_OEMTOANSI('тел.: (495) 123-45-67') M->MyViborka := HB_OEMTOANSI('Дата договора: = 12.01.08 .....') M->MyNumba := 123 cFileForm := "bookabon.fr3" cPath := CurDrive() + ":\" + CurDir() + '\' USE bookabon ALIAS BookAbon NEW nShowDesignReport := 1 // 1-ShowReport, 2-DesignReport MyFastReport4( cPath + cFileForm , nShowDesignReport, ; (передать переменные), (передать функции), (передать SetFieldAliases) ) CLOSE BookAbon RETURN NIL //////////////////////////////////////////////////////////////// FUNCTION MyFastReport4(cFileForm, nShowDesignReport) LOCAL cTitle := HB_OEMTOANSI( "Печать формы - " ) PRIVATE FrPrn //----------- Now load and init FastReport -------------------------------------- FrPrn := frReportManager():new() //---------- Set the same icon for FastReport windows---------- FrPrn:SetIcon( "FASTREP_ICO" ) //---------- Set the same title for FastReport taskBar-window FrPrn:SetTitle( cTitle + cFileForm ) //----------- Set to disable main window when FastReport executes---------------------- // FrPrn:SetVisualActions(FR_ACT_DISABLE); //----------- Определяет набор кнопок, которые будут доступны в Окне-Просмотра -------- FrPrn:PreviewOptions:SetButtons(FR_PB_PRINT + FR_PB_LOAD + FR_PB_SAVE + ; FR_PB_EXPORT + FR_PB_ZOOM + FR_PB_FIND + FR_PB_OUTLINE + FR_PB_PAGESETUP + ; FR_PB_TOOLS + FR_PB_EDIT + FR_PB_NAVIGATOR ) //----------- Load Lang resource for FastReport ---------------------- //FrPrn:LoadLangRes( M->myPathRes + "Russian.xml" ) //----------- Alias base and SELECT work area for FastReport ---------------------- FrPrn:SetWorkArea( ALIAS(), SELECT(), .T. ) // .T. для OEM-кодировки БД //FrPrn:SetFieldAliases( "BookAbon", "CUSTNO=Cust No;Company;ADDR1=Address;Phone;Fax;Contact" ) //----------- Load file form FastReport ---------------------- FrPrn:LoadFromFile( cFileForm ) //-------- add XBase++ vars to FastReport --------------------- FrPrn:AddVariable( "My Lovely Vars", "MyPathRes", "'"+myPathRes+"'" ) FrPrn:AddVariable( "My Lovely Vars", "MyFirma" , "'"+MyFirma+"'" ) FrPrn:AddVariable( "My Lovely Vars", "MyAdres" , "'"+MyAdres+"'" ) FrPrn:AddVariable( "My Lovely Vars", "MyTelefon", "'"+MyTelefon+"'" ) FrPrn:AddVariable( "My Lovely Vars", "MyNumba" , MyNumba ) //FrPrn:SetEventHandler( "Report", "OnUserFunction", { | FName, FParams | CallUserFunction( FName, FParams ) } ) FrPrn:AddFunction( "function XBaseStr(nValue: Double, nLength: Variant = EmptyVar, nDecimals: Variant = EmptyVar): Variant", ; "My Lovely Functions!", "It's a XBase Str() function!" ) IF nShowDesignReport == 1 FrPrn:ShowReport() ELSE FrPrn:DesignReport() ENDIF FrPrn:ClearDataSets() //-------- Unload FastReport ------------------------------------------------------------- FrPrn:DestroyFR() RETURN NIL ////////////////////////////////////////////////////////////////
|
|
|
|
| постоянный участник
|
Пост N: 162
Зарегистрирован: 25.12.07
|
|
Отправлено: 07.05.08 14:37. Заголовок: Andrey пишет: Хочу ..
Andrey пишет: цитата: | Хочу сделать вызов печати универсальной для своих задач. Т.е. Вызываю функцию печати и туда передаю имя_формы. А как сделать передачу назначения доп.переменных, функций и SetFieldAliases ? |
| Собственно, в демо DoFrAction() - это и есть такая универсальная функция. Можно делать как там. Но если Вы хотите почти полной универсальности и минимум Harbour-кода, то посоветую следующее: Не пользуйтесь SetWorkArea(), а пользуйтесь объектами HarbourWorkArea. Возможностей даже больше, при этом нет вызовов SetWorkArea(), SetFieldAliases() которые должны быть до LoadFromXXX. Задавайте переменные в дизайнере, давая им значения типа - GetHbVar('SomeVar') Функции, естественно, добавляйте при инициализации Фаста. Таким образом, Вам останется только вызывать Load.., Show.., Design..
|
|
|
|
| постоянный участник
|
Пост N: 565
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.05.08 20:23. Заголовок: Можно ли прикрутить ..
Можно ли прикрутить кнопку для вызова "Дизайнера" на панели "Просмотра" печати ? А то не хочется делать доп. вызов "Дизайнера" из своей программы.
|
|
|
|
| постоянный участник
|
Пост N: 163
Зарегистрирован: 25.12.07
|
|
Отправлено: 13.05.08 09:35. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли прикрутить кнопку для вызова "Дизайнера" на панели "Просмотра" печати ? А то не хочется делать доп. вызов "Дизайнера" из своей программы. |
| Там уже есть вызов дизайнера, но в специальном режиме правки уже сформированного отчета, а свою кнопку добавить сейчас нельзя.
|
|
|
|
| постоянный участник
|
Пост N: 576
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.05.08 20:54. Заголовок: В Дизайнере есть мен..
В Дизайнере есть меню "Отчет", в нем меню "Настройки" и там во вкладке "Описание" есть элемент "Имя" - оно отображается в заголовке окна при "Просмотре" отчета. (классно !) А элемент "Картинка", когда туда вставляешь, нигде не отображается. Для чего она нужна ? Как заставить показываться при "Просмотре" ?
|
|
|
|
| постоянный участник
|
Пост N: 166
Зарегистрирован: 25.12.07
|
|
Отправлено: 22.05.08 16:14. Заголовок: Andrey пишет: Для ч..
Andrey пишет: Сие тайна, покрытая мраком Andrey пишет: цитата: | Как заставить показываться при "Просмотре" ? |
| А где показывать ее? В самом отчете показать конечно можно, типа: procedure Picture1OnBeforePrint(Sender: TfrxComponent); begin Picture1.Picture.Assign(Report.ReportOptions.Picture); end; Но не очень понятно, зачем. А.. в FastReport Server может использоваться при "изготовлении" HTML-странички со списком отчетов, получиться красиво, каждый отчет представлен картинкой.
|
|
|
|
| постоянный участник
|
Пост N: 579
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.08 23:03. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: Нужно показывать где иконка окна "просмотра", т.е. заместо нее.
|
|
|
|
| постоянный участник
|
Пост N: 580
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.05.08 23:04. Заголовок: Решил сделать печать..
Решил сделать печать еще универсальней.... Обойтись вызовом спец.функцией типа MyPrintFR4("zaivka.ini") ! А в этом ини-файле делаю все остальное. Пример файла: zaivka.ini [Настройка] Имя_формы = "СПИСОК ЗАЯВОК НА РЕМОНТ" Файл_формы = "zaivka.fr3" Дизайнер = .F. [Заполнить_переменные] * имя_переменной , значение_переменной , комментарий Поле1 = { "MySample" ,'M->cFiltPrn' , "выборка" } Поле2 = { "MyDatePRN" ,'DTOC(DATE())' , "дата печати" } Поле3 = { "MyFirma" ,'M->SDog_Firma' , "фирма" } Поле4 = { "MyOtdel" ,'M->SDog_Otv+"/"+M->SDog_Tel+"/"' , "Нач.отдела" } [Заполнить_таблицу] * имя_поля , значение_поля (функции+поля_БД) , комментарий Поле1 = { "NN" ,'TRANSFORM(FIELD->NNZa,"@R 999999/99")+CHR(10)+DTOC(FIELD->DATEZa)+", "+CHR(10)+TRANSFORM(FIELD->TIMEZA,"@R 99:99")+CHR(10)+ALLTRIM(FIELD->mNigtZa)+CHR(10)+ALLTRIM(SUBSTR(FIELD->mKodZa,1,10))' , "номер заявки" } Поле2 = { "POLE1" ,'MAR_ADRES(6)+","+CHR(10)+ALLTRIM(FIELD->FIO)+", "+New_TelFIO()+", "+Za_Teleph(0,0,1,1)+CHR(10)+"ОТВ.: "+ALLTRIM(FIELD->cDogov)+CHR(10)+ALLTRIM(FiliDSP->FiliDSP)' , "заказчик,адрес,тел." } Поле3 = { "POLE2" ,'MAR_NEIS3()+CHR(10)+ALLTRIM(FIELD->mRem)' , "неисправность" } Поле4 = { "POLE3" ,'ALLTRIM(srokza->srokza)+", "+CHR(10)+ALLTRIM(FIELD->SrokZa)+"/, "+CHR(10)+DTOC(FIELD->DatePere)+CHR(10)+ALLTRIM(MASTER->MASTER)' , "сроки,мастер" } Поле5 = { "POLE4" ,'ALLTRIM(Domof9->Domof)+", "+ALLTRIM(Truba9->Truba)+", "+ALLTRIM(Zamok9->Zamok)+", "+ALLTRIM(Dovod9->Dovod)+", "+ALLTRIM(Dver9->Dver)+", "+ALLTRIM(Process9->Process)' , "уст.оборудование" } Поле6 = { "OPLAT" ,'IIF(FIELD->SumPlata>0,STR(FIELD->SumPlata,8,2)+" руб.","-")' , "оплата" } [] А на самой форме FastReport проставляю переменные и поля БД. Как заполнить переменные и передать в FastReport - понятно. А как быть с полями БД ? Они же составные ?
|
|
|
|
| постоянный участник
|
Пост N: 167
Зарегистрирован: 25.12.07
|
|
Отправлено: 24.05.08 14:04. Заголовок: Andrey пишет: Решил..
Andrey пишет: цитата: | Решил сделать печать еще универсальней.... Обойтись вызовом спец.функцией типа MyPrintFR4("zaivka.ini") ! А в этом ини-файле делаю все остальное. |
| Похоже Вы явно ищите себе лишнюю (и бесполезную) работу Никакого смысла в этих ini-файлах нет. Все это можно и нужно делать в самих отчетах. Переменные добавляйте в дизайнере, например: "фирма" значение GetHbVar('SDog_Firma') и т.д. Общие переменные добавляйте во все отчеты в той же MyPrintFR4(). Используйте TfrxAlaskaWorkArea объекты и в отчете поля и "составляйте". Чтобы часто не писать 'CallHbFunc()' добавьте в FR часто используемые функции типа ALLTRIM, TRANSFORM и т. д. Кстати можно обсудить набор наиболее используемых функций и я добавлю их в FRH, чтобы не добавлять кодом.
|
|
|
Ответов - 258
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
All
[только новые]
|
|