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 Statischer Text in QRExpr (https://www.delphipraxis.net/82450-statischer-text-qrexpr.html)

davar 13. Dez 2006 14:38


Statischer Text in QRExpr
 
Hallo Leute,

in einem Quickreport habe ich eine QRExpr-Komponente. Diese soll mir den Inhalt des Feldes "query6_4.ID" anzeigen, davor aber den Text "Nr. " setzen.

Gebe ich im OI unter Expression "query6_4.ID" ein, wird brav der Inhalt angezeigt.

Wie aber bekomme ich hin, dass auch "Nr. " davor gesetzt wird? Habe schon zig verschiedene Möglichkeiten ausprobiert aber es geht irgendwie nicht..


mfg

davar

marabu 13. Dez 2006 15:04

Re: Statischer Text in QRExpr
 
Hallo davar,

probiere es so:

Delphi-Quellcode:
QRExpr.Expression := '''Nr. '' + Str(query6_4.ID)';
Freundliche Grüße

xZise 13. Dez 2006 15:16

Re: Statischer Text in QRExpr
 
Ich kenn zwar die Komponente nicht, aber wenn du einen String suchst:
Delphi-Quellcode:
myString := 'Nr' + IntToStr(myInt);
Bzw auch:
Delphi-Quellcode:
FloatToStr(<Float>) // Fließkommazahlen
BoolToStr(<Boolean>) // Booleans
...
[edit]
Zitat:

Zitat von marabu
Hallo davar,

probiere es so:

Delphi-Quellcode:
QRExpr.Expression := '''Nr. '' + Str(query6_4.ID)';
Freundliche Grüße

[/edit]
Ähm, du weißt schon, dass folgendes immer herauskommen wird:
"'Nr.' + Str(query6_4.ID)"

davar 13. Dez 2006 15:32

Re: Statischer Text in QRExpr
 
Zitat:

Zitat von marabu
Hallo davar,

probiere es so:

Delphi-Quellcode:
QRExpr.Expression := '''Nr. '' + Str(query6_4.ID)';
Freundliche Grüße

Soweit in Ordnung.

Jetzt geh ich noch einen Schritt weiter und möchte, dass das Datum auch angezeigt wird. Aber mit
Delphi-Quellcode:
QRExpr2.Expression := '''Nr. '' + Str(query6_4.ID) + '' vom '' + Str(query6_4.datum)';
bekomme ich wieder nur das alte Problem.

marabu 13. Dez 2006 15:54

Re: Statischer Text in QRExpr
 
Lass die Funktion Str() einfach ganz weg - die Konvertierung in String erfolgt in der Regel automatisch.

Freundliche Grüße

raiguen 13. Dez 2006 16:04

Re: Statischer Text in QRExpr
 
Moin :-)

Laut Delphi-Hilfe :
Zitat:

Mit der Komponente TQRExpr berechnen Sie während der Reporterzeugung einen Ausdruck.
d.h. es sind nur 'berechenbare' Funktionen bzw Anzeigen von Tabellenfeldern möglich.
Eine 'Verknüpfung' mit Zusatzangaben geht nur auf dem 'Um'weg über das Ereignis QRExprPrint():
Delphi-Quellcode:
procedure QRExpr1Print(sender: TObject;
  var Value: String);
begin
  Value := 'Nr.: ' + Value;
end;
In Value steht in diesem Beispiel halt der Inhalt von query6_4.ID...

//EDIT: Wobei die Frage erlaubt sei: Wenn es NUR um die Anzeige eines Tabellenfeldes geht, warum dann den Weg über TQRExpr?? Ein TQRDBText tut es in diesem Falle auch und auch hier lässt sich der reine Feldinhalt mithilfe des OnPrint() 'ausschmücken' :wink:

davar 14. Dez 2006 11:44

Re: Statischer Text in QRExpr
 
Zitat:

Zitat von raiguen
Moin :-)

Laut Delphi-Hilfe :
Zitat:

