Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2010, 12:38   #1
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
Восклицание Как передавать данные в FreeReport?

Привет всем!
Подскажите пожалуйста, как передать данные компоненту Memo в FreeReport'e? Т.е. в DataSet'ами все ясно, а вот как передать, к примеру, знаечение edit1.Text или значение какой-нибудь другой переменной не знаю. Подскажите пожалуйста.
Заранее спасибо!
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 06.03.2010, 08:41   #2
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Код:
procedure TForm1.frReport1GetValue(const ParName: String;
  var ParValue: Variant);
begin
 if ParName = 'Edit1' then
  ParValue := Edit1.Text;
end;
Aleksandr вне форума Ответить с цитированием
Старый 07.03.2010, 13:37   #3
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Aleksandr, а можно по подробнее, потому как, следуя вашему примеру, у меня ничего не получилось.

Ничего не получается, подскажите пожалуйста как это реализовать?
Мне требуется чтобы в memo8 (это не тот компонент который в Делфи, а компонент FreeReporta) передавалось значение Label10.Caption
Делаю по примеру Александра:
Код:
procedure TForm1.frReport1GetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;
if ParName='Memo8' then ParValue:=Label10.Caption;
end;
Итог: То выдается какая-то ошибка (Эксесс Виолейшн), то просто никакого значения не присваивается. И вообще, это у меня так или вообще сам компонент FreeReport такой глючный?

Ах да, и еще вопрос. Когда я помещаю в отчет компонент Shape, то при формировании отчета выдается ошибка:


Если честно, то все хвалят этот компонент, а у меня одни глюки. Да, понимаю, что многие скажут что руки не оттуда растут или что-либо еще в этом плане, но честное слово, устанавливал как все компоненты, по инструкции, за исключением вот этого пункта:
Цитата:
FreeReport поставляется в исходных текстах. В ограниченной версии есть
только один скомпилированный модуль - FR_Class.dcu. Версии этого модуля
для Delphi 2/3/4/5 содержатся в каталогах LIB_D2...LIB_D5. Перед
установкой компонента скопируйте нужную версию модуля в каталог ..\FR\SOURCE
Вот убейте, я не могу найти каталоги LIB_D2...LIB_D5, я так понимаю что ошибка с классами у меня по этой причине и получается, но как быть?
Знатоки Фрирепорта, подскажите пожулйста. Ну и, конечно же, вопрос с передачей данных в компоненты Мемо остается открытым, заранее спасибо!

Ну подскажите пожалуйста. Как передавать данные в отчет?
Водку мы пьем для запаха - а дури нам своей хватает!

Последний раз редактировалось Stilet; 09.03.2010 в 08:17.
Vit@L вне форума Ответить с цитированием
Старый 08.03.2010, 12:38   #4
Lecter2009
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 17
По умолчанию

А элемент MEMO8 в отчете присутсвует? Именно с таким именем?
Lecter2009 вне форума Ответить с цитированием
Старый 08.03.2010, 17:43   #5
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Цитата:
А элемент MEMO8 в отчете присутсвует? Именно с таким именем?
Да, присутствует. В общем я тут нашел способ передавать данные. Нашел на сайте разработчиков в руководстве к Fast Report:

Цитата:
Объекты FastReport (такие, как страница отчета, бэнд, мемо-объект) напрямую недоступны из вашего кода. Это означает, что вы не можете обратиться к объекту по его имени, как, например, обращаетесь к кнопке на вашей форме. Чтобы обратиться к объекту, надо найти его с помощью метода TfrxReport.FindObject:

Pascal:

var
Memo1: TfrxMemoView;

Memo1 := frxReport1.FindObject('Memo1') as TfrxMemoView;
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 09.03.2010, 09:52   #6
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Вот простенький пример.
Вложения
Тип файла: rar проект.rar (385.2 Кб, 131 просмотров)
Aleksandr вне форума Ответить с цитированием
Старый 11.03.2010, 05:53   #7
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Ок, спасибо. Я посмотрю пример.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 11.03.2010, 10:42   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Vit@L
существует МНОГО разных способов, как можно передать переменную в отчёт. (правда, я работал только с FastReport, но не думаю, что он в этом плане сильно отличается от FreeReport'а)

1) тот, что использовали вы через FindObject
(по хорошему ещё надо проверять, нашлось или нет, но это уже лежит на Вашей совести, как разработчика программы)

2) добавить в отчёт переменную и присваивать ей значение
Код:
frReport1.Dictionary.Variables.Variable['My_Edit1'] := Edit1.Text;

3) использовать способ, который Вы пытались задействовать в пост #3 - (через GetValue)
но только его надо правильно использовать. (в документации, кстати, об этом есть!):
в GetValue попадает вызов, когда в тексте отчёта встречаются выражения в квадратных скобках.
напишите внутри вашего любого memo текст (к примеру): [MYEDIT1] )

и используйте такой код, назначенный на GetValue:
Код:
procedure TForm1.frReport1GetValue(const ParName: String;
  var ParValue: Variant);
begin
 if ParName = 'MYEDIT1' then
   ParValue := Edit1.Text;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.03.2010, 12:36   #9
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Serge_Bliznykov, спасибо большое за помощь. Сейчас пользуюсь первым вариантом. А по поводу того что нашелся или нет объект, то он обязательно найдется, так как они у меня заранее созданы и это фиксированный набор объектов. Так что для меня 1-й вариант подходит вполне.
Но все равно, еще раз спасибо большое за помощь.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 18.03.2010, 16:38   #10
taxyxa
Новичок
Джуниор
 
Регистрация: 18.03.2010
Сообщений: 2
По умолчанию

Спасибо Aleksandr за пример, очень помог разобраться и понять как работает компонент TfrReport.

Подскажите пожалуйста как изменить кодировку в FreeReporte.





Спасибо.
taxyxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передавать (и через что) файлы? TwiX Работа с сетью в Delphi 5 17.03.2010 16:30
Как считывать и передавать информацию на страницу Internet Explorer? wawan_beta Общие вопросы по Java, Java SE, Kotlin 1 24.04.2009 10:43
Как данные с массива передавать на тренд и таблицу? KuevProger Помощь студентам 1 20.03.2009 11:47
Возможно ли через ПХП передавать данные между разными сайтами? tunyash PHP 1 31.07.2008 16:26
как из dll передавать данные в основную программу? andrey4623 Общие вопросы Delphi 5 06.08.2007 10:15