Bonjour à tous,
Habituellement, je trouve la plus part des réponses à mes questions dans la FAQ C++ Builder, mais là, malgré des recherches, je n’ai pas trouvé.
Je vous expose mon problème :
Création dans l’EDI :
Dans une Form1, je dépose un TTabbedNotebook et un TListBox. Dans le TabbedNotebook, j’ inséré un TRichEdit dans l’onglet par défaut.
Création dynamique :
Au cours de l’application, lorsque l’on double-clique sur un item de la ListBox, je souhaite ajouter dynamiquement un onglet au TabbedNotebook et y insérer un TRichEdit dont je conserve l’adresse dans un TList onglet.
J’utilise le code suivant :
Ce qui se passe :
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 void __fastcall TForm1::ListBox1DblClick(TObject *Sender) { // Création du nouvel onglet int i = ListBox1->ItemIndex; AnsiString titre = ListBox1->Items->Strings[i]; TabbedNotebook1->Pages->Add(titre); // Création du RichEdit TRichEdit *richEdit = new TRichEdit(TabbedNotebook1); richEdit->Parent = TabbedNotebook1; richEdit->Align = alClient; richEdit->Enabled = true; richEdit->Visible = true; richEdit->Show(); // L'ajouter dans le TList onglet->Add(richEdit); }
Au démarrage de l’application, j’ai bien le RichEdit dans l’onglet par défaut
Lorsque je double clique sur un item de la ListBox, j’ouvre bien un nouvel onglet contenant le nouveau RichEdit qui s’affiche
Lorsque je sélectionne le premier onglet créé dans l’EDI, je vois le RichEdit correspondant.
Mais ô damned, lorsque je sélectionne à nouveau l’onglet créer dynamiquement, le nouveau RichEdit à disparu.
Peut-être un problème de Parent ou de Owner, mais je ne vois pas comme leurs attribuer l’onglet sélectionné du TabbedNotebook alors que cela se fait automatiquement lors de la création dans l’EDI.
Merci pour votre aide.
Partager