Идея хорошая, спасибо.
Я использую TfrPrintGrid в процедуре которая печает любой TDBGrid и TStringGrid, не хотелось бы переписывать этот огород. Может быть есть еще какие нибудь идеи?
Да вот расковырял TfrPrintGrid есть в нем Event (OnPrintRow) если установить IsPrint:=False; то эффект := 0; выводятся все строки грида
// Title
if FTitle.Text <> '' then
begin
b := TfrBandView(frCreateObject(gtBand, ''));
b.SetBounds(0, 20, 1000, 30);
b.Flags := b.Flags or flStretched;
b.BandType := btReportTitle;
Page.Objects.Add( ;
v := frCreateObject(gtMemo, '');
v.SetBounds(0, 20, 1000, 20);
Page.Objects.Add( ;
а вот после этого начинает работать Event(frRepDBGridPrintRow)
procedure TfrmPrnGrid.frRepDBGridPrintRow(var IsPrint: Boolean);
begin
IsPrint:=True;
if DBGrid.SelectedRows.Count > 1 then
begin
IsPrint:=False;
if DBGrid.SelectedRows.CurrentRowSelected then IsPrint:=True;
end;
end;
Комментарии
Я использую TfrPrintGrid в процедуре которая печает любой TDBGrid и TStringGrid, не хотелось бы переписывать этот огород. Может быть есть еще какие нибудь идеи?
Да вот расковырял TfrPrintGrid есть в нем Event (OnPrintRow) если установить IsPrint:=False; то эффект := 0; выводятся все строки грида
правим FR_PTable
// Title
if FTitle.Text <> '' then
begin
b := TfrBandView(frCreateObject(gtBand, ''));
b.SetBounds(0, 20, 1000, 30);
b.Flags := b.Flags or flStretched;
b.BandType := btReportTitle;
Page.Objects.Add( ;
v := frCreateObject(gtMemo, '');
v.SetBounds(0, 20, 1000, 20);
// b.Script.Clear; // Add Stalker
// b.Script.Add('begin'); // Add Stalker
// b.Script.Add(' Visible := IsPrint()'); // Add Stalker
// b.Script.Add('end'); // Add Stalker
v.BandAlign := baWidth;
TfrMemoView(v).Alignment:= FTitle.GetAlign + frtaMiddle;
TfrMemoView(v).Font := FTitle.Font;
v.FrameTyp := FTitle.GetFrameTyp;
v.FrameWidth := FTitle.FrameWidth;
v.FillColor := FTitle.Color;
v.Memo.Add(FTitle.Text);
Page.Objects.Add(v);
end;
// Body
b := TfrBandView(frCreateObject(gtBand, ''));
b.BandType := btMasterData;
b.Dataset := FReportDataSet.Name;
b.SetBounds(0, 130, 1000, 18);
b.Flags := b.Flags or flStretched;
b.Script.Clear; // Add Stalker
b.Script.Add('begin'); // Add Stalker
b.Script.Add(' Visible := IsPrint()'); // Add Stalker
b.Script.Add('end'); // Add Stalker
Page.Objects.Add( ;
а вот после этого начинает работать Event(frRepDBGridPrintRow)
procedure TfrmPrnGrid.frRepDBGridPrintRow(var IsPrint: Boolean);
begin
IsPrint:=True;
if DBGrid.SelectedRows.Count > 1 then
begin
IsPrint:=False;
if DBGrid.SelectedRows.CurrentRowSelected then IsPrint:=True;
end;
end;
в результате печатаюся выбранные в DBGrid строки.