Bonjour,

Je souhaiterai écrire une fonction qui, à partir d'un handle d'un composant, me retourne un booleen me spécifiant si ce composant hérite d'un TEdit ou non.

Voici ce que je fais:

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
 
#define CLASSNAMEMAXSIZE 256
 
bool InheritsFromTEdit(HANDLE hWnd)
{
  if (hWnd == NULL)
    return false;
 
  //Get class name from the window handle
  char CrtClassName[CLASSNAMEMAXSIZE];
 
  if (GetClassName(hWnd,CrtClassName,CLASSNAMEMAXSIZE) <= 0)
    return false;
 
  //Get the class-reference type
  TMetaClass *CrtClass = GetClass(CrtClassName);
 
  if (CrtClass == NULL)
    return false;
 
  return (Application->InheritsFrom(CrtClass,__classid(TEdit)));
}
Malheureusement, la fonction 'GetClass' ne fonctionne qu'avec des classes enregistrées.

Connaissez-vous une fonction équivalente, fonctionnant aussi avec des classes non-enregistrées?

Sinon, petite remarque, dans l'aide borland de la fonction 'GetClass' on peut lire:

To obtain an unregistered class from a class name, use the __classid routine
Ceci est faux, puisque __classid prend en paramettre un 'class type', et non pas un 'class name'.

D'avance merci pour votre aide

Cordialement

Benjamin