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 "standard" sur DBCtrlGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut composant "standard" sur DBCtrlGrid
    Bonjour tout le monde,

    j'utilise un composant TDBCtrlGrid pour afficher les différents champs de ma base de données dans des composants Delphi DB différents. ça fonctionne très bien jusqu'à maintenant.

    J'aimerais ajouter à la liste de mes composant un nouveau contrôle non lié à la BDD qui serait rempli par code d'après plusieurs critères (Un TEdit par exemple). Ce champ pourra donc contenir une valeur différente pour chaque enregistrement de la BDD. Sa valeur ne sera pas stockée dans la base de données mais calculée au moment de l'affichage.

    J'aimerais savoir comment il est possible de gérer les propriétés des composants de chaque "panel" du DBCtrlGrid séparément afin de pouvoir traiter chaque enregistrement différemment et de configurer le composant "non data aware" d'une manière différente. Est-ce possible avec DBCtrlGrid? Si non, existe-t-il un autre composant qui pourrait m'aider?

    Pour l'instant, si je change la valeur d'une propriété de mon composant, cette valeur est changée sur tous les panels du DBCtrlGrid.

    J'espère que vous comprendrez ma requête.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    un champ calculé me semble plus indiqué non ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Salut Paul Toth, merci de ta réponse.

    En fait, par la suite il y aurait, en plus du label, un graphique complet pour chaque enregistrement de la BDD. Je devrai donc renseigner les données de chaque graphique via du code. J'aurai alors besoin d'accéder physiquement à chacun des composants graphiques. Pour ce cas là, je n'aurai donc pas la possibilité de stocker les informations dans la BDD. Y a-t-il un moyen d'accéder séparément à chaque composant généré dynamiquement par le DBCtrlGrid?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je n'ai jamais regardé comment fonctionne ce composant mais après un rapide coup d'oeil j'ai l'impression qu'il ruse avec des bitmaps

    tu n'as donc en réalité qu'un seul exemplaire de ton composant et il est modifié si la bdd change.

    ce qui revient donc à utiliser un champ calculé, lequel champ n'est - par définition - pas stocké dans la BDD
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    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 093
    Par défaut
    Je ne suis pas convaincu de l'utilisation d'un TEdit dans un TDBCtrlGrid
    Utilise un TDBEdit et un champ calculé comme le conseille Paul Toth

    Voir si la valeur ne peut pas être directement calculé par le SQL
    Si tu ne veux pas utiliser un champ calculé, tu peux ajouter un champ "bidon" dans ton SQL (juste pour l'avoir dans Fields) et le définir par OnGetText

    On a eu un sujet sur comment ajouter des champs dans un DataSet déjà ouvert (ce qui n'est pas faisable normalement), si je le retrouve !
    cela pourrait te plaire aussi !
    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

  6. #6
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Bonjour à vous deux et encore merci pour votre réponse.

    Pour mon champ edit, le champ calculé me semble effectivement très utile en utilisant un TDBEdit.

    Je garde cependant un problème concernant mon composant graphique. Celui-ci ne peut pas être lié à une base de données, je le remplit donc manuellement pour chaque enregistrement de ma BDD. Comment puis-je faire pour accéder à chacun des graphiques séparément?

    merci encore

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    même solution un champ calculé de type Graphic avec un TDBImage

    quand tu dis "Celui-ci ne peut pas être lié à une base de données, je le remplit donc manuellement pour chaque enregistrement de ma BDD" cela correspond exactement à un champ calculé.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Salut Paul TOTH, Merci de ta réponse,

    je ne suis pas sure de bien comprendre. COmme tu as pu le remarqué, la notion de champ calculé est nouvelle pour moi

    Citation Envoyé par Paul TOTH Voir le message
    même solution un champ calculé de type Graphic avec un TDBImage
    Est-ce que cela signifie que mon composant graphique devra apparaître comme une image à l'écran et qu'il perdra ses propriétés comme la possibilité de faire un zoom ou de cliquer sur les valeurs du graphique par exemple ?

    Merci d'avance

  9. #9
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    ah ok, tu as un composant spécifique, je n'avais pas compris.

    Non si tu veux faire cela tu vas devoir créer un dérivé de ce composant qui soit DBAware

    si mon souvenir est bon, il faut ajouter un TDataLink à ton composant pour qu'il soit informé des modifications du datasource...à moins que tu ne le code au niveau du DataSet.OnChange ou équivalent (à creuser)...le but est que ton composant affiche toujours les données liées à l'enregistrement courant de la base. Ensuite TDBCtrlGrid se charge d'afficher ton composant là ou il le faut en autant d'exemplaires que nécessaire.

    par contre tu vas t'amuser pour gérer des niveaux de zoom différents pour chaque exemplaire, d'autant qu'il y en a virtuellement autant que d'enregistrements dans la base
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Merci de ta réponse, je vais essayer de voir du côté des TDataLink. J'avais fait l'essai au niveau du OnChange de mon dataset. L'affichage des différents graphiques sur le DBCtrlGrid était bon mais dès que je cliquais sur l'un des graph, pour faire un zoom par exemple, le zoom était appliqué à tous les autres graphiques aussi

    Pour l'instant j'ai trouvé une solution intermédiaire qui consiste à me passer du TDBCtrlGrid et de créer dynamiquement moi-même mes composants. ça marche pas trop mal, on verra le résultat final.

    En tout cas merci de ton aide et de tes explications

  11. #11
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Nono23 Voir le message
    Merci de ta réponse, je vais essayer de voir du côté des TDataLink. J'avais fait l'essai au niveau du OnChange de mon dataset. L'affichage des différents graphiques sur le DBCtrlGrid était bon mais dès que je cliquais sur l'un des graph, pour faire un zoom par exemple, le zoom était appliqué à tous les autres graphiques aussi
    évidemment, c'est ce que je te disais, tu as potentiellement autant de niveau de zoom que d'enregistrements dans ta base, une merde à gérer.

    à ta place je ne laisserai qu'un seul graphe interactif lié à l'enregistrement actif...et éventuellement un graphe statique pour chaque enregistrements.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. [Quote] DVP quoté sur Bashfr
    Par Skyounet dans le forum La taverne du Club : Humour et divers
    Réponses: 16
    Dernier message: 26/09/2006, 18h52

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