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 :

[Delphi2007] Création de composant


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé Avatar de SuiSeb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 33
    Par défaut [Delphi2007] Création de composant
    Bonjour,

    Je m'amuse à créer un composant avec un TPanel et un TLabel (pour faire une version très light de TAdvSmoothPanel de TMS).
    J'avoue que je n'ai encore jamais fait cela... J'espère être assez clair dans mes explications...

    J'ai quelques soucis en design (j'en aurai sans doute d'autres mais chaque jour en son temps) :

    1) Quand je dépose le composant sur une fenêtre, l'unité de mon composant n'est pas ajoutée dans les uses de la fenêtre.

    2) Quand je dépose un composant (genre TEdit), sur le label de mon composant, il est en dessous du label du composant et je n'arrive pas à le mettre en premier plan

    3) Quand je dépose un composant (TEdit), il n'a pas de parent le composant maison (je le vois avec ALT + F12) et il "disapraît" du DFM (je ne le vois plus dans le code du DFM après la première compilation (et j'ai le message d'erreur : Le champ Form1.edt2 n'a pas de composant correspondant. Voulez-vous retirer la déclaration ?)

    Est-ce que vous auriez des pistes ?

    D'avance merci et bonne journée,
    Seb.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 031
    Par défaut
    Au final, cela ne ressemble pas un TGroupBox ?

    Sinon, la zone Client du contrôle ne doit pas être bonne, ton Label doit réduire la zone cliente où l'on peut déposer un enfant, peut-être un TStaticText en Align alTop sera plus facile à maitriser.
    Voir AdjustClientRect
    Regarde aussi csAcceptsControls du ControlStyle
    Modifie le SetSubComponent du TLabel à True je dirais aussi ... étudie le TLabeledEdit pour la gestion du TLabel "interne" au Panel
    Le Owner du TLabel doit être le TPanel (lui son Owner c'est la TForm)

    Tu vas le réutiliser beaucoup ce composant, non parce que si c'est juste un TPanel + Titre, pas besoin de faire un composant, en plus ça oblige d'avoir un DPK, BPL, faut donc l'installer dans la palette, le truc pénible à souhait à long terme en maintenance, ayant connu plusieurs environnements de développement, lib interne maison divergente, plusieurs forks incompatibles, je voyais mes collègues installer/désinstaller des packages, ça prenait un temps fou, des WMWare ont bien aidé à ne pas devoir se taper la gestion des packages selon le projet.
    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 confirmé Avatar de SuiSeb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 33
    Par défaut
    Hello,

    Merci pour ta réponse.

    Citation Envoyé par ShaiLeTroll Voir le message
    Au final, cela ne ressemble pas un TGroupBox ?
    Oui mais en plus joli et surtout plus moderne.

    Citation Envoyé par ShaiLeTroll Voir le message
    Sinon, la zone Client du contrôle ne doit pas être bonne, ton Label doit réduire la zone cliente où l'on peut déposer un enfant, peut-être un TStaticText en Align alTop sera plus facile à maitriser.
    J'ai essayé avec un TStaticText mais cela n'a pas changé grand chose.

    Citation Envoyé par ShaiLeTroll Voir le message
    Voir AdjustClientRect
    Regarde aussi csAcceptsControls du ControlStyle
    Modifie le SetSubComponent du TLabel à True je dirais aussi ... étudie le TLabeledEdit pour la gestion du TLabel "interne" au Panel
    Le Owner du TLabel doit être le TPanel (lui son Owner c'est la TForm)
    Je vais regarder cela à tête reposée

    Citation Envoyé par ShaiLeTroll Voir le message
    Tu vas le réutiliser beaucoup ce composant, non parce que si c'est juste un TPanel + Titre, pas besoin de faire un composant
    Exact! Dans un des écran de l'application que je voudrais moderniser, j'en ai 4 sûr à positionner (sinon une bonne douzaine rien que dans cet écran. Partie administrative avec les données + adresse + contrat + d'autres trucs).

    Mais bon pour l'instant, je vais rester sur un panel + label + ligne (une fois la structure, copier/coller + adaptation).

    Bonne journée,
    Seb.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 031
    Par défaut
    Est-ce que TCategoryPanelGroup existe en 2007 ?

    EDIT :
    Mince c'est 2009 : Les nouveautés de Delphi 2009, cela aide a faire des panels avec un titre, en plus, on peut les réduire

    En FMX, TExpander, j'ai l'impression que tu fais ce genre de panel si tu as plusieurs panels avec titres qui se suivent.


    Sinon pour ton Component

    Essaye TPanel contient un TStaticText en alTop et un second Panel en alClient, c'est le second panel qui sera le conteneur receveur, la zone cliente de ton composant
    Le premier TPanel, faut retirer csAcceptsControls
    Le second TPanel, faut conserver csAcceptsControls

    Et surtout montre nous le résultat raté et le résultat souhaité en image, ça sera surement plus clair à comprendre sur ce qui ne fonctionne pas






    Je me rappelle d'avoir fait en D3, D5 et D7, un panel qui se replie, je pensais qu'il avait une barre de titre comme un TCategoryPanelGroup mais non, c'est vieux mes souvenirs étaient faux :
    Nom : Sans titre.png
Affichages : 29
Taille : 149,5 Ko
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2007, 14h09
  2. Réponses: 1
    Dernier message: 23/06/2002, 00h15
  3. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10
  4. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51
  5. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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