cs_christophedlr
Messages postés267Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention23 août 2023
-
31 août 2006 à 15:23
cs_christophedlr
Messages postés267Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention23 août 2023
-
31 août 2006 à 21:49
Bonjour à tous,
Dans mon programme, j'utilise ls système d'application MDI.
Mon problème, c'est que la fiche MDI enfant est créer dynamiquement(créer juste avant de l'afficher), et je ne peux donc pas rajouter une option pour enregistrer le contenu de cette fiche.
En fait, dans cette fiche enfant, j'ai un SynEdit(composant TSynEdit ;)).
Le problème c'est que comme la fiche n'est pas créer à la base directement dans les options du projet, je ne peux pas faire une entrée du style: MDIChild.SynEdit1.SaveToFile(NameOfFile), puisque MDIChild n'est pas créé, il est donc pas reconnu.
Le menu pour enregistrer se trouve sur la fiche principal(la fenêtre parent).
Je voudrais donc savoir comment faire, si quelqu'un avais une idée pour m'aider.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 août 2006 à 17:20
Si tu crée un forme dynamique, tu peux par exemple crée aussi un bouton dynamique dessus contenant la procedure de sauvegarde.
Ton bouton devrait avoir owner := ta fiche mdi.
Dans le OnClick du bouton crée, tu peux alors faire une recherche d'un composant synedit contenu dans la form ou il est lui meme contenu. Il ne te reste plus alors qu'a effectuer ton SaveToFile.
Tu aura besoin des fonctions:
- findcomponent
- is
- as
- componentcount
De tête je dirais une fonction de la forme (à arranger un peu à mon avis):
procedure Button1Click(Sender: TObject);
var frm : TmdiForm;
syn: TSynEdit;
begin frm : = (Sender) as TmdiForm;
for i := 0 to frm.Componencount-1do begin if frm.component[i] is TSynEdit then begin syn : = frm.component[i] as TSynEdit;
syn.SaveToFile;
end;
end;
end;
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 31 août 2006 à 21:28
@CptPingu:
Le prend pas mal, mais c'est un peu boiteux comme solution. Et je voit
pas pourquoi le bouton devrait être crée dynamiquement. (ou alors j'ai
pas bien compris son problème.)
Le plus simple est de publié une methode de sauvegarde et au pire de faire un truc genre:
procedure TMainForm.SaveAllMDI();
var i : integer
begin
for i:= 0 to mdichildrencount-1 do begin
if MDIChild[i] is TMDIForm then
(MDIChildren as TMDIFOrm).save;
end;
end;
(syntaxe de tête)
bien sur le nom de fichier peut être passé en paramètre ou lut dans une
proprieté de la MainForm. mais Je vois vraiement pas l'intéret de
parser tout les composants.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 août 2006 à 21:38
Non, le bouton n'est pas obligatoire, je donnais simplement un exemple. Effectivement, ta méthode est plus rapide et moins contraignante. Ma solution est un peu plus généraliste (j'utilisait ceci pas forcement pour des fenêtres MDI).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_christophedlr
Messages postés267Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention23 août 20235 31 août 2006 à 21:49
Je vous remerci tous, mon problèmes à été résolu par mon frangin quand il est rentré du boulot(j'ai pas pu venir sur le forum avant).
il me suffit de faire: (ActiveMDIChild as TMDIChild) pour utilisé les propriété de la fiche fille pour enregistrer le contenu de mon SynEdit.