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

Langage Delphi Discussion :

RegisterClass sans effet


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut RegisterClass sans effet
    Bonjour

    Je voulais faire une procédure tout simple de création de TForm par nom de class mais y'a un truc qui coince.

    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
    procedure Creer(FrmName: string); overload;
    var
      fc: TFormClass;
      S: string;
    begin
      S := 'T' + FrmName;
      if GetClass(S) <> nil then
      begin
        fc := TFormClass(FindClass('T' + FrmName));
        Creer(fc);
      end;
    end;
     
    initialization
     
    RegisterClass(TFormTest);
    Problème: Si je passe 'FormTest' en paramètre, le GetClass renvoie nil et la procédure ne fait rien.

    J'ai loupé quoi ?

    Je précise que l'unité qui définit TFormTest est bien dans les uses de l'unité qui implémente ce code

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Sinon cela se simplifie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure Creer(const FrmName: string); overload;
    var
      fc: TFormClass;
    begin
      fc := TFormClass(GetClass('T' + FrmName));
      if fc <> nil then
        Creer(fc);
    end;
    le RegisterClass est dans initialization de quelle unité ? celle de Creer ou celle de TFormTest ?
    TFormTest n'est pas éliminé par le lieur ?
    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 émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    Initialization est dans l'unité où se trouve la procédure Creer.

    J'ai vérifié, on passe bien dedans au lancement du programme.

    La TFormTest est nommée comme ça juste ici. Dans le projet, c'est une classe TFormClient utilisée plusieurs fois.
    Elle est donc connue et enregistrée.

    D'ailleurs, si dans la même fonction je fais un TFormClient.Create(nil) tout se passe bien.
    C'est juste que le GetClass ne trouve pas la classe malgré le RegisterClass.

    Par contre, cette TFormClient hérite d'une feuille ancêtre. Est-ce que ça peut jouer ?

Discussions similaires

  1. [forms 6i]execute_query sans effet
    Par pjcejbpojo dans le forum Forms
    Réponses: 11
    Dernier message: 28/04/2006, 18h08
  2. [AJAX] Fontion JS sans effet
    Par LoK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 15h43
  3. Combo sans effet
    Par GBW067 dans le forum Sécurité
    Réponses: 5
    Dernier message: 29/01/2006, 08h48
  4. Requête UPDATE sans effet
    Par Death83 dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/01/2006, 02h23
  5. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 11h32

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