Insérer dynamiquement un TRichEdit dans un onglet d’un TabbedNotebook.
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 :
Code:
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);
} |
Ce qui se passe :
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.