Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Как в FastReport 3 отобразить содержимое StringGrid?   Найти похожие ветки 

 
fedor   (2004-08-11 16:18) [0]

Использовать TfrUserDataSet? Но как?


 
fedor   (2004-08-11 16:21) [1]

Т.е. frxUserDataSet1


 
Silver Alex ©   (2004-08-11 17:05) [2]

не знаю как в  третем, но вообще есть у  TfrUserDataSet события OnCheckEOF , здесь ты назначаешь переменной EOF значение, True конец набора данных и False соответственно наоборот.А также события OnFirst первая запись и OnNext переход на следующую запись, здесь уже подставляешь непосредственно данные какие тебе надо.


 
Rule ©   (2004-08-11 17:54) [3]

RTFM


 
fedor   (2004-08-12 07:31) [4]

2Silver Alex ©   (11.08.04 17:05) [2]

А пример можно?
Как именно осуществить привязку StringGrid к  frxUserDataSet?

2Rule ©   (11.08.04 17:54) [3]

В FM нет примера.


 
fedor   (2004-08-12 07:55) [5]

Разобрался, сорри...


 
fedor   (2004-08-12 08:24) [6]

Правда, 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, если ячейки могут быть строковыми?


 
Silver Alex ©   (2004-08-12 09:17) [7]

есть у 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 09:36) [8]

2Silver Alex ©   (12.08.04 09:17) [7]

Я так понимаю frUDamount - это frUserDataSet,
а что такое cdsCaption?


 
Rule ©   (2004-08-12 09:45) [9]

fedor   (12.08.04 8:24) [6]
Чтобы в строковых не возникало ошибок, тебе в отчете там куда ты засовываешь значения надо указать явно тип данных, в твоем случае строковый вот и все


 
Silver Alex ©   (2004-08-12 10:04) [10]

<<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;


 
fedor   (2004-08-12 11:18) [11]

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-полей и обрамлять их рамкой, что неудобно.


 
fedor   (2004-08-12 15:09) [12]

Однако, еще вопрос:
Как в FastReport 3(beta) убрать сообщение - "Unregistered version of FasReport"?


 
fedor   (2004-08-12 15:11) [13]

т.е. "Unregistered version of FastScript"
оно появляется при открытии отчета


 
Iconka ©   (2004-08-12 15:23) [14]


> Как в FastReport 3(beta) убрать сообщение

Может зарегестрировать надо?


 
Iconka ©   (2004-08-12 15:30) [15]

А вообещто это же тестовая бета, ее нельзя юзать. Только тестить :)


 
fedor   (2004-08-12 15:40) [16]

нн..да..



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.058 c
14-1092310311
olookin
2004-08-12 15:31
2004.09.05
Вы считаете, что программы, поставляемые в составе Delphi...


14-1092507151
YurikGL
2004-08-14 22:12
2004.09.05
Полиция будет останавливать машины радиоволнами


1-1092599700
HSD
2004-08-15 23:55
2004.09.05
Пересечение классов


3-1092115903
MadGhost
2004-08-10 09:31
2004.09.05
Есть ли такой SQL-сервер (маленький) чтобы его можно было вместе


4-1090356969
[ping]VIN
2004-07-21 00:56
2004.09.05
GetLogicalDrivers