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:
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); private 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;
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;
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;
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 begin Text := Socket.ReceiveText; Memo1.Lines.add(Text); Label1.Visible := False; end; end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Text:String; begin 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;
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
Udontknow: Beiträge zusammengefasst