BoPagjour à tous !
Existe-t-il une possibilité de modifier la position (par exemple verticale) d'un DataText dans le programme (car la propriété PageBottom est déclarée en lecture seule) ?
Merci d'avance
BoPagjour à tous !
Existe-t-il une possibilité de modifier la position (par exemple verticale) d'un DataText dans le programme (car la propriété PageBottom est déclarée en lecture seule) ?
Merci d'avance
Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire viennent aisément (Boileau)
Bonjour,
sans trop m'avancer je dirais OUI et toujours de la même manière : les FindRaveComponent
plus difficile est retrouver l'unité contenant le compo un rvcsxxxx pour les déclarations voir pj
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var MyPage : TRavePage; Myxxcompo : TRavexxx; begin MyPage := RvProject1.ProjMan.FindRaveComponent('MonEtat.Page1',nil) AS TRavePage; myxxcompo := RvProject1.ProjMan.FindRaveComponent('monnomdecompo',MyPage) AS TRavexxx;
et l'événement adéquat![]()
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
Je crains de ne pas avoir été assez précis dans ma demande. Je sais où est le DataText : dans la Region1 de mon état. Il doit apparaître lorsque la hauteur de zone imprimable restante est inférieure à un en-tête qui intervient sur une rupture. Je connais la hauteur de cet en-tête. Je connais le hauteur des lignes et je connais la position du bas de la dernière ligne éditée. En ce moment, je sais que mon Datatext doit être imprimé en position 7,53 et cela fonctionne parce que j'ai déclaré ce Datatext à cet endroit et je sais le rendre visible lorsqu'il le faut. Et je le sais parce que je l'ai obtenu au bout d'essais d'impression. Mais si, pour une raison ou une autre la hauteur des lignes ou le taille des caractères changent, cette valeur ne sera plus bonne. En revanche, Rave me donnera toujours la position du bas de la dernière ligne éditée et donc je peux calculer la position dans la Region1 de mon Datatext. Calculer, mais pas affecter. Autant
fonctionne, autant
Code : Sélectionner tout - Visualiser dans une fenêtre à part Position := Child[x].Top;
m'envoie gentiment sur les roses. Mais existe-t-il une fonction qui pourrait faire cette affectation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Child[x].Top := Position;
Ou alors est-il possible de rendre un bande active sous certaines conditions, bande qui ne contiendrait que ce Datatext, active en fait en fin de page, mais pas en fin d'état ?
(la pièce jointe me donne une page blanche)
Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire viennent aisément (Boileau)
Re,
du coup je ne comprends pas
la page blanche de la pièce jointe, j'ai testé cela me renvoi bien le pdf complet (au pire il faut télécharger avant d'ouvrir le pdf)
et ce que tu exposes c'est pratiquement la même chose que ta discussion précédente
bien sûr , déjà il y a les bandes de bas de page qui sont là pour ça (pour peu d'indiquer de ne pas l'imprimer en fin d'état, sissi c'est une option) , sinon on peut jouer sur une bande enfantOu alors est-il possible de rendre un bande active sous certaines conditions, bande qui ne contiendrait que ce Datatext, active en fait en fin de page, mais pas en fin d'état ?
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
J'ai en effet réussi à voir le pdf, mais c'est un état ultra simple.
Décidément, Rave est plein de mystères.
D'abord je n'ai pas trouvé de bande s'imprimant en fin de page. L'option FinishNewpage ne donne aucun résultat. Et le mode de fonctionnement des ruptures et pour le moins bizarre.
Ma table est triée sur CLIENT, CHANTIER, DOSSIER.
L'impression doit débuter une nouvelle page pour chaque nouveau CLIENT avec impression des informations sur le client.
Pour chaque nouveau chantier, il doit y avoir, après les informations client, une ligne décrivant le chantier.
Si pour un même client il y a plusieurs CHANTIERS, il doit y avoir, à chaque changement de chantier une nouvelle page avec les infos clients et la ligne pour le chantier
En fin de Client, il faut les totaux de la facture, mais si le client a plusieurs chantiers, les totaux doivent figurer en fin de chantier mais pas deux fois en fin de client.
Simple non ?
J'ai essayé des tas de combinaisons :
une bande Entete groupée par client, suivie d'une bande Chantier, groupée bien sur le chantier : la rupture sur le chantier ne se fait pas
une bande Entete groupée par client incluant les information du chantier : la rupture sur le chantier ne se fait que sur le premier chantier si le client change (en fait sur le client) et la ligne de total de fin de chantier est déportée sur la page suivante avec disparition totale du nouveau chantier
et d'autres encore. Impossible d'arriver à ce que je veux
J'ai aussi essayé de modifier de plusieurs manières les style de bande. Pas mieux
J'ai essayé dans l'événement OnNext de forcer un changement de client en cas de changement de chantier : catastrophique !
Je ne vois plus comment m'en sortir
Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire viennent aisément (Boileau)
Peut-être t'y prends tu mal !
plutôt que un seul rvData il en faut peut être plusieurs : Chantier, Bon de livraison , voire Client, Chantier, Bon de Livraison ? et utiliser un type d'état maitre/détail
Il y a aussi les types bandes sur lesquelles on peut jouer sans parler des zones miroir !
Le fichier ravedemo.rav est plein d'exemples différents (regarde en particulier MultiPageReport)
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
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