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 :

Mise à jour d'une controle via une classe.


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Mise à jour d'une controle via une classe.
    Salut à tous.

    J'explique mon souci.
    Actuellement, je redeveloppe une petite appli que j'utilise au bureau en utilisant le consept POO.
    Donc pour simplifier la chose,
    - j'ai une classe qui a une propriété PropValue de type String.
    - j'ai aussi une fenetre avec un controle TEdit desuus et qui affiche la valeur de PropValue.
    Le problème, la valeur de PopValue peut changer plusieurs fois en fonction des calculs effectué au sein de la classe, et il me faut donc raffraichir le TEdit rattaché à cette valeur. Actuellement, la classe et la fiche se trouve dans la même unité donc je peux changer directement la valeur du TEdit.
    Or je veux séparer la definition de la classe et de la fiche contenant le TEdit pour une maintenance plus aisée, d'où la question, comment avertir la fiche que PropValue a changer de valeur.

    Merci
    On progresse .....

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Tu peux faire 2 choses

    • Creer un evenement a la nouvelle clase et le lancer ou SetPopValue
    • Creer a la nouvelle clase une property TEdit et lui passe

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut,

    Ok. Je vais me renseigner sur les evenements car de toute façon, je dois transformer ma classe en composant.

    Merci du tuyau.
    On progresse .....

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Pardon pour ma courte reponse, mais je n'avais beaucoup de temps

    Voisi un exemple de creation d'evenement et son utilisation

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TPropValueChange = procedure (OldValue, NewValue: string) of object;
     
      TMaClasse = class(TComponent)
      private
        FPropValue: string;
        FPropValueChange: TPropValueChange;
        procedure SetPropValue(const Value: string);
      public // ou published si tu veux faire un composant
        property PropValue: string read FPropValue write SetPropValue;
        property PropValueChange: TPropValueChange read FPropValueChange write FPropValueChange;
      end;
     
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        procedure MaPropValueChange(OldValue, NewValue: string);
      public
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      M: TMaClasse;
    begin
      M := TMaClasse.Create(Self);
      M.PropValueChange := MaPropValueChange;
      M.PropValue := 'loooooooooooooool';
      FreeAndNil(M);
    end;
     
    procedure TForm1.MaPropValueChange(OldValue, NewValue: string);
    begin
      Edit1.Text := NewValue;
    end;
     
    { TMaClasse }
     
    procedure TMaClasse.SetPropValue(const Value: string);
    begin
      if FPropValue = Value then Exit;
     
      if Assigned(FPropValueChange) then
        FPropValueChange(FPropValue, Value);
     
      FPropValue := Value;
    end;
     
    end.
    Un evenement doit se definir comme une procedure of object. Pour la reste je crois que c'est "facile", non?

    A+

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Merci beaucoup Cadetill.
    J'avais compris comment créer un evénement mais aujourd'hui, je comprend comment comment le declancher dans la classe.
    En faites, ma classe est plus compliqué que celui ennoncé mais je crois que c'est à moi de jouer maintenant.
    Si jamais, j'ai encore de problème, je reposterais sur ce fil.

    Encore merci
    On progresse .....

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

Discussions similaires

  1. Mise à jour de fichier excel via une BDD Access
    Par iliaseyah dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 20/08/2015, 14h23
  2. Mise à jour dynamique de champs via une étape javascript.
    Par losgoomy dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 10/12/2014, 17h54
  3. Mise à jour d'un GridView via une Webmethod
    Par acheo dans le forum ASP.NET Ajax
    Réponses: 7
    Dernier message: 16/02/2012, 18h02
  4. [AC-2003] Lier les tables d'une Base1 dans une Base3 via une Base2
    Par ted the Ors dans le forum VBA Access
    Réponses: 0
    Dernier message: 30/12/2009, 11h58
  5. Mise à jour d'un control entraine une reprise du focus
    Par skerdreux dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 02/12/2007, 21h36

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