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 :

[D5] récupération d’une instance de classe.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut [D5] récupération d’une instance de classe.
    Bonjour,
    J’ai une feuille de saisie contenant un certain nombre de TEdits, de TComboBoxes et de TRadioButtons. Lors de la validation, avant d’enregistrer, je souhaite contrôler l’exhaustivité de la saisie. Je suis donc en train d’essayer de bâtir une fonction :
    ControlePresence(TObj : TControl) : Boolean;
    Dans laquelle je passe l’objet à contrôler en paramètre et, dans un premier temps, s’il n’est pas vide la fonction doit retourner True.
    Mon problème réside dans mon incapacité à récupérer l’instance de l’objet que j’envoie en paramètre. Je suis débutant, je me suis plongé dans le guide de F Beaulieu ainsi que dans la prose de Laurent Dardenne « Les références de classe ou métaclasses » mais je ne m’en sort pas.
    Dans le code ci-dessous par exemple, le premier objet envoyé étant un TEdit, j’essaie de récupérer le contenu de la propriété Text mais je n’y arrive pas.
    Le Compilo me donne le message : Text identificateur non déclaré.
    Pourtant mes showmessage successifs me donnent : TEdit comme TObj.ClassName.
    Quelqu’un peut-il me sortir de l’ornière en m’expliquant ce que je ne fais pas correctement ?
    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
    Function  ControlePresence(TObj : TControl) : Boolean;
    var
      Edit : Tedit ;
      Combo : TComboBox;
      Radio : TRadioGroup;
    begin
      Result := False;
      if TObj is Tedit then
      begin
          showMessage('TObj est un: ' + TObj.ClassName);
        If TObj.InheritsFrom(Tedit) then
        begin
          showMessage('TObj est un: ' + TObj.ClassName);
          //Edit := Tedit.Create(TObj);
          //Edit.Parent := Self;
          //if TObj.Text <> '' then Result := True;
          //FreeAndNil(Edit);
    J'ai aussi essayé avec un constructeur mais c'est pas mieux.
    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Le Compilo me donne le message : Text identificateur non déclaré.
    Il faut transtyper l'objet pour avoir accès aux propriétés spécifiques.
    (Voir opérateur as dans l'aide Delphi)

  3. #3
    atb
    atb est déconnecté
    Membre très actif

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Par défaut
    Bonjour ,
    voici une fonction que j'ai devloppé pour fermer toutes les fenetres mdichild d'une aplication ça peut peut étre t'aider
    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
    function mCloseChild(Sender :TObject):Boolean;
    var child : TComponent;   vi :integer ;
    begin
    WITH (Application.MainForm as TForm) do
       begin
        result := true;
        for vi := 0 to MDIChildCount -1 do
           begin
           Child := MDIChildren[vi];
           if Child.Owner.Name = (Sender as TComponent).name then
              begin
              (Child as TForm).Close;
              result:=  (Child as TStrdModelFrm).doclose;
              if result=false then break;
               end;
           end;
       end;
    end;
    bonne journée à tous

  4. #4
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Citation Envoyé par atb
    Bonjour ,
    voici une fonction que j'ai devloppé pour fermer toutes les fenetres mdichild d'une aplication ça peut peut étre t'aider
    bonne journée à tous
    Merci atb j'ai pu avancer grâce à ton code.

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

Discussions similaires

  1. Suite Thread Simultanés: instances de classe differentes?
    Par macgile dans le forum Framework .NET
    Réponses: 3
    Dernier message: 04/01/2006, 09h50
  2. Exporter une instance de classe au format XML ou XMI
    Par Scorpion Rouge dans le forum Persistance des données
    Réponses: 2
    Dernier message: 22/12/2005, 11h19
  3. Réponses: 2
    Dernier message: 09/10/2005, 15h35
  4. Instance de classes
    Par KymZen dans le forum Tkinter
    Réponses: 9
    Dernier message: 07/04/2005, 08h35
  5. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16

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