Canvas dans TabPanel

Bonjour,
Je voudrais savoir la marche à suivre pour inclure des Canvas ou des containers dynamiquement dans un TabPanel.
J’ai consulté les posts qui pourraient en parler mais en vain.
Merci

Ceci a changé en fonction de la version de Xojo que tu utilise.

Ma version très très ancienne :
2016 Release 4.1

Pas glop !!

Regarde New dans le Language Reference.

Tu as la méthodologie et un exemple sur un PushButton, etc…

ok
Je sais ajouter un Container dans une Window (EmbedWithin), c’est peut-être la même démarche ?

Non.

Essaie:

Dim aCanvas As Canvas1

aCanvas New Canvas1
aCanvas.Left = Canvas1.Left
// + 10: espacement vertical entre les deux Canvas…
aCanvas.Top = Canvas1.Top + Canvas1.Height + 10

ça ne marche pas avec Xojo 2021r2.1 (Monterey / M1).

Le code original (même version) est:
Dim pb As PushButton
pb = New PushButton1
pb.Caption = “Clone”
pb.Left = Me.Left + Me.Width + 10

Mais ça ne marche pas avec Xojo 2021r2.1 (Monterey / M1).

Ça devrait marcher avec ta version.

J’ai remplacé Var par Dim.

Attends, je veux juste inclure des canvas dans une page de mon Tabpanel.
J’ai plusieurs pages et je ne veux pas les alimenter au départ.

J’ai compris. Qu’ai-je écrit qui ne soit pas bon ? (qui te fait écrire cela ?)

Comment tu attribues ton pushbutton au Tabpanel 1 ?

Mon code clone un Canvas. J’ai ajouté le code sur PushButton car c’est l’original de la doc.

Q: Comment attribues-tu un Canvas au TabPanel ?
R: Tu le place dans le TabPanel et un rectangle rouge (d’attribution, signalant le parent du Canvas) est dessiné autour du TabPanel.

Le code duplique un Canvas (Canvas1) que tu as placé dans l’IDE, avant la compilation. Les lignes avec aCanvas.Left et aCanvas.Top placent aCanvas aligné à gauche et dessous (10 pixels plus bas) que Canvas1.

Essaie.

Allo ? Il y a quelqu’un ?

Patrick ?

La méthode originale, illustrée par Emile, s’attend à ce que vous ayez un canevas sur le panneau d’onglets au moment du design.
Donnez-lui un index de 0 (non vide), afin que Xojo sache que vous voulez les traiter comme un tableau.

Rendre visible = faux

Votre toile d’origine peut s’appeler Canvas1
Alors:

dim NewCanvas as new Canvas1
NewCanvas.visible = true
NewCanvas.top = ?
NewCanvas.left = ?

ca serait plus simple de faire un containercontrol avec juste un canvas dedans,
et d’utiliser embedwithin apres.

C’est bien çà.

OK, J’ai saisi.

il est vrai aussi Jean-Yves_Pochez est dans le vrai, je connais la méthode avec les containers car je l’applique assez souvent dans mes Windows, je n’y avais pas pensé.

Merci à tous.

1 Like