Mit der Komponente TQRExpr berechnen Sie während der Reporterzeugung einen Ausdruck.
d.h. es sind nur 'berechenbare' Funktionen bzw Anzeigen von Tabellenfeldern möglich.
Eine 'Verknüpfung' mit Zusatzangaben geht nur auf dem 'Um'weg über das Ereignis QRExprPrint():
Delphi-Quellcode:
procedure QRExpr1Print(sender: TObject;
  var Value: String);
begin
  Value := 'Nr.: ' + Value;
end;
In Value steht in diesem Beispiel halt der Inhalt von query6_4.ID...

//EDIT: Wobei die Frage erlaubt sei: Wenn es NUR um die Anzeige eines Tabellenfeldes geht, warum dann den Weg über TQRExpr?? Ein TQRDBText tut es in diesem Falle auch und auch hier lässt sich der reine Feldinhalt mithilfe des OnPrint() 'ausschmücken' :wink:


Die oben angegebene Lösung geht, sofern ich dafür nur query6_4.ID benutze. Wenn ich jedoch das Datum dazunehme, bekomme ich das Problem.

Vielleicht erläutere ich die Ausgangsstellung noch einmal:

es soll eine Sammelrechnung gedruckt werden. Die einzelnen Positionen, die in QRDetail angezeigt werden, sollen in Gruppen unterteilt werden. Zum Schluss soll es wie folgt aussehen:


---------

Lieferschein Nr. XXX vom XX.XX.XXXX

Pos 1
Pos 2
Pos 3
....

Lieferschein Nr. XXX vom XX.XX.XXXX
Pos 1
Pos 2

Lieferschein Nr. XXX vom XX.XX.XXXX
...

-----------


Die Positionen befinden sich im Detailband. Damit auch dabeisteht, um welchen Lieferschein es sich handelt, habe ich QRGroup eingesetzt und dort QRExpr draufgesetzt.

Wenn ich jetzt nur die Lieferscheinnr. anzeigen lasse, geht es mit dem oben genannten Code. Möchte ich jedoch, dass das Datum auch angezeigt wird, bekomme ich statt dem Datum den Code, den ich reingeschrieben habe ('vom + Str(query6_4.datum)')

EDIT:
wie ich sehe, habe ich bei QRGroup unter Expression auch query6_4.ID angegeben. Was sollte denn hier richtigerweise hin?

marabu 14. Dez 2006 12:00

Re: Statischer Text in QRExpr
 
Hi davar,

Zitat:

Zitat von marabu
Lass die Funktion Str() einfach ganz weg - die Konvertierung in String erfolgt in der Regel automatisch.

so geht es bei mir:

Delphi-Quellcode:
QRExpr.Expression := '''Lieferschein-Nr '' + query6_4.ID + '' vom '' + query6_4.datum';
Nachdenkliche Grüße

davar 14. Dez 2006 12:41

Re: Statischer Text in QRExpr
 
Zitat:

Zitat von marabu
Hi davar,

Zitat:

Zitat von marabu
Lass die Funktion Str() einfach ganz weg - die Konvertierung in String erfolgt in der Regel automatisch.

so geht es bei mir:

Delphi-Quellcode:
QRExpr.Expression := '''Lieferschein-Nr '' + query6_4.ID + '' vom '' + query6_4.datum';
Nachdenkliche Grüße

Das gibts doch nicht :wall:

ich bekomme exakt den Text

Zitat:

'Lieferschein-Nr ' + query6_4.ID + ' vom ' + query6_4.datum
Ob irgendwas mit TGroup oder TExpr nicht in Ordnung ist? Glaub ich auch kaum, habe nämlich beides entfernt und neu draufgesetzt und es geht immer noch nicht.. :wall: :wall:

xZise 14. Dez 2006 13:21

Re: Statischer Text in QRExpr
 
Ich würde ja mal meinen Beitrag angucken!
Du hast die Befehle als Strings markiert!

