Création dynamique de composant

Résolu
CLio908 Messages postés 15 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 21 novembre 2010 - 16 sept. 2010 à 23:05
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 18 sept. 2010 à 12:30
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

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 sept. 2010 à 12:30
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]
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
17 sept. 2010 à 04:36
Pb0: CLio908
0
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
17 sept. 2010 à 16:22
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;

0
CLio908 Messages postés 15 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 21 novembre 2010
17 sept. 2010 à 18:13
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+
0
Rejoignez-nous