![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в FastReport 3 отобразить содержимое StringGrid? [D7, MSSQL]
fedor © (2004-08-11 16:18:00)Использовать TfrUserDataSet? Но как?
fedor (2004-08-12 15:40:00) [1]нн..да..
Iconka (2004-08-12 15:30:00) [2]А вообещто это же тестовая бета, ее нельзя юзать. Только тестить :)
Iconka (2004-08-12 15:23:00) [3]
> Как в FastReport 3(beta) убрать сообщение
Может зарегестрировать надо?
fedor (2004-08-12 15:11:00) [4]т.е. 'Unregistered version of FastScript'
оно появляется при открытии отчета
fedor (2004-08-12 15:09:00) [5]Однако, еще вопрос:
Как в FastReport 3(beta) убрать сообщение - 'Unregistered version of FasReport'?
fedor (2004-08-12 11:18:00) [6]2Rule © (12.08.04 09:45) [9]
В самом отчете на MasterData находится CrossView, если на него кликнуть, то появляется окно редактирования, там есть кнопка format: для строковых подходят категории - text(no formatting и custom), но ничего не меняется. Ошибка та же.
Может что не так делаю? Подскажи, если знаешь.
И еще вопрос:
Программно как поменять тип ячеек CrossView?
2Silver Alex © (12.08.04 10:04) [10]
Все получилось, спасибо.
Но печать StringGrid через CrossView удобнее, конечно, т.к. отображается в виде таблицы, и если столбцы не умещаются на одном листе, то переносятся. В предложенном тобой варианте нужно указывать конкретные Memo-поля, а чтоб все получилось в виде таблицы, нужно подгонять расположение Memo-полей и обрамлять их рамкой, что неудобно.
Silver Alex (2004-08-12 10:04:00) [7]<<fedor (12.08.04 09:36) [8]
это датасет,но это не важно это просто пример.Смысл в следующем, на OnNext ты задаешь значение переменным, например
procedure TfrmMain.frUDNext(Sender: TObject);
begin
fCol1:=StringGrid.Cells[1,i];
fCol2:=StringGrid.Cells[2,i];
fCol3:=StringGrid.Cells[2,i];
inc(i);
end;
затем задаешь значение переменным самого репорта, вначале их конечно надо определить в FastReport(Файл-> Словарь данных->Переменные).И в мемо полях подставить эти переменные.
procedure TfrmRepFuel.frReportGetValue(const ParName: String;
var ParValue: Variant);
begin
if ParName='column1' then
ParValue:=fCol1;
if ParName='column2' then
ParValue:=fCol2;
if ParName='column3' then
ParValue:=fCol3;
end;
и определить конец набора данных
procedure TfrmRepFuel.frUDCheckEOF(Sender: TObject;
var Eof: Boolean);
begin
Eof:= I>StringGrid.ColCount;
end;
Rule (2004-08-12 09:45:00) [8]fedor (12.08.04 8:24) [6]
Чтобы в строковых не возникало ошибок, тебе в отчете там куда ты засовываешь значения надо указать явно тип данных, в твоем случае строковый вот и все
fedor (2004-08-12 09:36:00) [9]2Silver Alex © (12.08.04 09:17) [7]
Я так понимаю frUDamount - это frUserDataSet,
а что такое cdsCaption?
Silver Alex (2004-08-12 09:17:00) [10]есть у TfrReport событие OnGetValue, я там подставляю значение переменных.
procedure TfrmRepFuel.frUDamountCheckEOF(Sender: TObject;
var Eof: Boolean);
begin
Eof:=cdsCaption.Eof;
end;
procedure TfrmRepFuel.frUDamountFirst(Sender: TObject);
begin
fAmount:=cdsFuel.FieldByname('amount').AsFloat
cdsCaption.next;
end;
procedure TfrmRepFuel.frUDamountNext(Sender: TObject);
begin
if ... then
fAmount:=cdsFuel.FieldByname('amount').AsFloat
else
fAmount:=0;
cdsCaption.next;
end;
procedure TfrmRepFuel.frReportGetValue(const ParName: String;
var ParValue: Variant);
begin
if ParName='amount' then
ParValue:= fAmount;
end;
fedor (2004-08-12 08:24:00) [11]Правда, StringGrid не отображается, если есть ячейки строковые -
ошибка: could not convert variant of type(string) into type (double).
При трассировке обнаруживается, что нет модуля - frxCrossMatrix.pas.
В чем же дело?
Использую TfrxCrossView:
for i := 1 to StringGrid1.ColCount do
for j := 1 to StringGrid1.RowCount do
Cross.AddValue([j], [i], [StringGrid1.Cells[i - 1, j - 1]]);
Если в StringGrid1 ячейки только числовые (real,integer,...), то все ОК.
Кто-нибудь знает, как отобразить StringGrid1, если ячейки могут быть строковыми?
fedor (2004-08-12 07:55:00) [12]Разобрался, сорри...
fedor (2004-08-12 07:31:00) [13]2Silver Alex © (11.08.04 17:05) [2]
А пример можно?
Как именно осуществить привязку StringGrid к frxUserDataSet?
2Rule © (11.08.04 17:54) [3]
В FM нет примера.
Rule (2004-08-11 17:54:00) [14]RTFM
Silver Alex (2004-08-11 17:05:00) [15]не знаю как в третем, но вообще есть у TfrUserDataSet события OnCheckEOF , здесь ты назначаешь переменной EOF значение, True конец набора данных и False соответственно наоборот.А также события OnFirst первая запись и OnNext переход на следующую запись, здесь уже подставляешь непосредственно данные какие тебе надо.
fedor (2004-08-11 16:21:00) [16]Т.е. frxUserDataSet1