Bonjour à tous,
je cherche à trouver un moyen pour joindre deux états (contenant chaqu'un une seule page) dans une seule page.
Bonjour à tous,
je cherche à trouver un moyen pour joindre deux états (contenant chaqu'un une seule page) dans une seule page.
Bonjour,
par jointure (terme SQL) je suppose qu'il s'agit en fait d'imprimer les deux états dans un seul et même travail d'impression, on parle alors d''état multiple
Si les deux états sont de même orientation cela ne pose aucune difficulté , il faut poser un rvSystem et dans l'évènement onPrint de ce dernier coder de la manière suivante :
pour info, ce code, que j'ai du déjà indiqué dans d'autres posts est donné parun tip nevrona ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with Sender as TBaseReport do begin RaveProject.ExecuteReport('Report1'); NewPage; RaveProject.ExecuteReport('Report2'); end; { with }
s'il y a deux orientations différentes voir aussi cette astuce
enfin je rappelle qu'il est aussi possible de faire un seul état avec plusieurs format de page différents en utilisant les propriétés gotopage et gotoMode de la Page
(voir l'état MultipageReport dans RaveDemo.rav généralement fournis dans le répertoire RaveReports\demos\visual de l'installation de Delphi)
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour sergio,
merci pour ta réponse mais c'est pas ça que je veut faire. En fait, je veut que les canvas des 2 reports se joigne en une seule page![]()
Bonjour,
Alors là, je comprends pas !
Soit tu fais un autre état avec 2 régions <= le plus simple
Soit tu fais comme indiqué en enlevant le Newpage
Soit tu essayes un truc à base de miroirs (mais là encore cela revient à faire un nouvel état)
mais je ne vois toujours pas ce que tu veux faire exactement !
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour,
ce que je veut faire c'est mettre tout ce qu'il ya dans la page du 1er état avec celui du 2eme état dans une seul page toute en gardant leur position dans initiale pour exple: 1ere page contient un tableau remplie de données en haut de la page et la deuxième page contient un commentaire en bas de page et à la jointure des 2 pages le tableau en haut le texte en bas
Bonjour,
ne serait-ce pas la maxime "faire compliqué quand on peut faire simple" que tu appliques ?
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour sergio,
non pas du tout , c'est en relation avec la discussion sur le zoom dont tu m'a solutionné le problème, on appliquant un zoom à 50% tout s'imprime sur la moitie d'une page l'autre moitie de la page reste blanche et c'est le même cas pour la 2eme page.
Bonjour,
je ne me rappelais plus de cette histoire, mais déjà as tu réussi à mettre deux pages d'un même état sur une même feuille ?c'est en relation avec la discussion sur le zoom
cela étant reste que faire un état avec les deux régions (même de taille A8 pour ensuite réduire à A4) me semble quand même plus faisable surtout si tu n'as pas réussi la première performance (c'est de ça que je demandais le retour)Envoyé par sergiomaster
si tu réduis tes états à 50% tu fournis une loupe à tes utilisateurs![]()
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour,
Pour mieux expliquer, je pose la question autrement.
comment copier une partie de la page (sous forme d'image par exple) et la coller à n'importe quelle autre page?![]()
Bonjour,
Ce qui revient malgré tout à faire 2 états
dans le principe je dirais que pour sauvegarder une page dans une image il faudrait faire quelque chose de ce genre (non testé)
Mais, il y a un mais, cela oblige à imprimer quand même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // imprimer procedure TForm1.btnClick(Sender: TObject); begin rvprojectTest.SelectReport('introductionreport',false); rvsystemTest.Execute; end; // capturer function TForm2.rvsystemtestPrintPage(Sender: TObject; var PageNum: Integer): Boolean; var Report : TBaseReport Bitmap : TBitmap; begin Report:=TBaseReport(Sender); Bitmap:=TBitmap.Create; try // Bitmap.Canvas <-Report.Canvas; reste à trouver le moyen de copier le canvas Bitmap.SaveToFile('ImagePage'+intttostr(PageNum)+'.bmp'); finally Bitmap.Free; end; end;
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour,
mon objectif c'est de pouvoir formater des pages de plusieurs maniére possibleCe qui revient malgré tout à faire 2 états
et là toute la difficulté// Bitmap.Canvas <-Report.Canvas; reste à trouver le moyen de copier le canvas![]()
Oui, enfin pas tant que ça, il y a de nombreuses manières d'y arriver i.e. Canvas.CopyRect sauf que il faut réussir du coup à dégager la taille du rectangle à copier
[Edit]
ce qui implique de transformer PageWidth et PageHeight en pixels par l'utilisation des fonctions XI2Dou XU2D et de YI2D ou YU2D (selon Report.Unit mm ou inch)
pour une page A4 portrait cela doit donner quelque chose comme 4885,6974
Cependant après y avoir passer ma matinée de Dimanche (je testais des taille de rect certainement trop faibles, c'est ce matin que j'ai pensé aux conversions) je n'ai toujours obtenu que des pages blanches et quelquefois (souvent) des boucles (état de 2 pages passant à 4958 avant interruption)
[Edit]
les pages blanches c'est une erreur que je n'arrive pas à déterminer , le RvProject.Execute se fait correctement mais le rvSystem.Execute non ! j'ai déjà eu ce souci il me semble
Bon courage, quant à moi, le sujet ne m’intéresse que très peu, je trouve que "le jeu n'en vaut pas la chandelle", j'aime faire simple. La solution passe plutôt par les miroirs
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Au temps pour moi,
il semblerai que utiliser le onPrint de rvSystem permette bien d'accéder au canvas mais un canvas vide qui écrase sans doute le report demandé
et même ainsi , je n'obtiens qu'une page blanche, du coup gros doute
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 procedure TForm1.rvsystemTestPrint(Sender: TObject); var Report : TBaseReport; W, H : Integer; begin // Calcul taille Report:=rvSystemTest.BaseReport; case Report.Units of unInch : begin w:=Report.XI2D(Report.PageWidth); h:=Report.YI2D(Report.PageHeight) end; unMM : begin w:=Report.XU2D(Report.PageWidth); h:=Report.YU2D(Report.PageHeight) end; else begin w:=Trunc(Report.PageWidth); h:=Trunc(Report.PageHeight); end; end; ShowMessage(Format('Largeur %d Hauteur %d',[w,h])); // Ecrire dans canvas with Sender as TBaseReport do begin SetFont('Arial',20); GotoXY(1,1); Print('Hello World of Rave'); end; end; // Sauvegarde du canvas Bitmap:=TBitmap.Create; try Bitmap.Width:=w; Bitmap.Height:=h; rc:=Rect(0,0,w,h); Bitmap.Canvas.CopyRect(rc,Report.Canvas,rc); bitmap.SaveTofile('test.bmp'); finally bitmap.free; end;
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Ubuntu, Androïd
Bonjour sergio,
Je te remercie beaucoup pour toute l'aide que tu m'apporte. je vai voir tous ces cas et je te tiens au courant
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager