Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Formular drucken - nur Edit- und Labelwerte / Erstellen QReport? (https://www.delphipraxis.net/183610-formular-drucken-nur-edit-und-labelwerte-erstellen-qreport.html)

Delphineuling2015 22. Jan 2015 14:13

Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
Hallo zusammen,

bevor ich zu meinem eigentlichen "Problem" komme, möchte ich als Neuling ganz herzlich "Hallo" sagen und etwas über mich erzählen:

Ich habe vor etwa 17 Jahren hobbymäßig die ersten Gehversuche mit Delphi unternommen, jedoch immer nur kleine Anwendungen (Musikarchiv etc...)geschrieben.

Meine letzte Delphiversion 4 Standard, habe ich stets wieder auf neue Rechner installiert, weil die Leistungen von Version 4 für mich bisher voll ausreichend waren.
Mein Sohn kam nun zu mir und fragte mich, ob und wie man ein eigenes lauffähiges Programm zum Umrechnen von Maßeinheiten erstellen kann.
Da fiel mir "mein Delphi 4" wieder ein und ich begann ein Formular zur Umrechnung von Gramm in Grain zu erstellen.
Dazu habe ich im Formular ein Editfeld platzert in welches der Wert in Gramm eingegeben wird. Beim Drücken eines Buttons erfolgt die Umrechung, der Grainwert wird als Label.Caption im Formular angezeigt.

Soweit, sogut.

Nun möchte mein Sohn ein "Blatt" ausdrucken, in welchem nur die Werte stehen, da beim Ausdrucken des Formulars auch die Buttons & Co. mit ausgedruckt werden. Es kam mir die Idee mit QReport, jedoch scheiterte meine Idee daran, dass ich nicht weiß, ob man auch einen Report ohne eine Tabelle im Hintergrund erstellen kann.

Also kam die Idee, ein neues Formular ohne Buttons zu erstellen, in welches dann die eingegebenen bzw. errechneten Werte aus dem 1. Formular übernommen werden. Auch das bekomme ich nicht hin :pale:

Daher nun meine Frage an das Forum:

1. (Wie) kann ich Werte/Eingaben von Edit- oder Labelfeldern anderer Formulare in einem Formular einbinden?
2. Kann ich auch ohne eine Datenbasis in Form einer Tabelle oder SQL einen QReport mit Werten/Eingaben erstellen?

Hier noch der Delphi-Quellcode des "Buttons"

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c : Real;
begin
  a := StrToFloat(Edit1.Text);
  b := 15.43;
  c := a * b;
  Label3.Caption := FloatToStr(round(c * 10) / 10) +' Grain.';
  Label2.Visible := True
end;
Ganz herzlichen Dank vorab!!!

Frank

DeddyH 22. Jan 2015 14:23

AW: Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
Hallo und Willkommen in der DP :dp:,

ich persönlich empfinde QuickReport für diese Aufgabe etwas als Overkill, man kann doch auch mit TPrinter relativ bequem drucken. Wenn es doch QuickReport sein soll/muss: ich habe den schon jahrelang nicht mehr benutzt, aber falls man da wie z.B. bei FastReport benutzerdefinierte Datasets erstellen kann, wäre das auch eine Option. Schlimmstenfalls nimmst Du halt ein ClientDataset als Quelle und befüllst das "zu Fuß" (Felder erstellen und mit den Daten füttern).

bcvs 22. Jan 2015 16:36

AW: Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
Ja Quickreport kann das.

Du musst nur die Eigenschaft PrintIfEmpty des QuickReport auf true setzen. Dann brauchst du ein QRBand mit ein paar QRLabels.

Zur Übergabe der Werte könnte man in dem QuickReport-Form entsprechende Properties einführen, deren Setter die Captions der QRLabels befüllt.

Delphineuling2015 22. Jan 2015 17:49

AW: Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
Zitat:

Zitat von bcvs (Beitrag 1287475)
Ja Quickreport kann das.

Du musst nur die Eigenschaft PrintIfEmpty des QuickReport auf true setzen. Dann brauchst du ein QRBand mit ein paar QRLabels.

Zur Übergabe der Werte könnte man in dem QuickReport-Form entsprechende Properties einführen, deren Setter die Captions der QRLabels befüllt.

Vielen Dank für die Antworten! Ich habe doch mehr Details in den letzten Jahren vergessen, als ich dachte...

Ich habe jetzt ein QuickReport erstellt, die Eigenschaft PrintIfEmpty auf true gesetzt, einen QRBand und vier QR Labels im Report platziert.
Was ich nicht hinbekomme, ist das "Einführen der Properties, deren Setter die Captions der QRLabels befüllen sollen".
Hier wäre ich für eine Anleitung sehr dankbar.

Hier der Quellcode des QuickReports:

Delphi-Quellcode:
unit Report1;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;

type
  TQuickReport1 = class(TQuickRep)
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
  private

  public

  end;

var
  QuickReport1: TQuickReport1;

implementation

{$R *.DFM}

end.
Vielen Dank schon mal!:thumb:

bcvs 23. Jan 2015 09:08

AW: Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
Zuerst solltest du den Labels aussagekräftige Namen geben.

Das mit den Properties geht am Beispiel eines Labes so:

Delphi-Quellcode:
unit Report1;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;

type
  TQuickReport1 = class(TQuickRep)
    QRBand1: TQRBand;
    QRLabelGrain: TQRLabel;
  private
    fGrain:string;
    procedure SetGrain(Value:string);
  public
    property Grain:String read fGrain write SetGrain;

  end;

var
  QuickReport1: TQuickReport1;

implementation

{$R *.DFM}

procedure TQuickReport1.SetGrain(Value:string);
begin
  fGrain:=Value;
  QRLabelGrain.Caption:=fGrain;
end;

end.
Zugriff von außen:
Delphi-Quellcode:
QuickReport1.Grain := irgendwas;

Delphineuling2015 23. Jan 2015 11:06

AW: Formular drucken - nur Edit- und Labelwerte / Erstellen QReport?
 
super, vielen Dank :thumb: !!!!!!
Wenn man den Code liest, leuchtet es ein. Aber es wäre mir echt nicht (mehr) eingefallen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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