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

 Delphi Discussion :

Aligner du texte avant impression sur TRicheEdit


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut Aligner du texte avant impression sur TRicheEdit


    Mon but est d'imprimer le contenu d'un TRichEdit. Tout se passait bien jusqu'au moment ou j'ai dus commencé à aligner du texte!

    J'ai donc commencé par utiliser Quick report se trouvant dans la FAQ
    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
    Procedure EcrireMot(Mot:string; LeftDebutMM:extended; 
    EcartementLettreMM:extended; TopMotMM:extended;
    Parent:TWinControl); 
    var 
    Lettre : Array of TQRLabel; 
    i : integer; 
    begin 
      SetLength(Lettre,Length(Mot)+1); 
      for i:=1 to Length(Mot) do begin 
        Lettre[i] := TQRLabel.Create(nil); 
        Lettre[i].Caption:=copy(Mot,i,1); 
        Lettre[i].Parent:=Parent; 
        Lettre[i].Size.Left:= LeftDebutMM+(EcartementLettreMM*i); 
        Lettre[i].Size.Top:= TopMotMM; 
      end; 
    end;
    qui ne fonctionne pas si on n'ajoute pas l'unité 'QRCtrls' mais bon....
    Ma ligne ressemblait donc à klk chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EcrireMot('ESSAI',5,5,20,richedit1)
    et le résultat n'est pas vraiment ce que j'espérais: 'essaie' s'affiche mais en drole de format et de toute façon pas moyen de l'imprimer... Je ne sais pour quelle raison, ça bloque.

    Peut être que le quick report que j'utilise ne fonctionne pas pour les TRichEdit !!!
    Y aurait il un autre tutau klk part qui permet d'aligner le texte ?

    Thxs in advance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut Largeur d'un richedit en pixel ?
    Quelle galère pour aligner du text!!!
    J'ai commencé par créer une fonction qui ajoute partout le même nombre de blanc:
    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
    function calcul_blanc(Bquant:integer; Bnom:string;
    Bprix:integer): string;
    var i:integer; //emplacement de la colonne Bprix
        k: string;  //nombre de blanc à ajouter
    begin
    i:= 20 +length(inttostr(Bprix)) - (length(inttostr(Bquant))
    + Length(Bnom)); //calcul du lieu ou ajouter colonne Bprix
    k:= '';                  //vider la chaine de blanc
    while i> 0 do        //on sait jamais si i<0
      begin
      k:= k + ' '; //ajout du nombre i de blanc
      i:= i-1;      
      end;
    result:= inttostr(Bquant) +'x ' + Bnom + k + inttostr(Bprix);
    end;
    et ça n'a pas marché...
    Tout ce calcul en pixel et non pas en caractère......
    J'ai l'impression que je devoir passer par toutes ces histoires de 'canva' auxquelles je comprend que dalle!!!
    Existe t il un moyen de connaitre la largeur d'un richedit en pixel ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut écriture de textwith
    J'ai presque réussi avec le canvas
    Par contre, l'alignement n'est pas top lorsqu'il y a des valeurs de trois caractères et de quatre caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printer.Canvas.TextOut(50 + textwidth('blabla'),0,'chaine'))
    Delphi me renvoi que 'textwidth' n'est pas une variable déclaré!!!

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    salut ,

    En fait tu veux inclure une marge a gauche de ton richedit quand tu imprimes ?

    c'est cela ?

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 370
    Points : 3 144
    Points
    3 144
    Par défaut
    Bonjour,

    et si tu utilises une police non proportionnelle et que tu calcules le nombre d'espaces en fonction du nombre de caractères des chaines à écrire, cela ne va pas ?

    A+

    Charly

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 370
    Points : 3 144
    Points
    3 144
    Par défaut
    J'y pense : normalement, le RichEdit accepte les caractères tabulation Chr(9)

    Cela devrait marcher si les items des colonnes ne sont pas de longueurs trop différentes (sinon il faut parfois 2 Tab pour aligner)

    As tu essayé ?

    @+

    Charly

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    J'y pense : normalement, le RichEdit accepte les caractères tabulation Chr(9)

    Cela devrait marcher si les items des colonnes ne sont pas de longueurs trop différentes (sinon il faut parfois 2 Tab pour aligner)

    As tu essayé ?

    @+

    Charly
    Oui J'ai essayé cette méthode ainsi qu'une cinquantaine d'autre d'ailleurs!!!!
    Mais ça ne fonctionne que si le texte à droite a la même valeur sur toutes les lignes.
    Exemple ou ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Ciel!!! Mais quel drôle de temps aujourd''hui' #9#9 'il neige'
    'P''tain! fé degeu' #9#9 'y neige'

    Sinon, j'ai fini par trouvé une solution alternative!
    Prendre un point de départ ou afficher le texte et diminuer la longeure du texte à ajouter.
    Donc, si on choisi d'ajouter le texte de notre 'blabla' au pixel numéro 500, ça donnera un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printer.Canvas.TextOut(
    (500 - canvas.textwidth(blabla))
    ,j,'blabla');
    Ou 'j' représente la ligne sur laquelle on est en pixels bien sur


    J'imagine qu'il doit exister plus simple, je suis même tombé sur des sites qui proposaient des méthodes toutes faites (12dolards) pour diverses impressions.
    Bin... en le dessinant soit même en apprend plus en perdant du temps et épargnant de l'argent...

    Bon code à tous et merci quand même pour vos diverses réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'alignement de texte entre cellule sur 1 ligne
    Par rouletabille63 dans le forum BIRT
    Réponses: 2
    Dernier message: 08/08/2012, 22h14
  2. injection texte avant impression
    Par astyan dans le forum Administration système
    Réponses: 2
    Dernier message: 03/11/2011, 11h07
  3. Aperçu Avant impression sur une JTable
    Par Dine_Med dans le forum Composants
    Réponses: 2
    Dernier message: 13/02/2011, 00h00
  4. [XL-2007] créer un bouton aperçu avant impression sur Excel
    Par hollywoodsky dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2009, 17h44
  5. Mise en page avant impression sur toutes les feuilles du classeur
    Par fribelle dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/11/2008, 09h48

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