..:: Utiliser un composant créé dynamiquement ::..

DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003 - 29 mars 2003 à 12:07
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 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;

=<END>===========

Voila,

@+

-[!!!]- DeZNiUS -[!!!]-

4 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
30 mars 2003 à 13:33
Merci Nono40 de me repondre :-)
Okay je vais essayer de mettre en oeuvre ce que tu me propose. Je vais essayer la solution conseillé.

Merci et @+

-[!!!]- DeZNiUS -[!!!]-
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 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 ?

< CODE >====

procedure TForm1.Button4Click(Sender: TObject);
{var
ComponentList : TComponentList; }

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 -[!!!]-
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 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];

try
Open;
except
//ListBox2.Items.Add(Name + '.connect : failed donc nul');
end;

//ShowMessage('Fire in the hole ! - ca marche !');
ListBox2.Items.Add(Name + '.connect : ' + Address);
ListBox2.Items.Add(Name + '.port : ' + inttostr(Port));
end;
end;

< END >===

@+

-[!!!]- DeZNiUS -[!!!]-
0
Rejoignez-nous