tmainform.cpp
来自「我写的SQL Server网络备份工具。(服务器端用VC开发」· C++ 代码 · 共 274 行
CPP
274 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include <Registry.hpp>
#include <DateUtils.hpp>
#pragma hdrstop
#include "TMainForm.h"
#include "ClientConnect.h"
#include "TTaskForm.h"
#include "TRunForm.h"
#include "stdafx.h"
#include "BackupTask.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
char *IPFormatError = "不合法的IP地址";
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
SetEditIP(FALSE);
m_Conn->ConnectionString = g_ConnectionString;
try{
m_Conn->Open();
}
catch(...)
{
MessageBox(Handle , "关键性错误,请尽快与开发商联系。" , "错误" , MB_OK | MB_ICONERROR);
Application->Terminate();
}
RecoverIP();
LoadTask();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnAddTaskClick(TObject *Sender)
{
TTaskForm *Dlg = new TTaskForm(this);
if(Dlg->ShowModal() == mrOk)
{
BackupTask task;
task.SetDatabase(Dlg->GetDatabase());
task.SetCycleType(Dlg->GetCycleType());
task.SetCycleCount(Dlg->GetCycleCount());
task.SetDayCount(Dlg->GetDayCount());
task.SetActiveDate(Dlg->GetBeginDate());
task.SetActiveTime(Dlg->GetBackupTime());
MyDataSet pData(new TADODataSet(NULL));
pData->Connection = m_Conn;
pData->CommandText = "SELECT * FROM Task WHERE DatabaseName = '" + task.GetDatabase() + "'";
pData->Open();
if(pData->Eof == TRUE)
{
pData->Insert();
pData->FieldByName("DatabaseName")->AsString = task.GetDatabase();
pData->FieldByName("CycleType")->AsInteger = task.GetCycleType();
pData->FieldByName("CycleCount")->AsInteger = task.GetCycleCount();
pData->FieldByName("DayCount")->AsInteger = task.GetDayCount();
pData->FieldByName("ActiveTime")->AsDateTime = task.GetActiveTime();
pData->FieldByName("ActiveDate")->AsDateTime = task.GetNextDate();
pData->Post();
if(Dlg->chkBackupNow->Checked)
{
TRunForm::StartBackup(&task);
}
}
else
{
MessageBox(Handle , "同一数据库只能建立一个备份计划。" , "提示" , MB_OK);
}
LoadTask();
}
delete Dlg;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnEditAddressClick(TObject *Sender)
{
if(IPBox->Enabled)
{
int nIP1 , nIP2 , nIP3 , nIP4;
if((TryStrToInt(txtIP1->Text , nIP1) == FALSE) || nIP1 > 255)
{
MessageBox(Handle , IPFormatError , "提示" , MB_OK);
txtIP1->SetFocus();
return;
}
if((TryStrToInt(txtIP2->Text , nIP2) == FALSE) || nIP2 > 255)
{
MessageBox(Handle , IPFormatError , "提示" , MB_OK);
txtIP2->SetFocus();
return;
}
if((TryStrToInt(txtIP3->Text , nIP3) == FALSE) || nIP3 > 255)
{
MessageBox(Handle , IPFormatError , "提示" , MB_OK);
txtIP3->SetFocus();
return;
}
if((TryStrToInt(txtIP4->Text , nIP4) == FALSE) || nIP4 > 255)
{
MessageBox(Handle , IPFormatError , "提示" , MB_OK);
txtIP4->SetFocus();
return;
}
ClientConnect ServerConnect;
AnsiString strIP;
strIP.sprintf(g_IPFormat , nIP1 , nIP2 , nIP3 , nIP4);
if(!ServerConnect.Connect(strIP.c_str()))
{
MessageBox(Handle , "不能连接服务器,请检查IP地址是否正确" , "提示" , MB_OK);
return;
}
g_nIP1 = nIP1;
g_nIP2 = nIP2;
g_nIP3 = nIP3;
g_nIP4 = nIP4;
SaveIP();
RecoverIP();
}
SetEditIP(!IPBox->Enabled);
}
//---------------------------------------------------------------------------
void TMainForm::SetEditIP(BOOL bCan)
{
IPBox->Enabled = bCan;
btnCancel->Visible = bCan;
if(bCan)
{
btnEditAddress->Caption = "保存";
txtIP1->SetFocus();
}
else
{
btnEditAddress->Caption = "编辑";
}
}
void __fastcall TMainForm::OnIPClick(TObject *Sender, char &Key)
{
if(Key == '.')
{
PostMessage(Handle , WM_NEXTDLGCTL , 0 , 0);
}
if(Key < '0' || Key > '9')
Key = 0;
}
//---------------------------------------------------------------------------
void TMainForm::RecoverIP()
{
txtIP1->Text = IntToStr(g_nIP1);
txtIP2->Text = IntToStr(g_nIP2);
txtIP3->Text = IntToStr(g_nIP3);
txtIP4->Text = IntToStr(g_nIP4);
}
void __fastcall TMainForm::btnCancelClick(TObject *Sender)
{
RecoverIP();
SetEditIP(FALSE);
}
//---------------------------------------------------------------------------
void TMainForm::SaveIP()
{
MyDataSet pData(new TADODataSet(NULL));
pData->Connection = m_Conn;
pData->CommandText = "SELECT * FROM ServerAddress";
pData->Open();
if(pData->Eof == FALSE)
{
pData->Edit();
}
else
{
pData->Insert();
}
pData->FieldByName("IP1")->AsInteger = g_nIP1;
pData->FieldByName("IP2")->AsInteger = g_nIP2;
pData->FieldByName("IP3")->AsInteger = g_nIP3;
pData->FieldByName("IP4")->AsInteger = g_nIP4;
pData->Post();
pData->Close();
}
void TMainForm::LoadTask()
{
AnsiString strTemp;
BackupTask task;
MyDataSet pData(new TADODataSet(NULL));
TListItem *pItme;
TaskList->Items->Clear();
TaskList->Column[0]->Width = TaskList->Width * 0.3;
TaskList->Column[1]->Width = TaskList->Width * 0.5;
TaskList->Column[2]->Width = TaskList->Width * 0.2;
pData->Connection = m_Conn;
pData->CommandText = "SELECT * FROM Task";
pData->CacheSize = 20;
pData->Open();
for(pData->First() ; !pData->Eof ; pData->Next())
{
pItme = TaskList->Items->Add();
pItme->Data = (void *)pData->FieldByName("ID")->AsInteger;
task.SetDatabase(pData->FieldByName("DatabaseName")->AsString );
task.SetCycleType(pData->FieldByName("CycleType")->AsInteger );
task.SetCycleCount(pData->FieldByName("CycleCount")->AsInteger );
task.SetDayCount(pData->FieldByName("DayCount")->AsInteger );
task.SetActiveTime(pData->FieldByName("ActiveTime")->AsDateTime);
task.SetActiveDate(pData->FieldByName("ActiveDate")->AsDateTime);
pItme->Caption = task.GetDatabase();
pItme->SubItems->Add(task.GetCycleString());
pItme->SubItems->Add(task.GetActiveDate());
}
}
void __fastcall TMainForm::btnDeleteClick(TObject *Sender)
{
if(TaskList->ItemIndex < 0)
{
MessageBox(Handle , "没有选择要删除的计划." , "提示" , MB_OK);
return ;
}
if(MessageBox(Handle , "是否真的要删除选中的备份计划." , "" , MB_YESNO | MB_ICONQUESTION) == IDYES)
{
int nAffected;
AnsiString strSql("DELETE FROM Task WHERE ID=" + IntToStr((int)TaskList->ItemFocused->Data));
m_Conn->Execute(strSql , nAffected);
if(nAffected > 0)
{
MessageBox(Handle , "备份计划删除成功。" , "提示" , MB_OK);
LoadTask();
}
else
{
MessageBox(Handle , "备份计划删除失败。" , "提示" , MB_OK);
}
}
}
//---------------------------------------------------------------------------
void TMainForm::SetAutoRun()
{
TRegistry *pReg = new TRegistry;
pReg->RootKey = HKEY_LOCAL_MACHINE;
if(pReg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" , FALSE))
{
pReg->WriteString("供水公司触摸屏" , Application->ExeName);
pReg->CloseKey();
}
delete pReg;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?