📄 chat.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
#include "chat.h"
#include "setngfr2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TAWTalkForm *AWTalkForm;
//---------------------------------------------------------------------------
__fastcall TAWTalkForm::TAWTalkForm(TComponent* Owner)
: TForm(Owner)
{
ClientConnected = false;
OutSocket = NULL;
Application->OnIdle = ValidateControls;
NickName = "Test1";
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ValidateControls(TObject *Sender, bool &Done){
MenuConnect->Enabled = !ClientConnected;
MenuDisconnect->Enabled = ClientConnected;
FileSettings->Enabled = !ClientConnected;
Memo1->ReadOnly = !OutSocket;
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::MenuConnectClick(TObject *Sender)
{
ClientSocket1->Host = "localhost";
EnableClient();
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::MenuDisconnectClick(TObject *Sender)
{
if (ClientConnected){
DisableClient();
}
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::FileSettingsClick(TObject *Sender)
{
AWTalkSettingsForm = new TAWTalkSettingsForm(this);
AWTalkSettingsForm->HostEdit->Text = ClientSocket1->Host;
AWTalkSettingsForm->NickNameEdit->Text = NickName;
if (AWTalkSettingsForm->ShowModal() == mrOk){
ClientSocket1->Host = AWTalkSettingsForm->HostEdit->Text;
NickName = AWTalkSettingsForm->NickNameEdit->Text;
}
delete AWTalkSettingsForm;
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::Memo1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (OutSocket){
if (Key == VK_RETURN){
OutSocket->SendText(Memo1->Text);
Memo1->Lines->Clear();
Key = 0;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Connected to server...";
OutSocket = Socket;
AnsiString sendstring = NickName + '\n';
Socket->SendText(sendstring);
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
DisableClient();
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Connecting(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Connecting to localhost...";
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Lookup(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Looking up host localhost...";
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar1->SimpleText = "Error Code " + IntToStr(ErrorCode);
ShowMessage("Socket Error " + IntToStr(ErrorCode));
ErrorCode = 0;
DisableClient();
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Reading Data from server...";
Memo2->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
void TAWTalkForm::EnableClient(){
ClientConnected = true;
StatusBar1->SimpleText = "Connecting to localhost...";
ClientSocket1->Open();
}
//---------------------------------------------------------------------------
void TAWTalkForm::DisableClient(){
DefaultSBText();
OutSocket = NULL;
ClientConnected = false;
ClientSocket1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::Exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Reading Data from client...";
Memo2->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
void __fastcall TAWTalkForm::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Client Connect...";
OutSocket = Socket;
}
//---------------------------------------------------------------------------
void TAWTalkForm::DefaultSBText(){
StatusBar1->SimpleText = "Please Select Mode";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -