IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rave Discussion :

Modifier la position d'un composant DataText dans le programme DELPHI


Sujet :

Rave

  1. #1
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut Modifier la position d'un composant DataText dans le programme DELPHI
    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)

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    sans trop m'avancer je dirais OUI et toujours de la même manière : les FindRaveComponent

    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;
    plus difficile est retrouver l'unité contenant le compo un rvcsxxxx pour les déclarations voir pj
    et l'événement adéquat
    Images attachées Images attachées
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Position := Child[x].Top;
    fonctionne, autant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Child[x].Top := Position;
    m'envoie gentiment sur les roses. Mais existe-t-il une fonction qui pourrait faire cette affectation ?

    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)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    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

    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 ?
    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 enfant
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    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)

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    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)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Comment intégrer une image dans un programme Delphi
    Par DanCode dans le forum Débuter
    Réponses: 8
    Dernier message: 03/03/2010, 14h06
  2. Intégrer Excel dans un programme Delphi
    Par codepvc dans le forum Débuter
    Réponses: 1
    Dernier message: 03/12/2008, 22h43
  3. Intégrer du java dans mon programme Delphi
    Par Bruno13 dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2008, 15h22
  4. Composant Swing dans un programme openGL
    Par Talstus dans le forum 3D
    Réponses: 5
    Dernier message: 05/07/2007, 13h07
  5. Dll en c++ dans un programme delphi
    Par wikers dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo