Création dynamique de composant [Résolu]

Signaler
Messages postés
15
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
21 novembre 2010
-
Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
-
Bonjour
Après avoir cherché un bon moment sur le site je me décide à poser ma question
Je veux créer un Tmemo dynamiquement dans une fonction qui se trouve sur une unitée a part.
la fonction reçoit in Tmemo, je l'analyse et je retourne un Tmemo.

Pb1:
dans la Fct,
Var Travail:Tmemo;
begin
travail:=TMemo.Create(Self); => ici Self est en rouge et ca plante!
...

Pb2:
dans la fiche qui appelle la fonction:
memo6:=MaFonction(...); =>ici mon memo6 ne se remplis pas

Pourquoi?
merci

4 réponses

Messages postés
3819
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
2 novembre 2020
34
Salut,

dans ce cas c'est pas sur le TMemo qu'il faut "travailler" mais plutôt utiliser TStrings ... le principe est le même sauf qu'on peut les utiliser dans presque tous les composants qui affichent du texte (Ex TMemo, TRichEdit, TComboBox, TListBox, TCheckListBox ... etc. etc.)

Et pour bien utiliser une fonction où procédure renvoyant un Objet je te conseille d'aller voir l'excellent article de notre ami "Flo" à ce sujet.
Article indispensable si l'on veut pouvoir libérer correctement ce que l'on a précédemment créé.


[hr]@+Cirec
[hr]
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
14
Pb0: CLio908
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
Bonjour,

Ta fonction recois en entrée un Tmemo et renvois un Tmemo.

Si tu passe un objet en paramètre, c'est en faite un pointeur sur ton object. Donc un code comme ci-dessous fonctionne

Dans Unit1

implementation

{$R *.dfm}
uses unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Mafonction(Memo1);
end;

Dans Unit2;

procedure Mafonction ( Travail : Tmemo);
begin
  Travail.Lines.Add('Test');
end;

Messages postés
15
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
21 novembre 2010

Bonjour et merci
C'est la solution que j'avais retenu.
Je voulais en fait créer dynamiquement un Tmemo dans unit2, m'en servir pour du travail, puis retourner avec la fonction un Tmemo qui contient le résultat du travail.
comme ça je n'ai qu'un Tmemo initial qui n'est pas modifié, que je transmet a la fonction, qui elle retourne un Tmemo que je met ailleur.
A+