Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi QR ist einfach leer (https://www.delphipraxis.net/3613-qr-ist-einfach-leer.html)

Mada 21. Mär 2003 14:00


QR ist einfach leer
 
HI,

da das mit miener Virtuellen Tabelle nicht geklappt hat :( , hab ich es nun doch mit dem OnNeedData versucht. Doch langsam bin ich am verzweifeln. :cry: :x Nun wird mein Bericht zwar aufgerufen aber er enthält einfach nichts.

Hier ist der betreffende Quellcode

Code:
procedure FrmForm1.Arrayuebergabe(TempArray: TDoubleArray);
var //TempArrayDruck : TDoubleArray;

MoreData : Boolean;
begin

  SetLength(TempArrayDruck,300,2);
  TempArrayDruck := TempArray;
  MoreData := True;
   begin
     //FrmForm1.QuickRep1NeedData(MoreData);

     FrmForm1.QuickRep1.OnNeedData(Self,MoreData);
   end;
end;


procedure FrmForm1.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  while TempArrayDruck[CurrentIndex,0] <> 0 do
  begin
    MoreData := True;

    if MoreData then
    begin

      QRLabel_Land.Caption := FloatToStr(TempArrayDruck[CurrentIndex,0]);
      QRLabel_KM.Caption := FloatToStr(TempArrayDruck[CurrentIndex,1]);

      MoreData:=False;
      Inc(CurrentIndex);
    end;
  end;
  //QuickRep1 ist leer!!!
  QuickRep1.Preview;
end;

procedure FrmForm1.QuickRep1BeforePrint(
  Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
  CurrentIndex := 0;
end;
Ein paar Sätze dazu. TempArray wird von einer anderen Unit übergeben ud ist im Deugger auch richtig befüllt.
Mit der schleife sollte er ausgelesen und dargestellt werden.

Was mache ich falsch? Hat mir jemand eine Tipp?

Dankeschön!

Grüßle
Mada
:cat:

Garby 21. Mär 2003 15:46

Hallo Mada,

OnNeedData ist ein Ereignis vom Quickreport, d.h. es wird automatisch aufgerufen.
Ich würde es so machen:
Delphi-Quellcode:
type
  FrmForm1 = class(TForm)
    FrmForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
  private
    { Private-Deklarationen }
    CurrentIndex: Integer;
    aTempArray: TDoubleArray;
  public
    { Public-Deklarationen }
    Arrayuebergabe(TempArray: TDoubleArray);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure FrmForm1.Arrayuebergabe(TempArray: TDoubleArray);
begin
  CurrentIndex := 0;
  aTempArray := TempArray;
  QuickRep1.Preview;
end;

procedure FrmForm1.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  if High(aTempArray) >= CurrentIndex do begin
    MoreData := True;

    QRLabel_Land.Caption := FloatToStr(TempArrayDruck[CurrentIndex,0]);
    QRLabel_KM.Caption := FloatToStr(TempArrayDruck[CurrentIndex,1]);

    Inc(CurrentIndex);
  end;
end;

end.
Ich habs zwar nicht ausprobiert, sollte aber funktionieren :D

Mada 24. Mär 2003 10:07

HI,

danke das war meine Rettung.
Ich habe mal wieder viel zu kompliziert gedacht.

Muss nur noch nen Filter drumrumbauen und dann FERTIG!!

Vielen vielen Dank! :hello:

Gruß,
Mada
:cat:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz