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
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
salut
c'est volontaire le TField ne concerne que le champs
le cancel ou autre joyeuseté concerne le TDataSet ... un niveau au dessus
Blaise PascalNous 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.
PS : n'oubliez pas le tag
Tdataset post est aussi une joyauseté et pourtant onckange est déclanché
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 ?
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
ne serait-il pas mieux d'utiliser un champ calcul et l'événement onCalcField ?
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;
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
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
salut
normalement les TAggregatField sont fait pour cela
dans le pire des cas tu Recalcule sur le onAfterpost, onAfterCancel ou onAfterDelete du TDataset
Blaise PascalNous 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.
PS : n'oubliez pas le tag
Je crois qu'il faudrai ajouter AfterOpen , onfilter, afterRefresh dans le cas Master-Detail
salut
as tu essayé dans le OnUpdateRecord du TDataset ?
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
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
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 ?
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
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
salut
les Propriete OldValue et NewValue du Tfield peut être
Blaise PascalNous 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.
PS : n'oubliez pas le tag
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager