AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi StringGrid im QuickReport
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid im QuickReport

Ein Thema von Moin34 · begonnen am 4. Jan 2004 · letzter Beitrag vom 12. Jan 2004
Antwort Antwort
Moin34

Registriert seit: 4. Jan 2004
4 Beiträge
 
#1

StringGrid im QuickReport

  Alt 4. Jan 2004, 13:57
Moin,

und ein frohes neues

ich beschäftige mich erst seit kurzem mit delphi und stehe da neben den 100 anderen fragen einer besonders gegenüber...

kann ich einen stringgrid 1 zu 1 in einem quickreport anzeigen und ausdrucken lassen ?

wenn ja....wie ?

  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: StringGrid im QuickReport

  Alt 4. Jan 2004, 14:01
wie es mit qquickreport geht kann ich dir nicht sagen, aber stringgrid drucken in google hat mit 187 vorschläge gebracht und manche sehr gute
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: StringGrid im QuickReport

  Alt 5. Jan 2004, 16:45
Hallo Moin34,

du kannst dir qrShape Komponenten nehmen und daraus aus Rechtecken eine Zeile des Stringgrids mit den entsprechenden qrDBText Komponenten aufbauen. Dann wird automatisch ein Grid draus, wenn du den Rahmen direkt an die Unter- und Oberkante des Detailbandes ausrichtest.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Moin34

Registriert seit: 4. Jan 2004
4 Beiträge
 
#4

Re: StringGrid im QuickReport

  Alt 5. Jan 2004, 17:14
Moin,

mal wieder das ging ja fix....
ich bedank mich ersteinmal für die schnellen antworten...
werde es mal ausprobieren.

wenn ich dem gleich eine kurze frage hinterherschieben darf...

wie sag ich dem "detail" das er für die nächste seite einen neuen detail-bereich machen soll ??

wie gesagt ich beschäftige mich erst seit kurzem mir delphi...

danke mal wieder..

Gruss
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: StringGrid im QuickReport

  Alt 5. Jan 2004, 17:59
Hallo Moin34,

zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum (hatte ich beim vorigen Post vergessen zu erwähnen).

Wenn du die Datasource Eigenschaft des Reports auf die darzustellende Datenmenge verweisen lässt, kümmert sich Quickreport selbst darum, dass für jeden datensatz ein Detaiband gedruckt wird.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Moin34

Registriert seit: 4. Jan 2004
4 Beiträge
 
#6

Re: StringGrid im QuickReport

  Alt 5. Jan 2004, 21:08
Mh,...

ja, , nicht das ich nun viel schlauer bin... aber probieren....

thanks for help
  Mit Zitat antworten Zitat
Moin34

Registriert seit: 4. Jan 2004
4 Beiträge
 
#7

Re: StringGrid im QuickReport

  Alt 10. Jan 2004, 17:42
Hallo,

danke auch für deine Hilfe Mr.Spock.

Dank des Forums und ein wenig Spielerei bin ich nun schon ein wenig weitergekommen.

Was mir aber noch zu schaffen macht, ist das darstellen von mehreren zeilen des
stringGrid´s im detailbereich des QuickReportes :

Ich Versuche es auf diese Weise :


q1.Caption := form1.KStringgrid1.Cells [1,z1];
q2.Caption := form1.KStringgrid1.Cells [2,z1];
q3.Caption := form1.KStringgrid1.Cells [3,z1];
q4.Caption := form1.KStringgrid1.Cells [4,z1];
q5.Caption := form1.KStringgrid1.Cells [5,z1];
q6.Caption := form1.KStringgrid1.Cells [6,z1];
q7.Caption := form1.KStringgrid1.Cells [7,z1];

q1 - q7 sind die Felder im Detailbereiches des Report, die nummern der spalten, z1 die zeile im form1 als variabe.


Die 1.Zeile wir dim Report auch dargestellt, bin ich damit etwa auf dem Falschen weg... ?

Was man hier im Forum findet muss doch auch ohne Printer.Canvas für den Detailbereich zu machen sein, oder ?

Vielleicht sollte ich dem noch hinzufügen das ich keine Datasource verwende...
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: StringGrid im QuickReport

  Alt 11. Jan 2004, 20:28
