cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018
-
6 juin 2009 à 17:56
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018
-
7 juin 2009 à 04:15
Bonjour,
Je souhaite pouvoir créer des fenêtre RichEdit en dynamique afin de traiter du texte avec un format enrichi qu'on peut ensuite sauvegarder dans un fichier .RTF.
Cela marche très bien dans un programme simple, RichEdit est créé et peut être utilisé:
procedure TForm1.FormCreate(Sender: TObject);
VAR Edit: TRichEdit;
begin
Edit:= TRichEdit.Create(Form1);
Edit.Top:=10;
Edit.Left:= 10;
Edit.Text:= 'Bonjour';
Edit.Visible:= true;
showmessage(Edit.Text);
Edit.destroy;
end;
mais cela ne marche pas dans un programme multithread avec le message d'erreur m'indiquant que le composant n'a pas de fenêtre parent.
Je comprends que dans un thread la fenêtre parent soit difficile à définir, mais je voudrais pouvoir créer des RichEdit associés aux trheads afin que les messages des différents utilisateurs ne se mélangent pas...
Mon problème est-il suffisamment bien expliqué?
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 6 juin 2009 à 18:06
salut
Première chose qui serait un conseil de lisibilité est de ne pas appeler un RichEdit par Edit qu'on confonds avec un Edit !
Sinon, as tu essayé Edit.Parent:= Form1; ?
- Il faut toujours utiliser Self et non la variable FormX, car cette variable est Externe a la classe TFormX, donc il y a un probleme de dependance du code de la classe avec une variable externe a la classe donc, tout code dependant de cette variable ne peu etre appliqué a la classe TFormX.
- Il est preferable d'utiliser SetBounds plutot que d'associer des valeurs a Left, Top, Width et Height directement, cela evite que le code appel plusieurs fois en internet la methode SetBounds.
- ne pas oublier d'encadrer la creation d'objet dans un bloc Try...Finally pour s'assurer que les ressources seront bien libérée.
- Il faut utiliser Free et non Destroy. la methode Free s'assure que l'objet possede une instance valide avant d'appeler Destroy afin d'eviter les cascade d'erreur et les violation d'accés.