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 + -
显示快捷键?