Як у FastReport 3 відобразити вміст StringGrid
Використовувати TfrUserDataSet? Але як?
не знаю як у третьому, але взагалі є у TfrUserDataSet події OnCheckEOF , тут ти призначаєш змінної EOF значення, True кінець набору даних і False відповідно навпаки. треба.
А приклад можна? Як саме здійснити прив'язку StringGrid до frxUserDataSet?
Правда, StringGrid не відображається, якщо є рядкові рядки - помилка: could not convert variant of type(string) into type (double). Під час трасування виявляється, що немає модуля - frxCrossMatrix.pas. У чому ж справа? Використовую TfrxCrossView: для i := 1 для StringGrid1.ColCount для for j := 1 для StringGrid1.RowCount do Cross.AddValue( [j], [i], [StringGrid1.Cells[i – 1, j – 1]]); Якщо в StringGrid1 комірки тільки числові (real,integer. ), то все ОК. Хто-небудь знає, як відобразити StringGrid1, якщо комірки можуть бути рядковими?
є у TfrReport подія OnGetValue, я там підставляю значення змінних.
procedure TfrmRepFuel.frUDamountCheckEOF(Sender: TObject; var Eof: Boolean); begin Eof:=cdsCaption.Eof; end;
procedure TfrmRepFuel.frUDamountFirst(Sender: TObject); beginfAmount:=cdsFuel.FieldByname("amount").AsFloat cdsCaption.next; end;
procedure TfrmRepFuel.frUDamountNext(Sender: TObject); begin if . thenfAmount:=cdsFuel.FieldByname("amount").AsFloat elsefAmount:=0; cdsCaption.next; end;
procedure TfrmRepFuel.frReportGetValue(const ParName: String; var ParValue: Variant); begin if ParName="amount" then ParValue:=fAmount; end;
Я так розумію frUDamount - цеfrUserDataSet, а що таке cdsCaption?
fedor (12.08.04 8:24) [6]Щоб у рядкових не виникало помилок, тобі у звіті там куди ти засовуєш значення треба вказати явно тип даних, у твоєму випадку рядковий ось і все
Словник даних->Змінні).І в мемо полях підставити ці змінні.
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;
Все вийшло, спасибі. Але друк StringGrid через CrossView зручніше, звичайно, т.к. відображається у вигляді таблиці, і якщо стовпці не вміщаються на одному аркуші, переносяться. У запропонованому тобою варіанті необхідно вказувати конкретні Memo-поля, а щоб усе вийшло у вигляді таблиці, необхідно підганяти розташування Memo-полів і обрамляти їх рамкою, що незручно.
Однак, ще питання: Як у FastReport 3(beta) прибрати повідомлення - "Unregistered version of FasReport"?
тобто. "Unregistered version of FastScript" воно з'являється при відкритті звіту
> Як у FastReport 3(beta) прибрати повідомленняМоже зареєструвати треба?
А взагалі це тестова бета, її не можна юзати. Тільки тестувати