mainform.cpp
来自「著名的SecureBlackBox控件完整源码」· C++ 代码 · 共 175 行
CPP
175 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
bool ConnActive;
TClientThread* Thread;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
SetLicenseKey((AnsiString)
"ADDCD14AD06709806817E0B3D7BFD0A2222D536FE156466C5D5FE65DB5DEAE76" +
"FFDEBC07E915A5751C12C01C783958872A38E4A5EDA140E7247E0F2E56442A3C" +
"F3E9347AD8FDE52083A0DFC86BC00ECB0FD0CF1B51159A2BCB84F6EA6349EF47" +
"5C15A59AFCC55F7C3AAD26C279628B5D91B1DC94BD2385354A70CCA3B76101D9" +
"F41C84A639FC3CCE4BA8F0CC4A66DCD150114A3F58C1AD46B7B94643741BC20A" +
"8DCA83AB921480951B423CAA19EF1863A47CA2C3422E7E5634BED98939A5AE43" +
"DE1E4BAD79E66D8A5C973B3455656C8C9B6FF024FADD6CDA02D0F506D98493C8" +
"BD1ED7B237DB75FA31F2C82654490CDDDEE24E19939137B9E1DB05508733B22F");
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
ConnActive = false;
}
//---------------------------------------------------------------------------
void TFormMain::Log(const AnsiString S, bool AError)
{
TListItem* Item = ListView->Items->Add();
Item->SubItems->Add(DateTimeToStr(TDateTime::CurrentDateTime()));
Item->SubItems->Add(S);
if (AError)
Item->ImageIndex = 0;
else
Item->ImageIndex = 1;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonStartClick(TObject *Sender)
{
if (!ConnActive)
{
ButtonStart->Caption = "Stop";
ConnActive = true;
Thread = new TClientThread(EditHost->Text, StrToIntDef(EditPort->Text, 22),
EditUsername->Text, EditPassword->Text, StrToInt(EditLocalPort->Text),
EditRemoteHost->Text, StrToInt(EditRemotePort->Text), false);
Thread->OnLog = ThreadLog;
Thread->OnTerminate = ThreadTerminate;
Thread->OnConnectionChange = ThreadConnectionChange;
Thread->OnConnectionAdd = ThreadConnectionAdd;
Thread->OnConnectionRemove = ThreadConnectionRemove;
Thread->FreeOnTerminate = true;
Thread->Resume();
}
else
{
if (Thread)
Thread->Terminate();
ButtonStart->Caption = "Start";
ConnActive = false;
}
}
//---------------------------------------------------------------------------
void TFormMain::RefreshListViewItem(TListItem* Item)
{
AnsiString S;
TConnection* Conn = (TConnection*)(Item->Data);
Item->Caption = "";
Item->SubItems->Clear();
Item->SubItems->Add(Conn->RemoteHost + ":" +
IntToStr(Conn->RemotePort));
Item->SubItems->Add(IntToStr(Conn->Sent));
Item->SubItems->Add(IntToStr(Conn->Received));
if ((Conn->InState == icsActive) &&
(Conn->OutState == ocsActive))
{
Item->ImageIndex = 0;
S = "Active";
}
else if ((Conn->InState == icsClosing || Conn->InState == icsClosed) ||
(Conn->OutState == ocsClosing || Conn->OutState == ocsClosed))
{
Item->ImageIndex = 2;
S = "Closing";
}
else if (Conn->OutState == ocsEstablishing)
{
Item->ImageIndex = 1;
S = "Setting up";
}
else
{
Item->ImageIndex = -1;
S = "Unknown";
}
Item->SubItems->Add(S);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ThreadLog(TObject* Sender, const AnsiString S, bool Error)
{
Log(S, Error);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ThreadTerminate(TObject* Sender)
{
Thread = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ThreadConnectionChange(TObject* Sender, TConnection* Conn)
{
TListItem* Item = ListViewConnections->FindData(0, Conn, true, false);
RefreshListViewItem(Item);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ThreadConnectionAdd(TObject* Sender, TConnection* Conn)
{
TListItem* Item = ListViewConnections->Items->Add();
Item->Data = Conn;
RefreshListViewItem(Item);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ThreadConnectionRemove(TObject* Sender, TConnection* Conn)
{
TListItem* Item = ListViewConnections->FindData(0, Conn, true, false);
ListViewConnections->Items->Delete(ListViewConnections->Items->IndexOf(Item));
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormDestroy(TObject *Sender)
{
if (Thread != NULL)
Thread->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::btnExecuteClick(TObject *Sender)
{
TQueryThread* Thread = new TQueryThread(EditDBName->Text, EditDBUsername->Text,
EditDBPassword->Text, EditQuery->Text);
Thread->FreeOnTerminate = true;
Thread->OnTerminate = QueryThreadTerminate;
Thread->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::QueryThreadTerminate(TObject* Sender)
{
TSQLDataSet* DataSet = ((TQueryThread*)(Sender))->DataSet;
Log((AnsiString)"Rows affected: " + IntToStr(((TQueryThread*)(Sender))->RowCount));
ListViewResults->Items->Clear();
ListViewResults->Columns->Clear();
for (int i = 0; i<DataSet->Fields->Count; i++)
{
TListColumn* Column = ListViewResults->Columns->Add();
Column->Caption = DataSet->Fields->Fields[i]->DisplayName;
}
DataSet->First();
while (!DataSet->Eof)
{
TListItem* Item = ListViewResults->Items->Add();
if (DataSet->Fields->Count > 0)
Item->Caption = DataSet->Fields->Fields[0]->AsString;
for (int i = 1; i<DataSet->Fields->Count; i++)
Item->SubItems->Add(DataSet->Fields->Fields[i]->AsString);
DataSet->Next();
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?