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

Delphi Discussion :

Assigner une valeur à ComponentState


Sujet :

Delphi

  1. #1
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut Assigner une valeur à ComponentState
    Bonjour à tous!

    J'expérimente présentement la création dymamique de formulaires. En gros, j'essaye de faire en sorte qu'un utilisateur puisse se fabriquer une fiche sur laquelle il pourra placer des TEdit et des TLabel. Rien de compliqué.

    Je sais que la VCL a prévu une propriété ComponentState qui permet au composants de tester si ces derniers sont en mode design et ainsi réagir différemment aux clics de souris (par exemple, quand je clique dans un TEdit en design time, je ne peux pas changer le texte et des poignées apparaîssent autour du composant pour que je puisse le redimentionner).

    Est-ce que quelqu'un sait comment (ou même si) je peux changer ComponentState ? J'ai lu dans l'aide que SetDesigning met permettait d'assigner csDesigning à ComponentState mais...
    1. La méthode est protégée (protected)
    2. L'aide dit : "Do not call SetDesigning directly." et j'écoute toujours les directives de l'aide de Delphi


    Quelqu'un peut m'aider ?

    Merci!

  2. #2
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Salut

    Je comprend l'intention, par exemple, ajouter csDesigning dans le componentState du composant.

    Je pense qu'il serait possible de tricher en dérivant les classes TEdit, en publiant la propriété qui t'intéresse et faisant des cast sur composant dans le code mais c'est une méthode de hussard. Je l'ai déjà fait pour d'autres propriétés ou méthodes mais de façon tout à fait exceptionnelle. Cela évite de réaliser de vrais composants et de les intégrer dans l'IDE, c'est moins coûteux et on a pas toujours le droit de créeerr des composants en entreprise.

    En outre, concernant cette propriété, je pense qu'il y a un gros risque car Delphi distingue les paquets de composants de conception et les paquets d'exécution, enfin ce n'est peut-être pas valable pour tous les composants.
    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Je pense aussi que ce n'est pas à utiliser (j'ai des composants que j'ai créé qui ont un comportement différent s'ils sont en conception ou en exécution).

    Il faudrait plus que ce soit toi qui gère le fait que dans ton application c'est en mode "conception" ou non. (en passant par une liste d'objet par exemple, car dériver tous les composants est un peu lourd)

  4. #4
    Expert confirmé

    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 : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    De toutes façons cette méthode est sans issue : ComponentState est read-only

    Je n'ai malheureusement pas de temps à consacrer à ton problème, bien qu'il m'intéresse beaucoup (j'adore tout ce qui est arcanes de Delphi ^^), mais j'ai ceci à te dire, provenant d'un vague souvenir :
    Les fiches en design sont en fait associées à un designer, ainsi qu'un certain nombres de classes/interfaces de design. Pour chercher, je t'invite à te diriger vers la propriété Ancestor de TForm, qui a un lien avec le problème.

    D'autre part, les classes TFiler et descendantes jouent également avec la propriété ComponentState... Il y a peut-être une info à trouver dans leur code source.

    Rien de concret dans tout ça, je sais, mais au moins tu as des pistes
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut
    Merci merci!

    Je teste et donne des nouvelles

Discussions similaires

  1. [Smarty] Assigner une valeur à une variable
    Par maysa dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/06/2008, 10h21
  2. Assigner une valeur à une variable dans un SELECT ?
    Par Danny Blue dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/11/2007, 08h19
  3. assigner une valeur à la propriété text d'un label
    Par Abac_Angelique dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/11/2007, 15h06
  4. Vector - assigner une valeur à un élément
    Par bouazza92 dans le forum SL & STL
    Réponses: 3
    Dernier message: 23/04/2006, 13h38
  5. [Débutant] Assigner une valeur à un char
    Par dib258 dans le forum C
    Réponses: 4
    Dernier message: 06/12/2005, 10h56

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