..:: Utiliser un composant créé dynamiquement ::..
DeZNiUS
Messages postés82Date d'inscriptionvendredi 1 novembre 2002StatutMembreDernière intervention24 octobre 2003
-
29 mars 2003 à 12:07
DeZNiUS
Messages postés82Date d'inscriptionvendredi 1 novembre 2002StatutMembreDernière intervention24 octobre 2003
-
31 mars 2003 à 17:35
Bonjour (soir) à tous,
Oui je sais je suis ch... (x2). Vu que g des problem avec mon richedit et que j'etait focalisé dessus g oublie de faire le reste, donc g repris la parti reseau. G un probleme :
J'ai créé 3 composant clientsocket dynamiquement. Il ont chaqun un nom different, ClientSocket1, ClientSocket2, ClientSocket3.
Une fois qu'il sont créé, comment je fait pour les utiliser ? ex pour connecter ClientSocket1, en sachant qu'il n'existai pas avant ?
Voici le code :
=<CODE>=============
procedure TForm1.CREATEClick(Sender: TObject);
Var
ClientSocket: TClientSocket;
i : integer;
begin
for i := 1 to ListBox1.Items.Count do
begin
clientsocket := TClientSocket.Create(Self);
// ici self est équivalent à Form1
With clientsocket do
begin
{ indique le parent c'est à dire la fiche qui possède le clientsocket}
Parent := Form1;
{ Important : c'est ici que j'indique que l'évènement onconnect déclenchera la procédure baseclientsocket.onconnect (un composant existant sur la form) }
OnConnect := BaseClientSocketConnect;
{ici j'indique le nom du client socket }
Name := 'ClientSocket' + IntToStr(i); //nom du composant
ShowMessage('ClientSocket ' + inttostr(i) + ' créé');
end;
end;
end;
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 29 mars 2003 à 23:46
Plusieurs solutions :
- Tu gardes la trace des composants créés avec un TComponentList. Ainsi dans TComponentList.Items[] tu as un tableau de tous tes TClientSocket. ( c'est la solution que je te conseille )
- Tu utilises la fonctions FindComponent de Form1 pour recercher l'un des ClientSocket par son nom.
--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
DeZNiUS
Messages postés82Date d'inscriptionvendredi 1 novembre 2002StatutMembreDernière intervention24 octobre 2003 31 mars 2003 à 16:35
Excuse moi de deranger mais je pense pas avoir compris comment utiliser les 2 facons. de plus il n'y a pas d'exemple dessus dans l'aide.
Par exemple je veut faire Open avec un clientsocket1 crée dynamiquement. comment faire ?
Voici mon code :
Il met dans une liste box tt les clients sockets crées dynamiquement. mais comment faire apres pour s'en servir ? pour mettre CLIENTSOCKET.OPEN ?
var
i : integer;
CSocket : TComponent;
CSocketName : TComponentName;
begin
//ListBox2.Items.Add(ComponentList.Items[0].Name);
for i := 1 to ListBox1.Items.count do
begin
CSocket := Form1.FindComponent('ClientSocket' + IntToStr(i));
CSocketName := CSocket.Name;
Form1.ListBox2.Items.Add(CSocketName);
end;
end;
=<END>===
Que pense tu de ca? le probleme c que je peut pas le faire ! je peut pas mettre open !
DeZNiUS
Messages postés82Date d'inscriptionvendredi 1 novembre 2002StatutMembreDernière intervention24 octobre 2003 31 mars 2003 à 17:35
Salut,
finalement j'ai trouvé cette solution, c'est bon j'ai résolu mon probleme.
< CODE >==
procedure CreateAndConnect;
var
i : integer;
for i := 1 to listbox1.Items.Count do
begin
with TClientSocket(Form1.FindComponent('ClientSocket' + IntToStr(i))) do
begin
Port := 600;
Address := ListBox1.Items.Strings[i - 1];