![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отчет в QReport на основе Select в DBGridEh [D7, IB6.x]
gu_est © (2004-04-29 21:33:00)Вечер добрый мастера!
Подскажите как реализовать отчет в QReport на основе не всего DataSet, а на основе записей выделенных Мультиселектом в DBGridEh который с ним связан?
gu_est (2004-05-04 18:56:00) [1]Спасибо!
Получилось.
Только добавил проверочку,
procedure TTestReport.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := FCurrIndex < Form1.DBGrid1.SelectedRows.Count;
if MoreData then
begin
with MainForm.DbGrid1, DataSource.Dataset do
begin
GotoBookmark(Pointer(SelectedRows[FCurrIndex]));
QRLabel1.Caption := Fields[0].AsString;
end;
inc(FCurrIndex);
end;
end;
а то отправляет на несуществующую закладку.
Jack128 (2004-05-04 18:06:00) [2]Вобщем вот пример
unit uTestReport;
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;
type
TTestReport = class(TQuickRep)
QRBand1: TQRBand; // Детайл бенд
QRLabel1: TQRLabel; // qrLabel на этом бенде
procedure QuickRepNeedData(Sender: TObject; var MoreData: Boolean);
procedure QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
private
// Текущий индекс в массиве SelectedRows
FCurrIndex: Integer;
public
end;
var
TestReport: TTestReport;
implementation
uses
uMainUnit;
{$R *.DFM}
procedure TTestReport.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := FCurrIndex < Form1.DBGrid1.SelectedRows.Count;
with MainForm.DbGrid1, DataSource.Dataset do
begin
GotoBookmark(Pointer(SelectedRows[FCurrIndex]));
QRLabel1.Caption := Fields[0].AsString;
end;
inc(FCurrIndex);
end;
procedure TTestReport.QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
FCurrIndex := 0;
end;
end.
Плохиш (2004-05-04 18:00:00) [3]SelectedRows + F1
gu_est (2004-05-04 17:38:00) [4]Так как всетаки проверить выделена ли текущая запись в DBGrid?
gu_est (2004-05-02 11:14:00) [5]Я сейчас может быть глупость спрошу... Ногами не бейте.
А как проверить выделена ли текущая запись в гриде или нет?
Jack128 (2004-04-29 21:59:00) [6]проверь в деталБанд.OnBeforePrint выделена ли текущая запись в гриде и соответственно PrintBand := True или False
или ручками (см OnNeedData)