Печать строк TDBGrid

отредактировано 04:51 Раздел: FastReport 2.xx VCL
Как вывести в отчет только строки TDBGrid которые выбраны (selected)?

Комментарии

  • отредактировано 04:51
    Я бы использовал TfrUserDataSet... ;) В событии OnNext надо прописать переход к следующей выделенной записи.
  • отредактировано December 2003
    Идея хорошая, спасибо.
    Я использую TfrPrintGrid в процедуре которая печает любой TDBGrid и TStringGrid, не хотелось бы переписывать этот огород. Может быть есть еще какие нибудь идеи?

    Да вот расковырял TfrPrintGrid есть в нем Event (OnPrintRow) если установить IsPrint:=False; то эффект := 0; выводятся все строки грида
  • отредактировано 04:51
    Да вот сам нашел ответ
    правим 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 строки.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.