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

C++Builder Discussion :

Comment on ajoute un OpenDialog dans un éditeur de propriété?


Sujet :

C++Builder

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut Comment on ajoute un OpenDialog dans un éditeur de propriété?
    Je suis en train d'écrire un composant dont l'une des propriétés est un nom de fichier. Idéalement, je voudrais les trois petits points à côté de la propriété dans l'inspecteur d'objet qui appellerait un OpenDialog.

    Bon, je connais un peu le principe, faut écrire un éditeur de propriété puis l'enregistrer. Je pense avoir fait ça dans une vie précédente (en Delphi) mais c'est tellement loin tout ça...

    Y a quelqu'un ici qui a fait ça?

    Merci!

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 453
    Points : 24 864
    Points
    24 864
    Par défaut
    Pour le Double-Clic en conception (similaire à l'éditeur de colonne du TListView ou l'éditeur de noeud du TTreeView)

    Comme par lire Ajout d'éditeurs de composants puis Recensement d'un éditeur de composants

    Tu fais un Ecran (TForm) tout à fait normal capable de lire les données depuis ton objet
    Tu fais un autre objet qui hérite de TComponentEditor qui utilise cette Ecran, si je me souviens bien juste la fonction Edit qui doit être implementé et sa propriété Component hérité pointe sur ton objet en cours de conception

    Le code des objets hérités de TForm et TComponentEditor doivent être dans un Package pour Conception et installer dans la Palette (c'est comme si tu injectais du code dans Delphi)

    Fouille dans le code Delphi de DesignEditors et DesignIntf (ce n'est pas du CPP)

    Tu peux écrire ton code en CPP, j'ai juste testé un petit RegisterComponentEditor directement lié à la TForm, cela fonctionne très bien, en Delphi, j'avais poussé jusqu'au RegisterPropertyEditor !


    Pour les Trois Points en Conception (comme le Lines d'un TMemo ou TFont)
    Idem il faut hérité un TPropertyEditor et redéfinir Edit (tu n'es pas obligé d'implementer l'ensemble de IProperty car fourni par défaut dans TPropertyEditor

    Idem un TForm sera invoqué par Edit, mais c'est compliqué car il faut passer
    - soit par GetPropInfo pour manipuler la propriété en cours de conception, il faut bien connaître ses RTTI !
    - soit par GetComponent qui fourni un TPersistent (si ta propriété le permet comme un TFont)

    Ajout d'éditeurs de propriétés
    utilise RegisterPropertyEditor pour effectuer le Recensement de l'éditeur de propriétés

    Developpez - Cours de programmation Delphi & Pascal : Composants - Editeurs de propriétés



    Charlie Calvert's C++ Builder Unleashed - Creating Descendants of Existing Components
    Writing Your Own Property Editor
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Merci pour les liens et les infos, je vais regarder ça, j'ai vite regarder je pense bien y arriver avec ça***

    Tiens, une autre question pendant que j'y suis. Une chose que je n'ai jamais réussi à faire, c'est de cacher une propriété héritée dans l'inspecteur d'objet.

    Vous savez comment?

    Encore merci!


    *** la solution est dans les liens que tu m'as proposé:

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

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 453
    Points : 24 864
    Points
    24 864
    Par défaut
    Si tu as la chance d'avoir une version avec source, je t'encourage la lecture de Indy, il me semble qu'il y a les codes
    Où ceux de la JVCL !


    Cacher une propriété, euh, ça ne doit pas pouvoir se faire !
    toute propriété hérité déjà publiée sera visible !
    Souvent dans la VCL, tu as une version Custom de l'objet, il faut partir de celui-ci qui ne publie rien par défaut
    En général, la version "finale" n'est rien de plus qu'une Custom publiée (sans plus de code)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Bon, j'aurais aimé mieux que tu me dises:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    __unpublish ColCount ;
    Mais je pense que ta solution d'y aller avec un héritier d'un "TCustom" est la bonne, merci!

    Ce que j'essaie de faire, c'est l'équivalent d'un TDBGrid pour SQLite. ça fonctionne, mais je veux pas que certaines propriétés comme "RowCount" et "ColCount" apparaissent.

    Pour l'instant, j'hérite d'un TStringGrid, ça va compliquer un peu (pas mal) les choses si j'hérite d'un TCustomGrid", va falloir que j'évalue mes priorités.

    Encore merci.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 453
    Points : 24 864
    Points
    24 864
    Par défaut
    un TDBGrid pour SQLite ?
    Il y a un "SQLite DBExpress Driver" donc cela existe déjà via l'intermédiaire d'un TSQLQuery ou plutôt TSimpleDataSet

    Tu as aussi des lib DB spécifique à SQLite qui fournisse des TDataSet donc utilisable avec un TDBGrid !

    Erreur à ne surtout pas faire serait de recopier le DataSet dans la TStringGrid (comme l'avait fait TMS dans sa TAdvDBStringGrid certe très puissante mais surtout très lourde, ce composant obsolète a été remplacé depuis)

    Le TDBGrid ne recopie pas les données, il reste connecté au DataSet et affiche une "plage" d'enregistrements correspondant aux lignes affichées !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Points : 356
    Points
    356
    Par défaut
    Merci de me ramener à la réalité, ShaiLeTroll, tu peux être certain que je ne proposerai jamais plus rien sur developpez.com, histoire de ne pas me couvrir encore une fois de ridicule.

    Reste tout de même que je suis une preuve vivante que le ridicule ne tue pas, j'approche les 60 ans.

Discussions similaires

  1. [2.x] comment faire ajouter un bouton dans un tableau
    Par ali gh dans le forum Symfony
    Réponses: 5
    Dernier message: 06/05/2014, 11h33
  2. [TinyMCE] Ajouter un bouton dans l'éditeur
    Par abysusinvocat dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 06/10/2010, 10h36
  3. Comment enlever les pointillés bleus dans l'éditeur
    Par piotrr dans le forum Visual Studio
    Réponses: 3
    Dernier message: 03/08/2009, 18h29
  4. comment configurer ajouter mes librairies dans mon projet web ?
    Par Chikh001 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/10/2007, 11h08
  5. Réponses: 6
    Dernier message: 08/01/2007, 14h13

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