TTabSheet et TMemo (suppression)

cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 - 16 nov. 2008 à 15:21
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 - 17 nov. 2008 à 16:45
Bonjour,

Je suis entrain de faire un éditeur de texte avec une gestion de chaque fichier dans un TTabSheet (mis dans un TPageControl).
Dans le TTabSheet, il y a un TMemo.

Je voudrais savoir comment faire pour pouvoir supprimer les deux.
Je m'explique, imaginons deux fichiers : test.html et test.php

Je supprime le premier à gauche qui est test.html, je voudrais pouvoir ensuite supprimer test.php (le TTabSheet) sachant que je les crée dynamiquement dans un tableau.

Là actuellement j'ai tenté avec un Pagecontrol1.ActiveIndex, mais dans ce cas là, le second pas supprimable vu qu'il aura le numéro 0, donc pour supprimer dans mon tableau de TTabSheet ça va foirer.

Merci d'avance.

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 nov. 2008 à 17:24
bonsoir,


pas clair, supprimer fichier ou TTabSheet ?

cantador
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
16 nov. 2008 à 17:25
Quand je clique sur Fermer dans le menu Fichier, je souhaite supprimer le TMemo se trouvant dans le TTabSheet puis supprimer celui-ci.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 nov. 2008 à 17:51
Salut,

soit un peut plus précis ... donne un bout de code pour illustrer

toi tu sais de quoi tu parles mais nous nous n'avons aucune idée alors si il faut d'abord deviner ...

 
@+
Cirec

<hr siz="" />
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
16 nov. 2008 à 19:12
Aucun soucis (dsl d'avoir pas filer du code avant), voici ma fonction qui crée un TSynMemo (basé sur un TMemo mais gérant la coloration syntaxique) et créer un TTabSheet, le TSynMemo comme enfant du TTabSheet et le TTabSheet comme enfant du TPageControl :

procedure TForm1.CreateTab(InfosFile: TNewFile);
var
NameFile: String;
begin
NameFile := InfosFile.NameFile+InfosFile.ExtensionFile;

{Alloue un espace supplémentaire dans chaque tableau}
SetLength(TabSheet, FilesLoaded+1);
SetLength(TextFile, FilesLoaded+1);

{Création de l'onglet}
TabSheet[FilesLoaded] := TTabSheet.Create(PageControl1); //Crée l'onglet
{Indique à quel PageControl il appartient}
TabSheet[FilesLoaded].PageControl := PageControl1;
TabSheet[FilesLoaded].Caption := NameFile; //Définit le nom de l'onglet
TabSheet[FilesLoaded].Tag := FilesLoaded;
TabSheet[FilesLoaded].Show; //L'affiche

{Création du champ texte avec coloration syntaxique}
TextFile[FilesLoaded] := TSynMemo.Create(TabSheet[FilesLoaded]);
TextFile[FilesLoaded].Parent := TabSheet[FilesLoaded]; //Indique le composant parent
TextFile[FilesLoaded].Align := AlClient; //Indique l'alignement
TextFile[FilesLoaded].Lines.Clear; //Vide le contrôle
TextFile[FilesLoaded].Gutter.ShowLineNumbers := True; //Affiche le numéro des lignes
TextFile[FilesLoaded].WantTabs := True;
TextFile[FilesLoaded].TabWidth := 4;
TextFile[FilesLoaded].Options := [eoAutoIndent,eoDragDropEditing,eoGroupUndo,
    eoShowScrollHint,eoSmartTabDelete,eoSmartTabs,eoTabsToSpaces,
    eoTrimTrailingSpaces];
TextFile[FilesLoaded].Show; //L'affiche

if (InfosFile.TypeFile = 'HTML') then TypeHTML(InfosFile);
if (InfosFile.TypeFile = 'PHP') then TypePHP(InfosFile);
if (InfosFile.TypeFile = 'CSS') then TypeCSS(InfosFile);
if (InfosFile.TypeFile = 'SQL') then TypeSQL(InfosFile);
Inc(FilesLoaded); //Ajoute un nouveau fichier chargé/créer
end;

Les quelques fonctions appelé à la fin sont pas importantes, elle permettent juste d'indiquer des informations de base dans le Text du TSynMemo suivant le type de fichier.

J'ai donc au final un ensemble de TTabSheet et je désire pouvoir par exemple fermer le premier qui est donc détruit et pouvoir faire pareil sur le suivant.

Voici le code que j'ai tenté d'écrire et qui fonctionne pas :
procedure TForm1.Fermer1Click(Sender: TObject);
begin
TextFile[PageControl1.Tag].Free;
TabSheet[PageControl1.Tag].Free;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
PageControl1.Tag := TabSheet[PageControl1.ActivePageIndex].Tag;
end;

Merci pour ton aide.

P.S. : Pas d'explication sur ma manière de faire, car c'est totale pourris et pas fonctionel, j'ai juste chercher à faire fonctionner un peu au hasard finalement ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 nov. 2008 à 22:59
Je suppose que de les rendre invisibles ne t'intéressent pas ?

cantador
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
16 nov. 2008 à 23:05
Dans la mesure du possible non, mais si j'ai pas le choix je le ferais, mais cela fera prendre énormément de mémoire, surtout si cache un onglet et que plus tard j'en ouvre un autre qui est identique, je bouffe de la RAM en connerie.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 nov. 2008 à 23:09
Je n'ai encore rien testé ..
bonne nuit
cantador
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
17 nov. 2008 à 11:51
Bonjour,

Bon j'ai résolu mon problème, j'utilise la propriété ActivePage du TPagecontrol.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
17 nov. 2008 à 12:07
ben voilà c'est ce que je voulais te proposer

il te reste plus qu'à mettre le tableau de TTabSheet à jour afin de faire correspondre les index

 
@+
Cirec

<hr siz="" />
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
17 nov. 2008 à 16:45
J'ai fait des tests et  apparemment que se soit le tableau de TTabSheet ou celui de TSynMemo, ils sont directement mis à jour (c'est cool lol).
0
Rejoignez-nous