Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.202.45] |
|
Сообщ.
#1
,
|
|
|
Я с FastReport раньше не работал, но уже понемногу начинаю разбираться. Хотя до решения задачи еще далеко.
В папке Demos\PrintStringGrid лежит пример, который как раз выполняет такую задачу какую мне нужно. Но у меня появилось несколько вопросов: 1. Заполнение отчета из StringGrid'a происходит в событии frxReport1BeforePrint. Тип данных, которые по умолчанию передаются в отчет - числовой. Как только пытаюсь передать вместо числа строку, то ругается на несоответствие типов между числовым и строковым. Скорее всего как-то надо тип значения ячейки выставить. Как это сделать? 2. Мне нужно в некоторых ячейках (в хедере) сделать вертикальное расположение текста. Точно знаю что FastReport поддерживает такую возможность. Только опять же, как добраться до этого свойства? 3. Как можно объединить некоторые ячейки таблицы? Если решение этих вопросов где-нибудь уже рассматривалось, ткните носом. Обыскал немало сайтов, но нигде не нашел. Добавлено P.S. моя задача - составить отчет из данных, которые находятся в StringGrid (базу данных не использую) |
Сообщ.
#2
,
|
|
|
сходу:
2. У мемок есть св-во Rotation Добавлено в примере, в кросс-отчёт передаются строки со стринггрида в чём грабли не понятно... |
Сообщ.
#3
,
|
|
|
1. Передавай строковые значения в кавычках
|
Сообщ.
#4
,
|
|
|
С этими вопросами разобрался, спасибо. Есть еще один вопрос.
У меня в отчете заполняется таблица. У таблицы есть заголовок. Этот заголовок я заполняю так же как и другие ячейки таблицы. Как правильно делается с помощью FastReport, чтобы если таблица размещается на 2х и больше страницах, то чтобы заголовок таблицы отображался на каждой странице? |
Сообщ.
#5
,
|
|
|
У заголовка есть параметр PrintOnNewPage кажется. Значение его поставить истина.
|
Сообщ.
#6
,
|
|
|
Скорее всего я несовсем правильно построил отчет. Хидэр таблицы должен быть отдельным компонентом (frxCrossView). У меня же все данные выводяться в один и тот же компонент (см. изображение). Правильно я понимаю, нужно хидэр в отдельный компонент выводить?
|
Сообщ.
#7
,
|
|
|
Paul_K, спасибо, разобрался. Надо было добавить еще один бэнд и на него добавить кросс и выставить правильные свойства.
|
Сообщ.
#8
,
|
|
|
Shad0FF Да не за что.
|
Сообщ.
#9
,
|
|
|
У меня тут еще один вопрос появился. Строю таблицу и в событии OnPrintCell изменяю свойства Memo.Frame.LeftLine.Color чтобы убрать линию у всех ячеек, которые слева у таблицы. А вот как можно убрать правую линию у всех ячеек, которые справа. Для этого надо знать количество столбцов, чтобы сравнить его с переменной ColumnIndex. Как лучше всего узнать количество столбцов таблицы?
|
Сообщ.
#10
,
|
|
|
Скрин для наглядности. Слева линию убрал, т.к. знаю индекс столбца (индекс равняется 0), а вот справа индекса последнего столбца незнаю, т.к. количество столбцов может быть разное.
|
Сообщ.
#11
,
|
|
|
а вы её что динамически строите, таблицу?
|
Сообщ.
#12
,
|
|
|
Цитата Игорь Акопян @ а вы её что динамически строите, таблицу? Динамически. Но я уже догадался, как это можно сделать. Для этого нужно у всех ячеек изменить свойство Memo.Frame.RightLine.Color = clWhite; Появился еще один вопрос. Строю таблицу отдельно и на каждом листе вывожу ее заголовок (исп. PageHeader), если она не влазит на один лист. Но иногда ширина одного из столбцов таблицы выставляется автоматически, т.к. текст ячейки не вмещается в заданную ширину. А эта же колонка в таблице-хэдэре остается прежней по ширине. Как можно уже после построения первой таблицы и во время построения второй (хэдэра) узнать ширину нужной мне колонки в 1й таблице? |
Сообщ.
#13
,
|
|
|
Всем привет. Прошу помощи в следующем вопросе. Есть форма Form4, на ней Button1, frxReport1, frxDialogControls1.
Код в Delphi следующий unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxDCtrl, frxClass, StdCtrls; type TForm4 = class(TForm) Button1: TButton; frxReport1: TfrxReport; frxDialogControls1: TfrxDialogControls; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); begin frxReport1.ShowReport(); end; end. в FastReport (v.4.9), соответственно, тоже форма и кнопка. Код следующий procedure Button1OnClick(Sender: TfrxComponent); begin ShowMessage('Hello world!'); DialogPage1.ModalResult:=mrOk; end; begin DialogPage1.ShowModal; Engine.StopReport; end. при вызове диалога кнопка не реагирует, обработчик не срабатывает. Если убрать в FastReport-е строку Engine.StopReport, тогда при закрытии формы она снова появляется, и обработчик УЖЕ РАБОТАЕТ. Может я чего-нибудь не так делаю. Пишу сие для вызова из DLL. Пробовал на C++Buildere - тоже самое. Спасибо. |
Сообщ.
#14
,
|
|
|
Цитата Syslik @ Вопрос закрыт, проблема была в версии FastReport. Поставил 4.12, заработало. Спасибо. |