Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Form2, Form3 usw sollen Zugriff auf Form1 ClientSocket haben


sk0r - So 10.06.07 21:50
Titel: Form2, Form3 usw sollen Zugriff auf Form1 ClientSocket haben
Tag.

Ich habe mehrere Formen (Elf Stück), welche alle Zugriff auf
das TClientSocket von Form1 haben sollen, da sie damit
Texte an den Server senden müssen. Leider weiß ich gar
nicht, wie ich das machen könnte, habe zwar schon rumprobiert,
aber nichts will funktionieren. Wäre für einen Code sehr dankbar.

Falls ihr weitere Informationen braucht, dann fragt bitte.

MfG: sk0r


Narses - So 10.06.07 22:34

Moin!

Das geht genauso wie mit jeder anderen Komponente eines Formulars: :nixweiss:

Delphi-Quelltext
1:
Form1.ClientSocket1.Host := '...';                    

Dazu noch Form1 in die uses-Klausel des entsprechenden anderen Formulars aufnehmen, fertig. ;)

cu
Narses


sk0r - So 10.06.07 22:48

user profile iconNarses hat folgendes geschrieben:
Moin!

Das geht genauso wie mit jeder anderen Komponente eines Formulars: :nixweiss:

Delphi-Quelltext
1:
Form1.ClientSocket1.Host := '...';                    

Dazu noch Form1 in die uses-Klausel des entsprechenden anderen Formulars aufnehmen, fertig. ;)

cu
Narses


Hi,

ja, so denke ich auch, dass es gehen kann, aber das Problem ist, dass
die anderen Formen per Klick auf einem Button von Form1 starten. Also
gibt es eine Überkreuzung mit den Units :( Das ist das verzwickte an der Sache.


Narses - So 10.06.07 22:50

Moin!

Nimm halt die uses-Klausel im implementation-Teil, du wirst Form1 ja vermutlich nicht in der Deklaration der anderen Formulare brauchen, oder? :?

cu
Narses


Jann1k - So 10.06.07 22:54

Also wir haben in der Schule mal was mit containern gelernt:

Die anderen forms brauchen ja nicht die gesamte form1 zu kennen, sondern nur den clientsocket. Also deklarierst du in jeder Form einen clientsocket:tclientsocket und schreibst für jede form eine Prozedur die ungefähr so aussieht:


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm2.setclientsocket(pclientsocket:tclientsocket);
 begin
   clientsocket:=pclientsocket;
 end;


Die Prozedur rufst du dann auf und übergibst als Parameter den clientsocket von Form1.
Dann solltest du in der Form2 unter clientsocket zugriff auf form1.clientsocket haben.

Kann dir keine Garantie geben ob es klappt, aber versuchs mal und sag bescheid ob das so funktioniert.

Wenn nicht: wäre es möglich eine extra unit für den clientsocket einzurichten, auf die alle anderen formulare zugriff haben?