Gambas France BETA


Pas de compte ? Incription

Copier un controle ou un conteneur et ses enfants

À propos de ce code

Et oui ce n'est pas dans les outils de Gambas ...

Mais c'est assez simple a obtenir avec une simple petite fonction récursive qui va générer un nouvel objet du même type puis rappeler la fonction si c'est un conteneur avec des enfants pour chacun des enfants.

Ce n'est pas tout a fait ce que je voulais obtenir car je voyait plutôt une surcharge de la classe contrôle ... mais pour l'instant un bogue de gambas m'en empêche, mais comme d'habitude ce sera vite résolus :)

Code source

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
PUBLIC SUB ControlCopy(hControl AS OBJECT, Parent AS Container) AS OBJECT

DIM hNewMe AS OBJECT = Object.New(Object.Type(hControl), [Parent]) 'on génère un objet de la même classe
DIM s AS STRING
DIM hclass AS Class = Object.Class(hControl)
DIM hChild AS OBJECT
'On copie les propriétés
FOR EACH s IN hclass.Symbols
IF s = "Chlidren" THEN CONTINUE
IF NOT hclass[s].ReadOnly THEN Object.SetProperty(hNewMe, s, Object.GetProperty(hControl, s))

NEXT

'Bon la en vrai Basic j'aurais du passé par un goto :/
'en gros si ce n'est pas un conteneur on quitte et on retourne le nouvel objet
IF NOT hclass.Symbols.Exist("Children") THEN RETURN hNewMe

'On copie les enfants
FOR EACH hChild IN hControl.Children
ControlCopy(hChild, hNewMe)
NEXT
'On retourne l'enfant
RETURN hNewMe

END

Commentaires