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

Lazarus Pascal Discussion :

L'unité Windows ne veut pas de TBitmap ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 16
    Points
    16
    Par défaut L'unité Windows ne veut pas de TBitmap ?
    Bonsoir,
    j'ai repris Lazarus et le Pascal depuis peu, et j'ai du rouiller.
    Ce code, fait pour essayer de comprendre mon problème, fonctionne (il récupère une image, et l'assigne à un composant image).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    uses
      Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls;
    .. 
    procedure TForm1.FormCreate(Sender: TObject);
    var
      bmp : TBitmap;
    begin
      bmp := TBitmap.Create;
      bmp.LoadFromFile('D:\Documents\Mes Projets\Mes programmes Lazarus\Test TImage\Capture.bmp');
      Image.Picture.Assign(bmp);
      bmp.Free;
    end;
    Le code ci-dessous, récupéré dans la documentation, et destiné à faire un screenshot, me renvoie
    Identifier idents no member Create
    Comme j'ai besoin de GetDC(), j'ai ajouté windows aux uses. Patatra, il semble que TBitmap n'existe plus, et qu'on m'impose TBITMAP.

    Je suis passé à côté de quoi ? Mon problème n'est pas de faire un screenshot, mais de comprendre ce que j'ai mal fait. (au passage, je n'ai pas perdu trop de temps, la lecture de divers sites m'a prodigué une puissante révision. Mais pas la lumière. J'ai déjà honte de la réponse que je vais recevoir, je sens que ma question est d'une banalité affligeante...)
    Merci à ceux qui m'apporteront l'illumination.

    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
    uses
      Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, Windows;
    .. 
    procedure TForm1.FormCreate(Sender: TObject);
    var
      bmp : TBitmap;
      ScreenDC : HDC;
    begin
      bmp := TBitmap.Create; // <--- ligne pointée par le compilateur
      ScreenDC := GetDC(0);
      bmp.LoadFromDevice(ScreenDC);
      Image.Picture.Assign(bmp);
      ReleaseDc(0, ScreenDC);
      bmp.Free;
    end;
    N'oubliez pas de consulter les FAQ programmation informatique classées !

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour ! Le problème vient du fait qu'il y a deux types différents qui ont le même nom. Le compilateur prend en compte la dernière déclaration.

    Je pense qu'il suffit de changer l'ordre dans lequel vous déclarez les unités, en mettant Windows avant Graphics. Ou alors d'écrire Graphics.TBitmap au lieu de TBitmap.

    Bonne continuation !
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup,

    les deux méthodes fonctionnent parfaitement.

    Il y a d'autres exemples de types différents qui portent le même nom ?
    N'oubliez pas de consulter les FAQ programmation informatique classées !

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Il y en a peut-être d'autres, mais je ne saurais vous dire lesquels.

    Ce n'est pas un problème qu'on rencontre si souvent.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    a priori, j'ai le même souci avec TRect, la fonction Rect(), et les unités Windows et Classes.
    Une fois qu'on le sait, c'est plus simple...
    N'oubliez pas de consulter les FAQ programmation informatique classées !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/11/2017, 06h56
  2. Réponses: 8
    Dernier message: 27/11/2017, 13h27
  3. Réponses: 14
    Dernier message: 30/10/2012, 16h15
  4. [Kylix] Un programme compilé ne veut pas se lancer
    Par LightBeam dans le forum EDI
    Réponses: 1
    Dernier message: 05/08/2003, 10h15

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