Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо