Autor Beitrag
dragi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mo 19.04.04 14:37 
Hallo,

ich habe mal so einen kleinen Messenger wie er auch bei den Tutorials zu finden ist, programmiert. Nun wollte ich aber wie bei dem MSN Messenger, das man sieht wann die gegenseite etwas eintippt. Dazu schicke ich im OnChange des Eingabe Feldes eine Buchstabenkombination die die Gegenseite veranlasst ein label anzuzeigen. Aber dann wird kein text mehr übertragen :(

Ich habe jetzt hier mal den Source, alles was mit diesem label zu zun hat habe ich ausgeklammert und es funktioniert die Übertragung. Wenn ich es nicht auskommentiere funktioniert es nicht. Habt ihr vielleicht eine Idee:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
unit frmISMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    EdtEingabe: TEdit;
    BtnSend: TButton;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    BtnClient: TButton;
    BtnServer: TButton;
    BtnPref: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BtnClientClick(Sender: TObject);
    procedure BtnServerClick(Sender: TObject);
    procedure BtnSendClick(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure EdtEingabeKeyPress(Sender: TObject; var Key: Char);
//    procedure EdtEingabeChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    Nick, IP: String;
  end;

var
  Form1: TForm1;

implementation

uses frmISEdt;

{$R *.DFM}



procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Enabled := false;
  EdtEingabe.Enabled := false;
  BtnSend.Enabled := false;
  Memo1.clear;
end;


// Aktivieren der Clients
procedure TForm1.BtnClientClick(Sender: TObject);
begin
  Form1.Caption := 'Instant Messenger CLIENT';
  If Form3.showmodal = mrOK then
  begin
    ClientSocket1.Address := IP;
    ClientSocket1.Active := true;
    EdtEingabe.Enabled := true;
    BtnSend.Enabled := true;
  end;
end;


// Aktivieren des Servers
procedure TForm1.BtnServerClick(Sender: TObject);
begin
  Form1.Caption := 'Instant Messenger SERVER';
  Form3.Edit1.Enabled := false;
  If Form3.showmodal = mrOK then
  begin
    ServerSocket1.Active := true;
    EdtEingabe.Enabled := true;
    BtnSend.Enabled := true;
  end;
end;


//Übermitteln der Nachricht und schreiben in memo1
procedure TForm1.BtnSendClick(Sender: TObject);
begin
  if ClientSocket1.Active = true then
  begin
    ClientSocket1.Socket.SendText(Nick + ': ' + EdtEingabe.Text);
    Memo1.Lines.Add(Nick + ': ' + EdtEingabe.Text);
    EdtEingabe.Text := '';
  end;
  If ServerSocket1.Active = true then
  begin
    ServerSocket1.Socket.Connections[0].SendText (Nick + ': ' + EdtEingabe.Text);
    Memo1.Lines.Add(Nick + ': ' + EdtEingabe.Text);
    EdtEingabe.Text := '';
  end;
end;



procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var Text:String;
begin
 { If Socket.ReceiveText = '--2b7q__' then
  begin
    Label1.visible := true;
    Label1.Caption := 'Gegenseite tippt gerade eine Nachricht ein';
  end
  else }

  begin
  Text := Socket.ReceiveText;
  Memo1.Lines.add(Text);
  Label1.Visible := False;
  end;
end;



procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var Text:String;
begin
 { If Socket.ReceiveText = '--2b7q__' then
  begin
    Label1.visible := true;
    Label1.Caption := 'Gegenseite tippt gerade eine Nachricht ein';
  end
  else }

  begin
  Text := Socket.ReceiveText;
  Memo1.Lines.add(Text);
  Label1.visible := False;
  end;
end;



procedure TForm1.EdtEingabeKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  BtnSend.click;
end;

{procedure TForm1.EdtEingabeChange(Sender: TObject);
begin
  If ClientSocket1.Active = true then
  begin
    ClientSocket1.Socket.SendText('--2b7q__');
  end;
  If ServerSocket1.Active = true then
  begin
    ServerSocket1.Socket.Connections[0].SendText('--2b7q__')
  end;
end; }


end.



Danke

dragi

Edit:

Ich habe mal noch ein wenig geforscht. Wenn ich den ausgeklammerten Teil wieder einbaue wird etwas beim drücken auf BtnSend übertragen....es kommt ein leere String an?! Nehme ich im Read Ereigniss die If Schleife raus und lasse alles ins Memo schreiben sehe ich das bei jeder Eingabe der String "--2b7q__" übertragen wird und beim click auf BtnSend wird dann der Inhalt des Edit Feldes + "--2b7q__" übertragen?! Also mir ist das echt zu hoch.... :(

Moderiert von user profile iconUdontknow: Beiträge zusammengefasst
Cluedi
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 12.07.04 15:15 
Hallo!

Ich möchte so etwas ähnliches wie du gemacht hast auch programmieren! Ich bin aber leider noch nicht sehr geübt im Delphi, könntest du mir evt. dein Code schicken damit ich eine Ahnung habe wie ich es machen könnte? Wäre total froh!

Gruss