Hallo Moin34,

kommen die Daten gar nicht aus einer Datenbank?

In diesem Fall musst du die OnNeedData Methode schreiben, die immer aufgerufen wird, wenn die nächste Detailzeile gedruckt werden soll.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#9

Re: StringGrid im QuickReport

  Alt 12. Jan 2004, 00:40
hallo moin!

versuch es mal so....

Code:
unit Mainprog;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    EndeBtn: TButton;
    BitBtn1: TBitBtn;
    Grid1: TStringGrid;
    procedure EndeBtnClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses PrintDlgFrm;

{$R *.DFM}

procedure TForm1.EndeBtnClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  aWindowState: TWindowState;
begin
  aWindowState:= WindowState;
  try
    PrintFrm:= TPrintFrm.Create(self);
    PrintFrm.Init(Grid1);
    PrintFrm.QuickRep1.Preview;
  finally
    if PrintFrm <> nil then
      PrintFrm.Free;
    WindowState:= aWindowState;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
var
  aRow: ShortInt;
begin
  with Grid1 do begin
    Colwidths[0]:= 20;
    Colwidths[1]:= 80;
    Colwidths[2]:= 80;
    Colwidths[3]:= 80;
    Colwidths[4]:= 80;
    Cells[0,0]:= 'lfdNr';
    Cells[1,0]:= 'Art_Sorte';
    Cells[2,0]:= 'Art_Gruppe';
    Cells[3,0]:= 'Inhalt';
    Cells[4,0]:= 'Preis';
    for aRow:= 1 to RowCount-1 do begin
      Cells[0,aRow]:= IntToStr(aRow);
      Cells[1,aRow]:= 'Artikel ' + IntToStr(10000 + aRow);
      if (aRow mod 2) = 0 then
        Cells[2,aRow]:= 'Wein'
      else
        Cells[2,aRow]:= 'Sekt';
      Cells[3,aRow]:= '0,75 l';
      Cells[4,aRow]:= FloatToStr(4.20 + aRow);
    end;
  end;
end;

end.


------------------------------------------------------------------------------------------------

unit PrintDlgFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, QuickRpt, Qrctrls, Grids;

type
  TPrintFrm = class(TForm)
    QuickRep1: TQuickRep;
    PageFooterBand1: TQRBand;
    DetailBand1: TQRBand;
    PageHeaderBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRSysData1: TQRSysData;
    QRLabel5: TQRLabel;
    ColumnHeaderBand1: TQRBand;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRLabel8: TQRLabel;
    QRLabel9: TQRLabel;
    QRLabel10: TQRLabel;
    procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
     ZeileNr: integer;
     maxZeilen: integer;
     maxSeiten: integer;
     aGrid: TStringGrid;
  public
    { Public-Deklarationen }
    procedure Init(DGrid: TStringGrid);
  end;

var
  PrintFrm: TPrintFrm;

implementation

{$R *.DFM}

procedure TPrintFrm.Init(DGrid: TStringGrid);
begin
  aGrid:= TStringGrid.Create(self);
  aGrid:= dGrid;
  maxZeilen:= aGrid.RowCount;
  QuickRep1.Prepare;
  maxSeiten:= QuickRep1.PageNumber;
  qrLabel10.Caption:= ' von ' + IntToStr(maxSeiten) + ' Seiten'
end;


procedure TPrintFrm.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  ZeileNr:= 0;
end;


procedure TPrintFrm.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  MoreData:= (ZeileNr < maxZeilen);
  if MoreData then begin
    QRLabel2.Caption:= aGrid.Cells[0,ZeileNr+1];
    QRLabel3.Caption:= aGrid.Cells[1,ZeileNr+1];
    QRLabel4.Caption:= aGrid.Cells[2,ZeileNr+1];
    QRLabel5.Caption:= aGrid.Cells[3,ZeileNr+1]
  end;
  inc(ZeileNr)
end;

procedure TPrintFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if aGrid <> nil then
    aGrid.Free;
end;

end.
damit sollte dein stringgrid problemlos ausgedruckt werden

mfg, stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz