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 :

Jouer avec TEdit


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Par défaut Jouer avec TEdit
    Hi,

    Je ne suis pas expert en termes de développements de composants donc j'aurais besoin d'un peu d'aide. Mon problème est un peu plus compliqué que ce que je vais décrire ci-dessous, mais j'ai simplifié pour une meilleure compréhension.

    Avec un TEdit, il est toujours possible de modifier les informations entrées en écrivant quelques lignes de code dans l'événement OnExit. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      Try
        (Sender As TEdit).Text:=IntToStr(StrToInt((Sender As TEdit).Text)*2);
      Except
        MessageDlg('La donnée entrée n''est pas un entier !',mtError,[mbOK],0)
      End;
    end;
    Ici en l'occurrence, je multiplie la valeur entrée par 2.

    La question est la suivante : est-il possible de dériver un TEdit pour qu'il effectue cette multiplication par 2 de manière automatique, c'est à dire sans qu'il soit nécessaire de rentrer du code dans l'événement OnExit ? Le code qui effectue la multiplication par 2 serait donc encapsulée quelque part dans le composant dérivé (mais où ?).

    En fait, la finalité serait de pouvoir intercepter une heure introduite sous le format 8.45 et de la réafficher sous le format 08:45 ou sous le format 8.75 (minutes exprimées en centièmes d'heure). Idéalement, le composant hérité serait doté de propriétés complémentaires qui stockeraient ces trois valeurs.

    Merci pour vos avis éclairés.



    JJE

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    Il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    type
      TMyEdit = class(TEdit)
      protected
        procedure DoExit; override;
      end;
     
    ...
     
    procedure TMyEdit.DoExit;
    begin
      Text:=IntToStr(2*StrToIntDef(Text,0));
     
      inherited;
    end;
    En fait, par convention de codage, tous les évenements des composants sont appelés depuis une procedure DoSomething. Il suffit donc de modifier cette procedure, sans oublier d'utiliser inherited !

    Bonne chance !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Par défaut
    Merci Mick,

    C'est effectivement ce qu'il me fallait. Le "DoSomething" m'avait échappé. Il faut dire aussi que ce n'est pas très bien documenté. Cette convention n'est abordé qu'une minuscule fois dans les 1280 pages que constitue le guide de référence de Delphi 6.

    Grand merci.



    JJE

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

Discussions similaires

  1. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 11h01
  2. Une bibliothèque pour faire autre chose que jouer avec ma carte graphique ?
    Par Neilos dans le forum Coprocesseurs et calcul hétérogène
    Réponses: 7
    Dernier message: 09/11/2006, 10h51
  3. Réponses: 3
    Dernier message: 08/11/2006, 14h06
  4. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 14h15
  5. Probleme avec TEdit
    Par MDiabolo dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/12/2005, 01h09

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