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

Composants VCL Delphi Discussion :

TLabel et Image


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut TLabel et Image
    Bonjour à tous, je suis de retour toujours avec un pb de Tlabel
    (merci encore à Pascal au passge pour la solution à mon précédent pb)
    Voilà :
    je voudrais insérer une image (icone) dans un tlabel
    j'ai essayé pas mal de chose : La propriété OnDrawItem serait bien mais elle n'existe pas pour un Tlabel !
    J ai tenté sans succés de la rajouter à la classe Tlabel
    (property OnDrawItem etc..)
    Si qq a la solution (qui doit être basic j en doute pas ) merci d avance !

  2. #2
    Membre éclairé

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

    La solution la plus simple est de mettre un TImage associé a ton Label.
    Si tu viens vraiment a insérer une image, tu as accès au CANVAS de ton label.
    Tu peux donc le redessiner, insérer une image...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.dessineLabel(Sender: TObject);
    begin
        label1.Canvas.Draw(0,0,TonBitmap);
    end;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    ok merci de ta réponse, je vais 'creuser' dans ce sens et je reponds dés que ce sera ok

    merci encore

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    ok, voila j ai testé cette solution
    cela fonctionne si j'envoies la fonction par un button
    par contre si la procedure est appelée par une autre rien !
    je cherche pourquoi, mais pour le moment, pas de solution
    il y aurait pas un moyen avec une Timage déjà 'posée' sur la form ?

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Par défaut
    Il faut que tu définisses le onPaint de ton TLabel, car je crois que tes TLabel sont créés dynamiquement vu ton précédent fil de discussion.

    Par ailleurs, pour distinguer ces TLabel créés dynamiquement d'éventuels autres TLabel posés en design-time sur ta fiche, je te propose d'utiliser la propriété Tag du composant.

    Par défaut Tag vaut zéro, par contre pour un TLabel créé dynamiquement on définira la valeur 1.
    Toujours dans ta procédure de création dynamique de Tlabel, tu redéfiniras l'événement onPaint de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      with TLabel.Create(Self) do
      begin
        Parent := Self;
        AutoSize := False;
        ...
        Tag := 1;
        OnPaint := onLabelPaint;
      end;
    Comme dans le précédent post, tu créés dans ta TForm la procédure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      TForm1 = class(TForm)
        ...
      public
        ...
         procedure onLabelPaint(Sender: TObject);
      end;
    Cette procédure peut être codée de deux façon différentes:

    Ta version de delphi est inférieure à la version D2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.onLabelPaint(Sender: TObject);
    var
      I: integer;
    begin
      for I := 0 to pred(ComponentCount) do
        if Components[i].Tag = 1
          then
        if Components[i] is TLabel
          then (Components[i] as TLabel).Canvas.Draw(0,0,Image1.Picture.Bitmap); //modifier ici pour lier avec tes images
    end;
    Ta version est au moins égale à D2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.onLabelPaint(Sender: TObject);
    var
      C: TComponent;
    begin
      for C in Self do
        if C.Tag = 1
          then
        if C is TLabel
          then (C as TLabel).Canvas.Draw(0,0,Image1.Picture.Bitmap); //modifier ici pour lier avec tes images
    end;
    Et normalement cela devrait fonctionner.

    Ne prend pas des images trop lourdes car à chaque fois que tu redimentionneras ta fiche par exemple les images de tes TLabels seront redessinés.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    @pascal
    Ok Merci du coup de main à nouveau, Pascal
    je suis au boulot, là mias dés ce soir je vérifie la fonction
    effectivement cela doit être bon car déjà en travaillant sur l evénement onpaint de la form c était presque bon
    merci encore, je referais un msg pour le résuktat ainsi quà :

    @petitcoucou31
    pour la solution de départ, qui est trés bonne bien sûr !

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

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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