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

Delphi Discussion :

CALCUL on keypress


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 482
    Par défaut CALCUL on keypress
    Bonjour,
    je reviens vers vous :

    ce code je l'utilise dans l'évènement DBGrid1KeyPress mais le problème tout marche bien dans le DBGRID c'est à dire le calcul se fait normal en appuyant sur + et sur -, le problème est dans les :

    edit5.Text et memo2.Lines[0] qui ne sont pas à jour, je dois à chaque fois changer de ligne pour que le résultat est actualisé

    voir l'image ci-dessous :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    if key = #43 then
    begin
     
     if F_DM.Q_TotV.Active=true then F_DM.Q_TotV.Requery
      else F_DM.Q_TotV.Active:=true;   F_DM.Q_TotV.Requery ;
     
      F_DM.Vent_Int.Edit;
      F_DM.Vent_Int.FieldValues['Qtite'] := F_DM.Vent_Int.FieldValues['Qtite']+1 ;
      F_DM.Vent_Int.FieldValues['M_HT']:=F_DM.Vent_Int.FieldValues['Qtite']*F_DM.Vent_Int.FieldValues['Px_U'];
      F_DM.Vent_Int.FieldValues['TVA']:=F_DM.Vent_Int.FieldValues['M_HT']*F_DM.Vent_Int.FieldValues['Tx_TVA']/100;
      F_DM.Vent_Int.FieldValues['M_TTC']:=F_DM.Vent_Int.FieldValues['M_HT']+F_DM.Vent_Int.FieldValues['TVA'];
     
     
     
                 edit5.Text:=formatfloat('0.00',F_DM.Q_TotVsumTTC.Value);
                 memo2.Lines[0] :=formatfloat('0.00',F_DM.Q_TotVsumTTC.Value);
     
     
     
    end;
    if key = #45 then
     
    begin
      F_DM.Vent_Int.Edit;
     
      F_DM.Vent_Int.FieldValues['Qtite'] := F_DM.Vent_Int.FieldValues['Qtite']-1 ;
      F_DM.Vent_Int.FieldValues['M_HT']:=F_DM.Vent_Int.FieldValues['Qtite']*F_DM.Vent_Int.FieldValues['Px_U'];
      F_DM.Vent_Int.FieldValues['TVA']:=F_DM.Vent_Int.FieldValues['M_HT']*F_DM.Vent_Int.FieldValues['Tx_TVA']/100;
      F_DM.Vent_Int.FieldValues['M_TTC']:=F_DM.Vent_Int.FieldValues['M_HT']+F_DM.Vent_Int.FieldValues['TVA'];
     
     
     if F_DM.Q_TotV.Active=true then F_DM.Q_TotV.Requery else F_DM.Q_TotV.Active:=true;   F_DM.Q_TotV.Requery ;
           F_DM.Q_TotV.Close;
           F_DM.Q_TotV.Open;
     
     
     
                 edit5.Text:=formatfloat('0.00',F_DM.Q_TotVsumTTC.Value);
                 memo2.Lines[0] :=formatfloat('0.00',F_DM.Q_TotVsumTTC.Value);
     end;
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    N'avions nous pas conseillé des champs calculés ?
    Et pour les totaux, il n'y a grand chose à faire que manuellement

    Quelle est la question ?
    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

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 482
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Quelle est la question ?
    la question est la suivante :
    quand je sélectionne une ligne et j'appui sur [+] d'une manière répétitive le colonne Qtité et Total se mettent à jour
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Qtité---- Prix unitaire ---- total
    1                100                 100              ---- si j'appui sur [+] une fois le résultat devient
    Qtité---- Prix unitaire ---- total
    2                100                 200              ---- si j'appui sur [+] encore une fois le résultat devient
    Qtité---- Prix unitaire ---- total
    3               100                 300
    mais sur
    EDIT5 = 200 et memo2.Lines[0] = 200 --------- erronée normalement c'est EDIT5 = 300 et memo2.Lines[0] = 300

    pour que le résultat soit correct je doit quitter le dbgrid et rentrer

    c'est claire ?

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 627
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    N'avions nous pas conseillé des champs calculés ?
    Si, et d'ailleurs si cela avait été suivi cette question n'aurait même pas eu besoin d'être posée !

    mais surtout avec votre code, tant que la ligne n'est pas validée (post) le calcul ne peut être fait par une requête.
    Il me semble même avoir indiqué d'utiliser l'évènement AfterPost.

    Quant à ces requerys, pff ... autant faire un active.false; active:=true; cela a au moins le mérite d'éviter ces if then else ou alors que cela soit fait correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if F_DM.Q_TotV.Active=true 
      then F_DM.Q_TotV.Requery
      else F_DM.Q_TotV.Active:=true;  
    //   F_DM.Q_TotV.Requery ; // mais pourquoi donc ?

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 482
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Si, et d'ailleurs si cela avait été suivi cette question n'aurait même pas eu besoin d'être posée !

    mais surtout avec votre code, tant que la ligne n'est pas validée (post) le calcul ne peut être fait par une requête.
    Il me semble même avoir indiqué d'utiliser l'évènement AfterPost.
    comment valider la ligne ? ?
    doit je changer l'évènement ?

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 627
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par LandGreen Voir le message
    comment valider la ligne ? ?
    je vous l'ai écrit entre parenthèses : Post
    Citation Envoyé par LandGreen Voir le message
    doit je changer l'évènement ?
    déjà il faudrait l'avoir créer non ? en avous vous un ?
    Qu'est-ce que vous avez contre les champs calculés, c'est culturel ou quoi !?

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 482
    Par défaut
    je vous l'ai écrit entre parenthèses : Post

    merci bien, ça marche !

Discussions similaires

  1. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 04h09
  2. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35
  5. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45

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