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 :

Copier et afficher une copie d'ecran


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Copier et afficher une copie d'ecran
    J'affiche des données provenant d'une bd dans un TDBGrid. Or quand je fais un traitement sur la BD, l'affichage dans la grille est modifié ce que je ne voudrais pas. Une solution que j'ai trouvée (pas forcément géniale mais bon...) serait de copier l'image de la grille avant le traitement et de l'afficher le temps que dure le traitement. Est-ce possibol :
    Merci d'avance

  2. #2
    Membre régulier

    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 92
    Points
    92
    Par défaut
    Ce n'est en effet pas la solution que je te conseille !

    Tu ne veut pas plutôt mettre un joli "Working ..." par dessus ?

    Sinon, pour faire une copie écran :

    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
    procedure TForm1.Button1Click(Sender: TObject);
     var
     
        DeskTopDC: HDc;
        DeskTopCanvas: TCanvas;
        DeskTopRect: TRect;
     
     begin
        DeskTopDC := GetWindowDC(GetDeskTopWindow);
        DeskTopCanvas := TCanvas.Create;
        DeskTopCanvas.Handle := DeskTopDC;
     
        DeskTopRect := Rect(0,0,Screen.Width,Screen.Height);
     
        Canvas.CopyRect(DeskTopRect,DeskTopCanvas,DeskTopRect);
     
        ReleaseDC(GetDeskTopWindow,DeskTopDC);
    end;
    Met ça dans une fiche de manière à que ça corresponde à un clique sur le bouton et regarde !

    Je crois que c'est copié direct de l'aide ou d'un swag ! (En tout cas, ce n'est pas de moi !)

    Moi
    Salut

    Happy to Help you

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Essaie ceci :

    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 TForm1.FormResize(Sender: TObject);
     
    begin
         Try
     
         DBGrid1.Columns.BeginUpdate ;
     
         // Traitement données
     
         Finally
     
         DBGrid1.Columns.EndUpdate ;
         DBGrid1.Repaint           ;  // Pour être sûr !!!
     
         end;
    end;
    Je ne suis pas un spécialiste des contrôles orientés données, mais sur le principe cela devrait fonctionner ...

    A+

    Didier

  4. #4
    Membre régulier

    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 92
    Points
    92
    Par défaut
    Didier, on s'est croisé !

    Deux réponses différentes en moins d'une minute ! chapeau !

    Moi
    salut

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Sinon, tu supprime la valeur de la propriété Datasource de ta DBGrid, le temps du traitement.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 14
    Points
    14
    Par défaut bon ça marche !
    Merci à ceux qui m'ont repondu. En fait je ne pouvais pas vider la grille le temps du traitement comme tu me le proposais Lung (TBDGrid.Datasource à nil), parce que mon traitement finit sur une petite fenetre qui demande des parametres d'edition à l'utilisateur. Mais en me basant sur l'instruction Canvas.CopyRect de la fonction proposée par Al-Yazdi, j'ai fini par trouver un truc simple : je mets un TImage (image1) avec Visible= FALSE, de la meme taille que mon TBDGrid(grille) et avant le traitement je lance ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Image1.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height),  grille.Canvas,
          Rect(0,0, Image1.Width, Image1.Height));
        Grille.Hide;
        Image1.Show;
        Image1.Repaint;
       //...Traitement
      //...puis
        Image1.Hide;
        Grille.Show;
    Et pi ça roule..., ça fait pas de mal quand ça marche, nom d'un petit bonhomme!!!!

  7. #7
    Membre régulier

    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 92
    Points
    92
    Par défaut
    Ca fait plaisir d'aider !

    Eh bien de rien Bobx et dés que t'as un problème n'hésite pas, le forum est là pour ça ...

    Moi
    Salut

Discussions similaires

  1. Afficher une copie d'écran
    Par stalacta dans le forum GUI
    Réponses: 5
    Dernier message: 29/12/2013, 12h06
  2. [Mail] Envoyer une copie d'écran par mail
    Par Greggggggg dans le forum Langage
    Réponses: 3
    Dernier message: 08/09/2006, 00h16
  3. [images] afficher une image en fond d'ecran
    Par soulhouf dans le forum Windows
    Réponses: 8
    Dernier message: 19/09/2005, 20h03
  4. Afficher une fenetre a un endroit préci de l'ecran
    Par leo5593 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/08/2005, 14h58
  5. Afficher une texture plein ecran en 2D
    Par venomelektro dans le forum OpenGL
    Réponses: 8
    Dernier message: 07/10/2004, 12h30

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