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 :

[PrintDialog] et Zone d'impression > Sélection


Sujet :

Delphi

  1. #1
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut [PrintDialog] et Zone d'impression > Sélection
    Bonjour

    Question toute bête : comment permettre facilement l'impression, de ce qui se trouve sélectionné par exemple dans un RichEdit ?

    En fouinant bien, j'ai trouvé ça dans l'aide en ligne de Delphi 7 [Printing, exemple] :

    Cet exemple utilise une fiche contenant un bouton, un contrôle pages et une boîte de dialogue d'impression. Lorsque l'utilisateur clique sur le bouton, la boîte de dialogue d'impression est affichée. L'utilisateur peut sélectionner n'importe quel sous-ensemble de pages dans le contrôle de pages pour l'impression. Les pages sélectionnées sont alors imprimées.
    Pour exécuter cet exemple, vous devez ajouter l'unité Printers à la clause uses de votre unité.
    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
    42
    43
    44
    45
    46
    procedure TForm1.Button1Click(Sender:TObject);
    var
      I, Start, Stop: Integer;
    begin
       PrintDialog1.Options := [poPageNums, poSelection];
       PrintDialog1.FromPage := 1;
       PrintDialog1.MinPage := 1;  
       PrintDialog1.ToPage := PageControl1.PageCount;
       PrintDialog1.MaxPage := PageControl1.PageCount;
     
       if PrintDialog1.Execute then
       begin
         { détermine l'ensemble que l'utilisateur souhaite imprimer }
         with PrintDialog1 do 
         begin
           if PrintRange = prAllPages then
             begin
               Start := MinPage - 1;
               Stop := MaxPage - 1;
             end
             else if PrintRange = prSelection then
             begin
                Start := PageControl1.ActivePage.PageIndex;
                Stop := Start;
                end
               else  { PrintRange = prPageNums }
               begin
                  Start := FromPage - 1;
                  Stop := ToPage - 1;
                  end;
               end;
            { imprime les pages maintenant }
     
        with Printer do
        begin
          BeginDoc;
          for I := Start to Stop do
          begin
            PageControl1.Pages[I].PaintTo(Handle, 10, 10);
            if I <> Stop then
              NewPage;
          end;
          EndDoc;
        end;
      end;
    end;
    Bien que regardant dans tous les sens le code, une chose m'échappe complètement ; pas moyen de trouver comment affecter mon RichEdit

    Mais je dois louper quelque chose

    Je précise que je tiens à passer par un PrintDialog.

    Si vous avez une idée, merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Io, Droïde !
    Pourquoi ne pas utiliser un autre RichEdit (caché) pour y coller la partie sélectionnée (et discrètement copiée) du RichEdit visible ?
    Oui, je sais, tu vas encore trouver ça crade, , mais ça devrait fonctionner, non ?
    En tout cas, avec cette astuce, tu devrais pouvoir conserver toute la mise en forme ; sympa, non ?
    --
    @ +,
    jp

  3. #3
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Yep jp

    J'ai déjà lu ce thread en effet, mais je veux effectuer cette méthode via un PrintDialog, na !

    Ce ne doit pas être difficile, puisque c'est dans FI de Delphi, quoique...

    Comment affecter un Edit ou RichEdit via le code dito ? mais pas si évident que ça, si seulement l'aide donnait ce renseignement.

    @+

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Yep !

    Pas compris ta réponse, pour la bonne et simple raison que tu travailles avec un RichEdit dans lequel tu sélectionnes du texte, quand l'exemple utilise un contrôle Pages, à mon avis deux choses complètement différentes.
    D'ailleurs, tu le dis toi-même :
    Bien que regardant dans tous les sens le code, une chose m'échappe complètement ; pas moyen de trouver comment affecter mon RichEdit
    Et rien ne t'emêche de mettre tout le code de recopie de la sélection dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if PrintDialog.Execute then
    begin
    ...
    Valà, et bon app',
    --
    jp

  5. #5
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Yep

    En fait, regarde la capture jointe, cette histoire de sélection au bas à droite de la boîte.

    Le code dito est la seule (?) façon de pouvoir cocher ou non cette option de sélection.

    En plus je serais curieux de connaître l'utilité exacte de ce Contrôle Pages ; j'avoue que j'en sais rien

    Merci, bon app' aussi !

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Vue, la capture.
    cette histoire de sélection au bas à droite de la boîte.
    À gauche, dyslexique !
    Donc, je verrais bien
    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
       if PrintDialog1.Execute then
       begin
        { détermine l'ensemble que l'utilisateur souhaite imprimer }
        with PrintDialog1 do 
        begin
          if PrintRange = prAllPages then
            begin
              FonctionPourImprimerToutLeRichEdit; // fastoche
            end
          else if PrintRange = prSelection then
            begin
              FonctionPourImprimerLaPartieSélectionnée; // avec la combine que je t'ai donnée
            end
          else  { PrintRange = prPageNums }
            begin
              FonctionPourImprimerDesPagesDuRichEdit; // va te falloir faire cette gestion
            end;
        end;
           { imprime les pages maintenant }
    En plus je serais curieux de connaître l'utilité exacte de ce Contrôle Pages ; j'avoue que j'en sais rien
    Bah, j'ai déjà vu des exemples Delphi mélanger plusieurs composants et/ou fonctions : ça permet de ne faire qu'un seul exemple pour plusieurs trucs.
    Valà,
    --
    jp

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Yep jp

    Tu contournes l'obstacle pour mieux le regarder en face

    Bravo et merci en tous cas, pour cette façon de voir les choses ; en effet une habile ruse de sioux.

    Si aucune autre grosse pointure de ce forum, ne sait comment affecter un RichEdit au code donné en aide contextuelle de Delphi ; je ne serais pas bredouille au moins

    Mais avouons tout de même que cela donne un arrière gout de frustration un code très alléchant pourtant.

    Je ne taguerais en [Résolu] seulement si ce thread trouve sa solution suivant l'énoncé propre, et non à une ou des parades

    Sauf si... aucune autre solution n'est trouvée.

    @+

    PS : Chose amusante en pièce-jointe, sur Vista, il semblerait que le Bloc-Notes non plus ne peut gérer de sélection...

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Alors, pas encore couché ?
    et vive jp !
    Nan ! vive LES jp !,
    Allez, j'y vais (au pieu !)
    Bon dim',
    --
    jp

Discussions similaires

  1. [VBA-E] Range de la page d'une zone d'impression ?
    Par JulienCEA dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/05/2006, 15h39
  2. Réponses: 8
    Dernier message: 10/03/2006, 01h05
  3. Vba excel agrandir la zone d'impression a droite
    Par mb95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2005, 07h42
  4. Réponses: 24
    Dernier message: 01/12/2005, 16h54
  5. définir une zone d'impression sous Excel
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2005, 12h26

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