Durch ein
Zitat:

''
Erzeugst du ein
Zitat:

'
!

Beispiel:
Delphi-Quellcode:
Showmessage( 'Hallo ''' + Name + '''' )
Zitat:

Hallo '<Name>'

marabu 14. Dez 2006 13:55

Re: Statischer Text in QRExpr
 
Hallo Fabian,

ist schon klar, dass man die Zuweisung aus meiner Code-Zeile so nicht im OI machen kann - oder?

Freundliche Grüße

raiguen 14. Dez 2006 15:22

Re: Statischer Text in QRExpr
 
Zitat:

Zitat von davar
wie ich sehe, habe ich bei QRGroup unter Expression auch query6_4.ID angegeben. Was sollte denn hier richtigerweise hin?

Die Expression im GroupHeader ist so richtig, weil hierdurch der Gruppenwechsel durchgeführt wird; hier darf im Expression-Ausdruck auch nichts anderes hin...

So, nun zu deinem eigentlichen Problem:
entweder du schreibst diesen Code vom marabu
Delphi-Quellcode:
QRExpr.Expression := '''Lieferschein-Nr '' + query6_4.ID + '' vom '' + query6_4.datum';
in das QuickRep1BeforePrint()-Ereignis

oder im ObjektInspektor von QRExpr.Expression auf diese Weise:
Delphi-Quellcode:
 'Lieferschein-Nr ' + query6_4.ID + ' vom ' + query6_4.datum
Den Ausdruck gibst du am besten gleich in den 'Ausdrucks-Experten' und klickst auf 'Überprüfen'-> somit siehst du dann gleich, ob der Ausdruck auch richtig ist...

xZise 14. Dez 2006 17:46

Re: Statischer Text in QRExpr
 
Also ich verstehe anscheind das Problem nicht.

davar 18. Dez 2006 10:08

Re: Statischer Text in QRExpr
 
Also ich gebe es auf.

Habe die verschiedensten Varianten ausprobiert aber es geht nicht. Jetzt habe ich zwei QRExpr genommen und es geht. Das einzige, was mich noch wundert, ist, dass die Komponente anscheinend breiter ist als sie aussieht. In das BeforePrint-Ereignis habe ich geschrieben:

Delphi-Quellcode:
QRExpr2.left:= QRExpr1.width + 2;
aber die zweite Komponente taucht zu weit rechts auf. Und

Delphi-Quellcode:
showmessage(inttostr(QRExpr1.width));
zeigt mir, dass QRExpr1.width tatsächlich viel höher ist als ich auf dem Quickreport sehen kann.....

Ich brauch wieder Wochenende.. :?

raiguen 18. Dez 2006 12:37

Re: Statischer Text in QRExpr
 
Zitat:

Zitat von davar
Also ich gebe es auf.

Habe die verschiedensten Varianten ausprobiert aber es geht nicht.

Hm, mir scheint also diese Variante bzw korrekter Code
Code:
QRExpr.Expression := '''Lieferschein-Nr '' + query6_4.ID + '' vom '' + query6_4.datum';
wird nicht in der QR-Version von Delphi 3 untersützt... :gruebel:

Zitat:

Zitat von davar
Jetzt habe ich zwei QRExpr genommen und es geht. Das einzige, was mich noch wundert, ist, dass die Komponente anscheinend breiter ist als sie aussieht. ...

Habe die Erfahrung gemacht, dass QR es nicht wirklich gerne hat, wenn die Höhe-/Breite-/links-/rechts-Eigenschaft(en) kurz vor dem Drucken geändert werden...

Anstelle von 2 QRExpr-Komponenten verwende doch die 'einfache' Lösung mittels QRLabel:
Delphi-Quellcode:
QRLabelxyz := 'Lieferschein-Nr ' + query6_4.FieldByName('ID').Text + ' vom ' + DateToStr(query6_4.FieldByName('datum').AsDateTime);


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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 by Thomas Breitkreuz