Название диалога из переменной

отредактировано 11:00 Раздел: FastReport 3.0
Хочу передать в заголовок диалога название отчета из переменной.
В Delphi пишу:
frxReport.Variables['REP_NAME'] := 'Название отчета';
В скрипте FR в главной процедуре пишу:
begin 
  DialogPage1.Caption := <REP_NAME>;
  ...
end;
При запуске получаю сообщение об ошибке:
написал:
quRep: Ошибка в выражении 'Название отчета': неопределенный идентификатор: 'Название отчета'

quRep - это компонент "Запрос FIB". Никаких одноименных переменных в нем нет.
Не пойму почему ошибка указывает на него... ;) что не так???

Комментарии

  • gpigpi
    отредактировано 11:00
    Сделайте так
    frxReport.Variables['REP_NAME'] := '''Название отчета''';
    
    или так
    frxReport.Script.Variables['REP_NAME'] := 'Название отчета';
    
    в скрипте
    begin 
     DialogPage1.Caption := REP_NAME;
     ...
    end;
    

  • отредактировано 11:00
    Спасибо!
    Через скриптовую переменную заработало. ;)
  • отредактировано 11:00
    Рано радовался...
    Ошибка в скрипте 15:34: Неопределенный идентификатор:'REP_NAME'
    
  • gpigpi
    отредактировано 11:00
    А какая версия FR используется?
  • отредактировано 11:00
    Версия 3.20
    Даже просто, создаю в отчете Memo, говорю вставить сюда значение переменной, в мемо получаю текст:
    [REP_NAME]
    
    В Дельфи присваиваю также:
    frxReport.Variables['REP_NAME'] := ....
    
    При открытии отчета:
    ---------------------------
    Ошибка
    ---------------------------
    Были обнаружены следующие ошибки:
    
    Memo44: Ошибка в выражении 'Тут название отчета': Неопределенный идентификатор:'Тут название отчета'
    
    В FR2 таких косяков не наблюдал... работаю с ним с 2002 года. ;)
    Может на баг какой-нибудь наткнулся?
    Использую Дельфи 6.
  • LexLex
    отредактировано 11:00
    написал:
    В Дельфи присваиваю также:
     
    frxReport.Variables['REP_NAME'] := .... 
    

    а там в многоточии что?
    Если что-то типа 'Название отчета' то
    написал:
    Сделайте так
    frxReport.Variables['REP_NAME'] := '''Название отчета''';
    
  • отредактировано 11:00
    В многоточии там подставляется название отчета из поля БД.

    Долго и мучительно читал документацию... ;)
    Сейчас сделал так:
    frxReport.Variables['REP_NAME'] := ''''+dtReportListVCNAME.Value+'''';
    
    Вроде ошибки перестали появляться... но как-то ненадежно все это кажется... может перейти на TfrxReport.OnGetValue?
  • LexLex
    отредактировано 11:00
    Wisdom написал:
    но как-то ненадежно все это кажется
    вполне надежно
    Wisdom написал:
    может перейти на TfrxReport.OnGetValue?
    если не ошибаюсь там появить такаяже проблема с '''' + .... + ''''

    для того чтоб не заморачиваться с кавычками используй скриптовые переменные
    Wisdom написал:
    frxReport.Script.Variables['REP_NAME'] := dtReportListVCNAME.Value;
    
  • отредактировано 11:00
    Можешь попробовать задать название и свойства окна и его элементов через frx (пример на builder 6):
    	// Создаем указатель на объект формы FastReport
        TfrxDialogPage * frxDialog;
    	// Задаем указатель на нужное окно с именем m_pOurDialogPage, созданное заранее в FastReport
        frxDialog = (TfrxDialogPage *) frxOurReport->FindObject("m_pOurDialogPage");
    	// Меняем свойства диалога
        frxDialog->Caption = "Название диалогового окна";  	// название
        frxDialog->Width = 500;      // ширина
        frxDialog->BorderStyle = bsToolWindow;    // стиль окна
    	// Альтернативный доступ к элементам окна через приведение диалога FastReport к TForm
        frxDialog->DialogForm->Color = 255;    	// цвет окна
        frxDialog->DialogForm->Caption = "Другая возможность назвать окно";	// название окна
    	// ... аналогично можно поменять остальные параметры
    
    	// Аналогично для кнопки
    	// Указатель на frx кнопку
        TfrxButtonControl * frxButton;
    	// Присваиваем значение указателю на нужную нам кнопку m_pOurButton
        frxButton = (TfrxButtonControl *) frxOurReport->FindObject("m_pOurButton");
    	// Свойства кнопкт
        frxButton->Caption = "Кнопка ОК";    	// название
        frxButton->ModalResult = mrOk;    	// стандартный результат нажатия
        frxButton->Button->Width = 50;    	// ширина
    	// через приведение в TButton
        frxButton->Button->Caption = "Ok";    	// название
        frxButton->Height = 50;      // высота
    	// ... аналогично можно поменять остальные параметры
    
    	frxOurReport->ShowReport(true);
    
    

    В данном примере в FastReport (frxOurReport) создано диалоговое окно (m_pOurDialogPage) с кнопкой (m_pOurButton).

    Для нормальной работы на форме, откуда мы вызываем отчет, необходимо наличие компонента TfrxDialogControls помимо TfrxReport.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.