Автор | Сообщение |
|
| постоянный участник
|
Пост N: 715
Зарегистрирован: 27.01.07
|
|
Отправлено: 26.01.12 15:31. Заголовок: Существует ли в FastReport возможность динамически
"рулить" обрамлением текстового поля? Т.е., к примеру, рисовать или нет рамку в зависимости от содержимого поля?
|
|
|
Ответов - 5
[только новые]
|
|
|
| постоянный участник
|
Пост N: 599
Зарегистрирован: 25.12.07
|
|
Отправлено: 26.01.12 22:41. Заголовок: PSP пишет: Т.е., к ..
PSP пишет: цитата: | Т.е., к примеру, рисовать или нет рамку в зависимости от содержимого поля? |
| Конечно можно. Вообще говоря, скриптом можно рулить всем, что есть в FR Насчет обрамления, например: procedure Memo8OnBeforePrint(Sender: TfrxComponent); begin if bla-bla then TfrxMemoView(Sender).Frame.Typ := ftLeft + ftTop; end;
|
|
|
|
| постоянный участник
|
Пост N: 716
Зарегистрирован: 27.01.07
|
|
Отправлено: 27.01.12 08:09. Заголовок: Спасибо. :sm12: ..
Спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 600
Зарегистрирован: 25.12.07
|
|
Отправлено: 27.01.12 11:34. Заголовок: Да не за что :sm12:..
Да не за что Спрашивай, что не понятно. Данный вопрос, наверное, возник потому, что "не прошло" просто: Sender.Frame.Typ := ftLeft + ftTop; Так? Если так, то тут надо понять, что Pascal и C языки типизированные и с такой передачей в параметре объекта возникают полиморфные нюансы, которых нет в нетипизированных языках. JavaScript и BasicScript в фасте - нетипизированные языки и там такое присвоение пройдёт. В Pascal и C ситуация следующая, этот обработчик события может "обслуживать" много разных типов объектов, поэтому в обработчиках параметр Sender имеет тип TfrxComponent, это общий предок для вообще всех объектов FR. В реальности же передаваться может любой из его потомков. TfrxMemoView(Sender) - это приведение Sender к типу TfrxMemoView. Если в обработчик могут передаваться объекты разных типов и вызывать надо специфические (а не общие) их методы, то нужно будет писать так: if Sender is TfrxMemoView then TfrxMemoView(Sender).Frame.Typ := ftLeft + ftTop else if Sender is TfrxPictureView then....
|
|
|
|
| постоянный участник
|
Пост N: 717
Зарегистрирован: 27.01.07
|
|
Отправлено: 27.01.12 15:20. Заголовок: Серёж, спасибо за ра..
Серёж, спасибо за разъяснения. Честно говоря, я еще не пытался использовать скрипты. Вот возникла ситуация, когда придётся. Еще раз спасибо!
|
|
|
|
| постоянный участник
|
Пост N: 2247
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.12 16:45. Заголовок: Вопрос к знатокам Fa..
Вопрос к знатокам FastReport, а может и дело не в Фасте ? Столкнулся с проблемой: Никак не могу понять, что за тип переменной в Фасте - FrPrn ? PRIVATE FrPrn //----------- Now load and init FastReport -------------------------------------- FrPrn := frReportManager():new(cFileFastDll) //---------- Set the same icon for FastReport windows ---------- FrPrn:SetIcon( "FAST_ICO" ) Это типа переменная ОБЪЕКТ ? Как в OLE-объекте ? А как тогда ее передавать по ссылке в другие функции ? Поясню кодом: В функции (которую вызываю раньше чем инициализация переменных FastReport) пишу следующее: Скрытый текст //////////////////////////////////////////////////////////////// // Функция ввода диска и маски файлов для передачи на форму Fastreport PROCEDURE DoUserDirFr3() LOCAL aDir, I := 1, oAddFrPrn PUBLIC DirNameFr3 M->DirNameFr3 := FormaMain.Text_2.Value aDir := Directory(DirName) oAddFrPrn:SetUserDataSet("Dir", "F_NAME;F_SIZE;F_CREATION_DATE",; {||I := 1}, {||I := I + 1}, ; {||I := I - 1}, {||I > Len(aDir)},; {|aField|xx := IF(aField="F_NAME",1, IF(aField="F_SIZE", 2, 3)) , aDir[I, xx]}) MyViewFR4( M->cSetPathExe + "FrhViewFr3.fr3" , 1, oAddFrPrn ) RETURN Далее: ////////////////////////////////////////////////////////////////////// #include "FastRepH.ch" #include "mydefines.ch" FUNCTION MyViewFR4( cFileForm, nShowDesignReport, oAddFrPrn ) LOCAL cFile, aDemoFile, nI, cText DEFAULT nShowDesignReport TO 2 DEFAULT oAddFrPrn TO NIL ...... MyFastReport4( cFileForm , nShowDesignReport, oAddFrPrn ) RETURN NIL //////////////////////////////////////////////////////////////// FUNCTION MyFastReport4( cFileForm, nShowDesignReport, oAddFrPrn ) LOCAL cText, cFileFastDll := M->cSetPathExe + "FrSystH411.dll" PRIVATE FrPrn //----------- Now load and init FastReport -------------------------------------- FrPrn := frReportManager():new(cFileFastDll) //---------- Set the same icon for FastReport windows ---------- FrPrn:SetIcon( "FAST_ICO" ) // ------------ Init FastReport -------------------------------------- InitFr4( @FrPrn, cFileForm ) //----------- Load file form FastReport ---------------------- FrPrn:LoadFromFile( cFileForm ) // ------------ Init FastReport Vars and Function ------------ InitFr4VarsFunc( @FrPrn ) // ------------ AADD Vars for FastReport ------------ IF oAddFrPrn # NIL // Нужно добавить oAddFrPrn к FrPrn ??? Как это сделать ? ENDIF IF nShowDesignReport == 1 FrPrn:ShowReport() ELSE FrPrn:DesignReport() ENDIF FrPrn:ClearDataSets() //-------- Unload FastReport ------------------------------------------------------------- FrPrn:DestroyFR() .....
| Пример для директории взят в 6.fr3 в ДЕМО Но там инициализация Фаста вверху программы FrPrn := frReportManager():new(cFileFastDll), а у меня получается, что я сначала задаю объект обработки, а инициализация Фаста еще не была. Как сделать в таком случае ?
|
|
|
|