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 :

Bitmap pour un popupmenu créé dynamiquement


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut Bitmap pour un popupmenu créé dynamiquement
    Bonsoir,
    j'aurais besoin d'un petit coup de pouce car là, je sèche !

    Voilà, je suis en ce moment sur un logiciel qui charge dynamiquement un popupmenu à partir d'un fichier INI et je voudrais récupérer l'icône (en 16*16 pixels) du logiciel chargé dans l'item nouvellement créé du popupmenu et l'affecter à cet item.

    J'ai déjà quelques bout de codes :

    récupérer l'icône :
    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function TForm2.GetIconHandle(const P_FileName : string; const P_Modifier : integer): HIcon;
    var Sfi: TSHFileInfo;
    begin
      SHGetFileInfo(PChar(P_FileName),
                    0,
                    Sfi,
                    SizeOf(TSHFileInfo),
                    SHGFI_SYSICONINDEX or SHGFI_ICON or P_Modifier);
      Result := Sfi.hIcon;
    end;

    la transformer en bitmap :

    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure IconToBitmap(hIcon: THandle; var ABmp:TBitmap);
    begin
      ABmp.Width := 16;
      ABmp.Height := 16;
      ABmp.PixelFormat := pf24bit;
      DrawIconEx(ABmp.Canvas.Handle, 0, 0, hIcon, 16, 16, 0, 0, DI_NORMAL);
    end;

    et enfin, l'affecter au nouvel item :
    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    begin
          Bitmap := TBitmap.Create;
          try
            hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE);
            IconToBitmap(hIcon, Bitmap);
            menuitem.Bitmap := Bitmap;
          finally
          Bitmap.Free;
    end;

    Mon problème ? Où ajouter mon code permettant d'affecter le bitmap ?
    J'ai tenté dans ma procédure d'ajout des items :
    Code delphi : 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
    procedure AjouterUnItem(PopupMenu:TMenuItem;FichierIniACharger,Section,Cle,default:String);
    begin
      INI:=TIniFile.Create(FichierIniACharger);
      MenuItem:=TMenuItem.Create(PopupMenu);
      MenuItem.Caption:=nomitem;
      PopupMenu.Add(menuItem);
      if section='Playlist' then
        begin
        MenuItem.OnClick := Form5.PlaylistClic
        end
      else
      if section='Item_Prog' then
        begin
          Bitmap := TBitmap.Create;
          try
            hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE);
            IconToBitmap(hIcon, Bitmap);
            menuitem.Bitmap := Bitmap;
          finally
          Bitmap.Free;
        end;
        MenuItem.OnClick := Form5.AjoutClicExe
        end
        else MenuItem.OnClick := Form5.AjoutClicDir;
    end;
    mais delphi me retourne pas mal d'erreur du genre "'(' expected but ':=' found"...

    J'ai récupéré ces codes dans un de mes anciens programmes et il marchait très bien

    Quelqu'un aurait une idée pour faire marcher ma procédure ?
    Merci.

  2. #2
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Citation Envoyé par bionicleman Voir le message
    mais delphi me retourne pas mal d'erreur du genre "'(' expected but ':=' found"...
    A quelle position exactement dans ton code ?
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    Bonjour,
    voilà où delphi me retourne les erreurs en questions :

    Code delphi : 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
    procedure AjouterUnItem(PopupMenu:TMenuItem;FichierIniACharger,Section,Cle,default:String);
    begin
      INI:=TIniFile.Create(FichierIniACharger);
      MenuItem:=TMenuItem.Create(PopupMenu);
      MenuItem.Caption:=nomitem;
      PopupMenu.Add(menuItem);
      if section='Playlist' then
        begin
        MenuItem.OnClick := Form5.PlaylistClic
        end
      else
      if section='Item_Prog' then
        begin
          Bitmap := TBitmap.Create;
          try
            hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE); //à la place du ':=' est attendu '('
            IconToBitmap(hIcon, Bitmap);//à la place du ',' est attendu '('
            menuitem.Bitmap := Bitmap;
          finally
          Bitmap.Free;
        end;
        MenuItem.OnClick := Form5.AjoutClicExe
        end
        else MenuItem.OnClick := Form5.AjoutClicDir;//à la place du 'else' est attendu ';'
    end;//à la place du ';' est attendu '.' (alors que ce n'est pas la dernière procédure de ma forme)
    Merci.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Il manque un begin pour correctement former le premier bloc else

    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
    procedure AjouterUnItem(PopupMenu:TMenuItem;FichierIniACharger,Section,Cle,default:String);
    begin
      INI:=TIniFile.Create(FichierIniACharger);
      MenuItem:=TMenuItem.Create(PopupMenu);
      MenuItem.Caption:=nomitem;
      PopupMenu.Add(menuItem);
      if section='Playlist' then
        begin
        MenuItem.OnClick := Form5.PlaylistClic
        end
      else
      begin
        if section='Item_Prog' then
        begin
          Bitmap := TBitmap.Create;
          try
            hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE); //à la place du ':=' est attendu '('
            IconToBitmap(hIcon, Bitmap);//à la place du ',' est attendu '('
            menuitem.Bitmap := Bitmap;
          finally
            Bitmap.Free;
          end;
          MenuItem.OnClick := Form5.AjoutClicExe
        end
          else MenuItem.OnClick := Form5.AjoutClicDir; //à la place du 'else' est attendu ';'
      end;//à la place du ';' est attendu '.' (alors que ce n'est pas la dernière procédure de ma forme)

  5. #5
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    Effectivement !
    Mais, , mes erreurs sont toujours là.
    Merci d'avoir essayé

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Quelles erreurs exactement, il faut que tu sois plus précis si tu veux que l'on t'aide.

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

Discussions similaires

  1. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  2. [PopupMenu] Créer dynamiquement un sous menu (submenu)
    Par MiJack dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/02/2006, 13h41
  3. [Langages] Pour creer un site dynamique?
    Par Blaireau dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 20/11/2005, 20h35
  4. Probléme pour mettre un renommer dynamiquement les colonnes
    Par bragon dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h47
  5. Réponses: 2
    Dernier message: 08/10/2002, 18h26

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