Comment faire pour créer un composant TPanel qui n'accepte qu'un certain type de controle ?
Comment faire pour créer un composant TPanel qui n'accepte qu'un certain type de controle ?
Bonjour,
Voulez vous parler d'un dériver de TPanel qui ne pourrait être parent que de certain type de controle ?
Si c'est le cas vous devez écrire un composant dérivé de TCustomPanel et récrire la procédure InsertControl (qui vient de TWincontrol).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 procedure TWinControl.InsertControl(AControl: TControl);
Il est impossible de surcharger la procedure InsertControl car elle n'est pas virtuelle.
Voilà une tentative malheureuse:
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 unit ButtonsPanel; interface uses SysUtils, Classes, Controls, ExtCtrls; type TButtonsPanel = class(TCustomPanel) private { Déclarations privées } protected { Déclarations protégées } public { Déclarations publiques } procedure InsertControl(AControl: TControl); overload; published { Déclarations publiées } end; implementation procedure TButtonsPanel.InsertControl(AControl: TControl); begin if AControl.ClassName = 'TSpeedButton' then begin inherited InsertControl(AControl); end; end; end.
Effectivement.Envoyé par Herk77
Même si InsertControl aurait été surchargeable, ton code n'aurait pas marchéEnvoyé par Herk77
Il faut utiliser:
overload sert à déclarer 2 fonctions de même nom différenciée par leurs paramètres et/ou leur résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 procedure MaProcedure(...); override;![]()
Pedro
Aucune réponse aux sollicitations techniques par MP
Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)
Les pages Source C'est bon. Mangez-en!
Le défi Delphi
Règles du forum - FAQ Delphi - Pensez au chtit
Aéroclub Bastia Saint-Exupéry
ça je le saisEnvoyé par Pedro
![]()
mais je peux pas faire de override de InsertControl du coup j'ai tenté ma chance![]()
donc il n'y a pas moyen d'obtenir ce que je veux ?!![]()
![]()
Regarde du coté de :
Extrait de l'aide :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 procedure ValidateInsert(AComponent: TComponent); override;
ValidateInsert ne fait rien dans Tcomponent.Les classes descendantes peuvent la surcharger pour empêcher qu'un composant accepte l'insertion d'un objet sous forme d'enfant.Par défaut,ValidateInsert permet l'insertion de tout objet dans le composant.
Si un composant a besoin de ne valider que certains objets,les classes descendantes peuvent surcharger ValidateInsert pour filtrer ces objets.Pour empêcher une insertion,déclenchez une exception dans la méthode dérivée.
Voilou
@+
Birdyz
Partager