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 :

[Composant] Dialogue dans une propriété


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut [Composant] Dialogue dans une propriété
    Bonjour,

    Toujours dans ma conception de composants, je suis en train de dériver un composant TImage.

    Malheureusement, mon composant ne dipose pas de la boîte de dialogue pour choisir une image (les [...] au niveau de la propriété).comment puis-je faire pour obtenir cette boîte de dialogue ?

    Merci d'avance,

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    C'est étrange, surtout si tu dérives de TImage. C'est une propriété que tu as ajoutée en plus ?
    En tout cas, la solution est de faire appel à RegisterPropertyEditor dans la procédure Register qui recense ton compo.
    pour plus de détails

  3. #3
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    oui, c'est une propriété perso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    property Image: String read fImage write fImage
    En fait, je voudrais que ma propriété "image" me permettre de choisir le chemin d'un fichier. En même temps, je charge l'image dans le composant par cette même propriété.

    j'ai déjà regardé dans l'aide de delphi, mais j'ai pas trouvé

  4. #4
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    ta nouvelle propriété Image, si tu veux voir l'éditeur de propriété en conception (avoir les [...] pour charger ton image) doit être déclarée non pas en String mais en TPicture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Published
      property Picture2 : TPicture read FPicture write SetPicture;
    Mais comme dit srjd pourquoi n'utilises-tu pas la propriété Picture héritée de Timage ?

  5. #5
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    En fait, j'ai plus besoin du path de l'image que de l'image en elle-même. Afficher l'image n'est qu'un "plus" esthétique. C'est plus facile d'avoir le path correct en cliquant sur [...] pour ouvrir une boîte de dialogue que d'entrer le chemin à la main.

  6. #6
    Membre habitué Avatar de phplive
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 179
    Points : 150
    Points
    150
    Par défaut
    Bjr,

    Oui tu dois écrire un éditeur de propriété : c'est assez simple si tu as l'habitude d'écrire des composants


    Voici un ex qui date un peu mais qui correspond exactement à ton cas.

    La partie TFileNameProperty :

    http://www.drbob42.com/delphi/property.htm

    C'est en anglais mais c'est bien expliqué, je l'ai déjà utilisé


    @+
    Php

  7. #7
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Merci, en effet, ça a l'air simple, mais le problème, c'est qu'il faut utiliser une unité (voire plus) qu'apparemment je ne possède pas c'est DsgnIntf.

    Peux-tu me dire où il se situe ? j'ai fait une recherche avec Windows, et il n'a rien trouvé...

    J'utilise Delphi 7 pour écrire ce compo

    Merci

  8. #8
    Membre habitué Avatar de phplive
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 179
    Points : 150
    Points
    150
    Par défaut
    Remoi,


    Oui c'est normal car DsgnIntf c'était pour D6

    Voici comment il faut faire

    Tu créé une unité dans laquel tu définis ton type
    ex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unit MesTypes;
     
    type 
     
      TFileName = type string;

    Tu créés une seconde unité dans laquelle tu codes ton éditeur de propriété

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    unit MonEditeurReg;
     
    interface
     
    uses
     Windows, Messages, Classes, SysUtils, // A toi de voir si c'est utile
     // Delphi 6 ou supérieure
     DesignIntf, DesignEditors,   // <-- Obligatoire 
     TypInfo; 
     
     
      TFileNameProperty = class(TPropertyEditor)
      public
        function GetAttributes: TPropertyAttributes; override;
        procedure Edit; override;
     
      end;
     
     
    procedure Register;
     
    implementation
     
    uses MesTypes;  // Ici tu utilises la 1ere unité
     
     
    procedure Register;
    begin
      RegisterPropertyEditor(TypeInfo(TFileName),
        nil, '', TFileNameProperty);
    end;
     
    // Le code de TFileNameProperty
     
     
    end.

    Dans un paquet tu places MonEditeurReg et éventuellement MesTypes et tu l'installes

    Voilà , ca doit fonctionner après adaptation of course !

    @+
    Php

  9. #9
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Merci, mais le problème reste le même...
    Je n'ai pas les unités DesignIntf et DesignEditors, ou même une unité dont le nom est ressemblant !

    Normallement, si je fais un ctrl+clic sur une unité , elle doit s'ouvrir, et ici ça ne le fait pas. J'ai essyé de rechercher les fichiers, et j'ai rien trouvé...

    Peux tu me dire où se trouvent ces unités ? Ou alors, où puis-je les trouver ?

  10. #10
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par Big
    Je n'ai pas les unités DesignIntf et DesignEditors, ou même une unité dont le nom est ressemblant !
    Normalement elles sont dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Delphi>\source\ToolsAPI\
    Quelle édition de Delphi as-tu ? Je pense que les tools API ne sont pas distribués avec l'édition perso.

  11. #11
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Ah oais, merci, elles sont là...
    C'est bizarre que Delphi ne les retrouve pas, et Windows non plus !

    Sinon, j'utilise la version 7 pro.

    Je vais donc essayer ça

    merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/08/2009, 17h05
  2. [C#]liste de choix dans une propriété d'un user control
    Par LeDeveloppeurDotNet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/10/2005, 12h41
  3. [JTable] Mettre un composant Swing dans une cellule
    Par NeptuS dans le forum Composants
    Réponses: 4
    Dernier message: 09/09/2005, 12h18
  4. Réponses: 17
    Dernier message: 04/04/2005, 17h50
  5. [RAVE]Composant RTF dans une feuille RAVE ?
    Par hpalpha dans le forum Rave
    Réponses: 3
    Dernier message: 29/03/2004, 19h25

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