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 :

TField.Onchange


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut TField.Onchange
    L'evenement TFIELD.ONCHANGE est declenché apres avoir modifier le champ tfield mais n'est pas declenché apres un cancel ou cancel update ?

    Peut on changer cette action ?
    Est ce une omission?

    Merci.

    Medhome

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut


    c'est volontaire le TField ne concerne que le champs
    le cancel ou autre joyeuseté concerne le TDataSet ... un niveau au dessus
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Tdataset post est aussi une joyauseté et pourtant onckange est déclanché

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    j'avoue que c'est un joyeux sac de nœud pour retrouver ses petits et utiliser les événements à bon
    escient

    que cherche tu as "trapper" et pour quel utilisation ?
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Apres tdataset.refresh je calcul la somme de tfield apres changement du tfield je met à jour somme mais apres annulation du tfield la somme doit etre remise à jour .

    Ps : j'utilise cached

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    ne serait-il pas mieux d'utiliser un champ calcul et l'événement onCalcField ?

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Il s'agit de la somme verticale d'un grid.

    On doit pouvoir faire apres annulation valeur de field:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    onChange updateSom(field)
     
    proc updateSom( field:Tfield)
     
    Som:=som+field.value-field.oldvalue;

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Mon avis, pour ce qu'il vaut, est que l'affaire est mal engagée car nous n'avons pas eu, jusqu'à présent, un exposé clair du problème.
    ce "Il s'agit de la somme verticale d'un grid" change complètement la donne.
    De là je me pose des questions sur le fait que ces cumuls soient dans la grille, cela dit, il existe des composants grille qui permettent ces cumuls dans se poser de question.

    En tout cas, je n'utiliserai pas de TField.onChange mais une bonne petite requête
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Si je comprends bien vous voulez refaire le cumul à chaque changement de TField?

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par medhome Voir le message
    Si je comprends bien vous voulez refaire le cumul à chaque changement de TField?
    si la question s'adresse à moi, c'est non : Je ne lancerai la requête qu'aprés un post (AfterPost pour être précis). De plus ma longue expérience m'a largment prouvé qu'utiliser des TField.Onchange de même que des AftrerScroll n'était pas vraiment de bonnes idées car ce sont des évènments trop souvent levés.
    Comme vous semblez être de ces personnes qui fournissent les informations au compte gouttes, sans même indiquer la version de Delphi utilisée, ni de façon précise le besoin je n'irai pas plus loin
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    normalement les TAggregatField sont fait pour cela

    dans le pire des cas tu Recalcule sur le onAfterpost, onAfterCancel ou onAfterDelete du TDataset
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je crois qu'il faudrai ajouter AfterOpen , onfilter, afterRefresh dans le cas Master-Detail

  13. #13
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    as tu essayé dans le OnUpdateRecord du TDataset ?
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je veux juste savoir pourquoi TFIELD.CHANGED n'est pas déclenché apres cancelUpdate ou plus simplement cancel. je ne demande une autre solution.
    Merci

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Est-ce qu'une réponse à la volée : "parce qu'il n'y a pas de changement de la valeur du champ si vous faites un Cancel" parait suffisant comme explication ?
    Sinon faites des recherches dans les sources et regardez la hiérarchie des évènements.

    Je suis persuadé que si l'on avait de vraies explications de l'objectif on y verrait certainement plus clair. Tout ce que l'on a c'est une indication d'utilisation de grille et un pseudo code
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je pense que c'est clair :

    on effectue la somme d'une ou plusieurs colonnnes d'un GRID apres un Open, Refresh ..... du dataset, quelque soit la methode .( SQL , Boucle ...)
    Si un tfield change de valeur la somme est seulement recalculée som=som+field.value-field.oldvalue. Dans ce cas TFIeld.onchange convient .

    Pour moi cancelUpdate change la valeur de Tfield.value ?

  17. #17
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    tu résonne en champs mais base en BD le champs tans que tu n'as pas fait de post la valeur dans la bd n'est pas changé
    si tu fait un cancel la valeur ne change pas

    ce qui compte c'est la valeur intégré dans la BD pas celle qui est affiché a un moment t
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  18. #18
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Salut

    Dans ce cas où se trouve la valeur affichée pres le cancel et surtout comment l'atteindre , ceci résoudra ce problème.

    Merci

  19. #19
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    les Propriete OldValue et NewValue du Tfield peut être
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Récupérer événements OnChange&OnScroll de ScrollBox
    Par bohort dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/09/2004, 10h24
  2. [struts] onChange
    Par DeeJimy dans le forum Struts 1
    Réponses: 3
    Dernier message: 12/07/2004, 14h16
  3. Procedure d'evenement OnChange
    Par Alain Dionne dans le forum ASP
    Réponses: 2
    Dernier message: 26/05/2004, 21h59
  4. [struts] onchange et mapping
    Par k4eve dans le forum Struts 1
    Réponses: 7
    Dernier message: 26/04/2004, 16h21
  5. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04

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