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

Langage Delphi Discussion :

Impression écran d'un contrôle


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut Impression écran d'un contrôle
    Bonjour,

    Je ne pense pas avoir trouvé de message correspondant à ma demande, donc voici ma question:
    Je souhaite faire une impression d'écran d'un contrôle situé sur une fiche. Par exemple, j'ai un panel (alignement alClient) sur une forme et je désire uniquement copier ce panel dans le presse papier lors d'un clique sur un bouton.

    Je ne vois pas comment je peux faire car la position de la souris n'est pas utilisable et le left/top de mon contrôle non plus car ils sont à 0.

    Par avance, merci de me proposer une solution.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    TWinControl.PaintTo dessine tu le controle dans un Canvas !
    Cela peut déjà t'aider !
    Si tu utilise le Canvas d'un TBitmap, tu peux le sauvegarder via SaveToClipboardFormat

    l'aide de D6 ou celle de BSD2007 contiennent toutes les deux des exemples de SaveToClipboardFormat et ClipBoard.SetAsHandle
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Bonjour ShaiLetroll,

    Merci pour ta réponse, j'ai testé quelque chose à partir de tes explications:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    bmp := TBitmap.Create ;
    try
      bmp.width := panel.width ;
      bmp.height := panel.height ;
      panel.PaintTo(bmp.Canvas.handle, 0, 0);
      ClipBoard.Assign (bmp) ;
    finally
      bmp.free ;
    end;
    En sortie, j'ai une image de la taille du TPanel mais vide.

    De plus, mon problème de base a été mal expliqué: je souhaite faire une impression écran d'un composant (ici un TPanel) sur lequel d'autres composants (tbutton, timage...) ont été placés.
    Et bien évidemment, je veux dans mon presse papier une image aux dimensions du TPanel avec tout ce qui est placé sur le TPanel.

    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Salut,

    Dans ton cas (alignement alClient), tu peux aussi faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses Clipbrd;
     
    var     FormBmp : TBitmap;
    begin
    FormBmp := GetFormImage;
    try
      Clipboard.Assign(FormBmp);
    finally FormBmp.Free;  end;
    Dans un cas plus général :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var     
    FormBmp  : TBitmap;
    PanelBmp : TBitmap;
    begin
    FormBmp  := GetFormImage;
    PanelBmp := TBitmap.Create;
    try
      PanelBmp.Width  := Panel1.Width; 
      PanelBmp.Height := Panel1.Height;
      PanelBmp.Canvas.CopyRec(PanelBmp.Canvas.ClipRect,FormBmp.Canvas,Panel1.BoundsRect);
      Clipboard.Assign(PanelBmp);
    finally PanelBmp.Free; FormBmp.Free; end;

  5. #5
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Salut Caribensila,
    Ta solution est parfaite, merci !
    Bonne journée

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

Discussions similaires

  1. Impression écran programée
    Par jeremy276 dans le forum Access
    Réponses: 1
    Dernier message: 14/07/2006, 21h43
  2. impression écran d'une url
    Par choupi-25 dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2006, 14h36
  3. Coordonnées écran d'un contrôle
    Par paradise dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2005, 17h22
  4. [Afficher une image] Comment afficher une impression écran ?
    Par mnina dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 10/11/2005, 10h30
  5. Bouton Impression écran
    Par eag35 dans le forum MFC
    Réponses: 3
    Dernier message: 04/11/2004, 09h34

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