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 :

OnChange sur l'IHM


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut OnChange sur l'IHM
    Salut,

    voilà, je voudrais mettre en place un événement OnChange qui serait généré lors de modifications dans mon IHM sur les TEdit, TCheckBox, TComboBox, ....

    Je pourrais bien sur utiliser les événements OnChange de chaque contrôle mais ça me demanderai de modifier beaucoup de fenêtre existante (environ 50) et je ne trouve pas la solution super élégante.

    Avez vous une idée/solution pour centraliser tout ça ?
    merci d'avance
    FG

  2. #2
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Idée:

    Pour chaque composant que tu cites, faire un descendant qui implémente une interface avec la
    méthode OnDataChange dans un premier temps, ensuite passer tous les .pas et .dfm en renommant les classes par leur
    descendant implémentant l'interface.

    J'essaierai avec un composant, voire l'un après l'autre de façon ittérative sur une copie du projet, d'abord sur une
    fiche, puis sur l'ensemble des fiches.

    Si cette étape fonctionne, le reste devrait suivre.

    EDIT: J'ai donné un nom de propriété, mais il faut raisonner avec des méthodes, c'est une piste.

    TCheckbox n'a pas d'événement OnChange.

  3. #3
    Membre averti
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    Pourquoi pas, mais je devrais quand même modifier toutes mes fiches, et je devrais aussi penser à utiliser cette méthode pour les nvlles.

    Je viens de penser à une autre démarche: faire une classe mère commune à toute mes fiches, et tester dans cette classe tous les évènements Windows (avec l'objet TApplicationEvents) pour filtrer ceux qui m'intéressent.
    Il suffit alors de savoir qu'elles événements sont générés par mes contrôles TEdit, TCheckBox, TComboBox, .... lors d'un changement pour appliquer mon traitement.

    Qu'en pensez vous ?

  4. #4
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Ce mécanisme d'interception des changements de valeurs de champs existe pour tous les contrôles orientés données: TDBEdit, TDBCheckBox, etc ... .

    C'est le composant TDatasource qui se charge d'intercepter les événements conçernant il est vrai que les champs d'une table à la fois.

    J'ai jamais utiliser le composant TApplicationEvents.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    Tu pourrais aussi t'inspirer de cet article:
    http://en.literateprograms.org/Apply...hi)?oldid=2979

  6. #6
    Membre averti
    Profil pro
    frTRYER
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : frTRYER

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    merci pour l'article ... je vais l'étudier de près, mais ça semble correspondre à ce que je voudrais faire.

  7. #7
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    En utilisant une interface, on s'affranchit des contraintes liées à l'héritage à savoir, que les composants doivent avoir un ancêtre commun si on veut profiter du polymorphisme.

    A partir du moment ou un composant implémente l'interface, il suffirait de parcourir les composants d'une form et de les rajouter dans une liste s'ils implémentent l'interface. Cette liste serait un attribut d'une classe qui détecterait les modifications faites dans l'IHM.

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

Discussions similaires

  1. Petite question sur une IHM
    Par beb30 dans le forum MFC
    Réponses: 12
    Dernier message: 10/04/2006, 15h19
  2. [Onchange] sur checkbox selection ds une liste deroulante
    Par maxxou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 00h17
  3. onChange sur Checkbox prob IE vs FireFox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/11/2005, 09h02
  4. Question sur les IHM
    Par Aradesh dans le forum MFC
    Réponses: 10
    Dernier message: 03/03/2005, 15h09
  5. Gestion OnChange sur une sorte d'éditeur de propriétés
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 29/09/2004, 09h59

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