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 :

Comment détecter une modification ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut Comment détecter une modification ?
    Bonsoir,

    j'aimerais savoir comment je peux faire pour détecter un quelconque
    changement dans mes formulaires

    c'est pour faire un boutton appliquer vous voyez tant que je n'ai rien changé le boutton appliquer est enable := false;
    mais dès que je change qqchose il le mets a enabled := true;

    c'est pour ne pas répeter la meme chose plusieur fois dans les évenements onclick et tout ça

    Merci

  2. #2
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    760
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 760
    Points : 499
    Points
    499
    Par défaut
    Que veut tu dire par formulaire ? une fiche pleine de TEdit , Tmemo..
    Si oui je pense que tu devras passer par tout tes composants , et dans leur evenement Onchange appeler une fonction générale à tout tes composants qui fera ton traitement . Par contre si tu rentre dans une edition sans faire de modification , il le verra comme une modification , si cela est genant , tu dois gerer les evenements OnEnter et OnExit et comparer le contenue de l'editeur.

    bye

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Je veux pas paraitre rabasjoie mais n'ya t'il pas d'autre solutions les gars?

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par programaniac
    Je veux pas paraitre rabasjoie mais n'ya t'il pas d'autre solutions les gars?
    Est-ce si terrible que ça ? A moins que tu n'aies déjà un gestionnaire OnChange spécifique pour chacun de tes contrôles, tu peux utiliser le même pour tous, et y modifier l'état de ton bouton ==> une seule ligne de code

  5. #5
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    Le Sujet (le titre de message) doit être Explicatif.
    Bon courage a tous.

  6. #6
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Une solution également, qui est sympa en cas de changement de ton formulaire dans 6 mois et pour éviter d'oublier d'affecter 'OnChange' à tes nouvelles zones est d'affecter dynamiquement l'évenement à l'ouverture de la fiche (un peu plus lent mais imperceptible en général)

    Evenement générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.ElementChange( Sender: TObject )
    begin
      MonBouton.Enabled := True;
    end;
    Affectation de l'évenement générique sur tout tes TEdits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFStat6.FormShow(Sender: TObject);
    begin
      // remplissage des tes zones, d'abord pour 
      for i := 0 to Self.ComponentCount - 1 do
        if ( Self.Components[ i ] is TEdit ) or 
           ( Self.Components[ i ] is TMemo ) // rajouter les classes que tu veux
          then TCustomEdit( Self.components[ i ] ).OnChange := ElementChange;
    end;
    Attention, l'évt OnChange n'est dispo qu'à partir de la classe TCustomEdit.
    Si tu veux faire de même pour des CheckBox par exemple, tu devras affecter l'évenement OnClick, etc.. selon la nature de tes composants.

    OU BIEN tu décides de gérer les changement au niveau de Enter ou Exit, et la tous tes composants, qui descendent forcément d'un TWinControl, auront l'évt Enter ou Exit. Cela simplifie les differents cas à prendre en charge au niveau de l'affectation de l'evt des composants

    Dans ce cas le code dans le show est simplifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for i := 0 to Self.ComponentCount - 1 do
        if Self.Components[ i ] is TWinControl
          then TWinControl( Self.Components[ i ] ).OnExit := MonExit;
    mais bon, il faudrait comparer avec le OnEnter... générique bien sur... pour avoir tafonctione MonBouton.Enabled sur une réelle modif de la zone

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/07/2007, 13h53
  2. [VBA] Détecter une modification sur formulaire
    Par BaRonm3 dans le forum Access
    Réponses: 10
    Dernier message: 21/06/2006, 12h12
  3. Réponses: 10
    Dernier message: 16/05/2006, 14h13
  4. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 10h40
  5. [VCL] Comment détecter une combinaison de touches ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2005, 14h19

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