⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 this is also a unix programme book ,you can find many code in it
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include "const.h"
#include "About.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
#pragma resource "myres.res"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

// == 界面代码 ==============================================================
void __fastcall TFormMain::ImageTitleMouseDown(TObject *Sender,
    TMouseButton Button, TShiftState Shift, int X, int Y)
{
    Refresh();
    if(Button == mbLeft)
    {
        ReleaseCapture();
        Perform(WM_SYSCOMMAND, 0xf017, 0);
    }
}
//--------------------------------------------------------------------------

void __fastcall TFormMain::OnWMActive(TMessage &Msg)
{
    TForm::Dispatch(&Msg);
    switch(Msg.WParamLo)
    {
        case WA_ACTIVE:
        case WA_CLICKACTIVE:
            LabelTitle->Font->Color = clGreen;
            ShapeClient->Pen->Color = clGreen;
            ImageTitle->Picture->Bitmap->Handle = LoadBitmap(HInstance,"TITLE_ACTIVE");
            ImageSystem->Picture->Bitmap->Handle =  LoadBitmap(HInstance,"SYSTEM_ACITVE");
            ImageMinimize->Picture->Bitmap->Handle = LoadBitmap(HInstance,"MINIMIZE_ACTIVE");
            ImageZoom->Picture->Bitmap->Handle = LoadBitmap(HInstance,"ZOOM_ACTIVE");
            ImageClose->Picture->Bitmap->Handle = LoadBitmap(HInstance,"CLOSE_ACTIVE");
            break;
        case WA_INACTIVE:
            LabelTitle->Font->Color = clMoneyGreen;
            ShapeClient->Pen->Color = clMoneyGreen;
            ImageTitle->Picture->Bitmap->Handle = LoadBitmap(HInstance,"TITLE_INACTIVE");
            ImageSystem->Picture->Bitmap->Handle =  LoadBitmap(HInstance,"SYSTEM_INACTIVE");
            ImageMinimize->Picture->Bitmap->Handle = LoadBitmap(HInstance,"_INACTIVE");
            ImageZoom->Picture->Bitmap->Handle = LoadBitmap(HInstance,"_INACTIVE");
            ImageClose->Picture->Bitmap->Handle = LoadBitmap(HInstance,"_INACTIVE");
            break;
    }
}

void __fastcall TFormMain::ImageSystemDblClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::ImageTitleDblClick(TObject *Sender)
{
    ImageSystemClick(ImageZoom);
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::ImageSystemClick(TObject *Sender)
{
    static bool bUp = false;
    TImage *p = dynamic_cast<TImage *>(Sender);
    switch(p->Tag)
    {
        case 100:   // System Button
            break;
        case 101:   // Minimize Button
            Application->Minimize();
            break;
        case 102:   // Zoom Button
            bUp = !bUp;
            Height = (bUp)?(ImageTitle->Height + 2):305;
            p->Hint = (bUp)?"还原":"上卷"; 
            break;
        case 103:   // Close Button
            Application->Terminate();
            break;
        default: break;
    }
}
//---------------------------------------------------------------------------


void __fastcall TFormMain::ImageSystemMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    PopupMenuSystem->Popup(Left + ImageSystem->Left,
        Top + ImageSystem->Top + ImageSystem->Height);    
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::PopupMenuSystemPopup(TObject *Sender)
{
    mnuOnTaskbar->Checked = IsWindowVisible(Application->Handle);
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::mnuOnTopClick(TObject *Sender)
{
    mnuOnTop->Checked = !mnuOnTop->Checked;
    if(mnuOnTop->Checked)
        SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
    else
        SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::mnuOnTaskbarClick(TObject *Sender)
{
    if(!mnuOnTaskbar->Checked)
        ShowWindow(Application->Handle,SW_SHOW);
    else
    {
        ShowWindow(Application->Handle,SW_HIDE);
        if(!mnuOnTop->Checked)
            mnuOnTopClick(0);
    }
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::mnuAboutClick(TObject *Sender)
{
    TFormAbout *FormAbout = new TFormAbout(this);
    FormAbout->ShowModal();
    delete FormAbout;
}
//---------------------------------------------------------------------------
// == 界面代码 结束 =========================================================

void __fastcall TFormMain::FormCreate(TObject *Sender)
{
    DoubleBuffered = true;

    // change ImageTitle's size
    ImageTitle->Width = Width - 2;
    // adjust ImageClose, ImageZoom and ImageMinimize's position
    ImageClose->Left = Width - 16;              // 16 = Image->Width + 4
    ImageZoom->Left = ImageClose->Left - 13;    // 13 = Image->Width + 1 
    ImageMinimize->Left = ImageZoom->Left - 13; // 13 = Image->Width + 1

    // get temp path
    String path;
    path.SetLength(MAX_PATH);
    path.SetLength(GetTempPath(MAX_PATH,path.c_str()));
    DbFile = path + "DataBank";

    // 解出数据库
    TResourceStream *rs = new TResourceStream((int)HInstance,"DATABANK","FILE");
    rs->SaveToFile(DbFile);
    delete rs;
    /* 或者
    TResourceStream &rs = *new TResourceStream((int)HInstance,"DATABANK","FILE");
    rs.SaveToFile(DbFile);
    delete &rs;
    */

    AnsiString StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0";
    StrCnn += ";Data Source=" + DbFile;
    StrCnn += ";Persist Security Info=False";
    Table1->ConnectionString = StrCnn;
    Table1->TableName = "contents";
    Table1->Active = true;
    Table2->ConnectionString = StrCnn;

    TableList = new TStringList;
    AnsiString strTmp;
    while(!Table1->Eof)
    {
        ComboBox1->Items->Add(Table1->FieldByName("DataBankName")->AsString);
        TableList->Add(Table1->FieldByName("TableName")->AsString);
        Table1->Next();
    }
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::FormDestroy(TObject *Sender)
{
    delete TableList;

    Table1->Close();
    Table2->Close();
    DeleteFile(DbFile);
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::OpenTable(int Index)
{
    if(Index == -1)
        return;
    // 打开数据库
    Table2->Close();
    Table2->Filtered = false;
    DBRichEdit1->DataField = "";

    AnsiString strTmp = TableList->Strings[ComboBox1->ItemIndex];
    if(strTmp != "none")
    {
        Table2->TableName = strTmp;
        Table2->Open();
        Table2->First();
    }
}

void __fastcall TFormMain::ComboBox1Change(TObject *Sender)
{
    OpenTable(ComboBox1->ItemIndex);
    ListView1->Visible = false;
    Panel1->Visible = false;
    Panel2->Visible = false;
    Panel5->Visible = false;
    Panel6->Visible = false;

    switch(ComboBox1->ItemIndex)
    {
        case 0: // C++Builder和Delphi的变量类型
        {
            ListView1->Items->Clear();
            ListView1->Columns->Clear();
            TListColumn *NewColumn;
            TListItem *ListItem;
            AnsiString strTmp;
            // 重新添加标题
            for(int i=0;i<4;i++)
            {
                NewColumn = ListView1->Columns->Add();
                NewColumn->Caption = cd_vari[i].name;
                NewColumn->Width = cd_vari[i].width;
            }
            // 添加数据
            while(!Table2->Eof)
            {
                ListItem = ListView1->Items->Add();
                if(strTmp == Table2->FieldByName("Type")->AsString) //
                    ListItem->Caption = "";
                else
                {
                    strTmp =Table2->FieldByName("Type")->AsString;
                    ListItem->Caption = strTmp;
                }
                ListItem->SubItems->Add(Table2->FieldByName("Size")->AsString);
                ListItem->SubItems->Add(Table2->FieldByName("Delphi")->AsString);
                ListItem->SubItems->Add(Table2->FieldByName("CBuilder")->AsString);
                Table2->Next();
            }
            ListView1->Visible = true;
            break;
        }

        case 1: // C++Builder和Delphi的操作符
        {
            ListView1->Items->Clear();
            ListView1->Columns->Clear();
            TListColumn *NewColumn;
            TListItem *ListItem;
            AnsiString strTmp;
            // 重新添加标题
            for(int i=0;i<4;i++)
            {
                NewColumn = ListView1->Columns->Add();
                NewColumn->Caption = cd_op[i].name;
                NewColumn->Width = cd_op[i].width;
            }
            // 添加数据
            while(!Table2->Eof)
            {
                ListItem = ListView1->Items->Add();
                if(strTmp == Table2->FieldByName("Op")->AsString) //
                    ListItem->Caption = "";
                else
                {
                    strTmp = Table2->FieldByName("Op")->AsString;
                    ListItem->Caption = strTmp;
                }
                ListItem->SubItems->Add(Table2->FieldByName("OpType")->AsString);
                ListItem->SubItems->Add(Table2->FieldByName("Delphi")->AsString);
                ListItem->SubItems->Add(Table2->FieldByName("CBuilder")->AsString);
                Table2->Next();
            }
            ListView1->Visible = true;
            break;
        }
        case 2: // VCL库函数
        {
            if(TreeView1->Items->Count == 0)
            {
                TTreeNode *pTop;
                AnsiString strTmp;
                // 添加数据
                while(!Table2->Eof)
                {
                    if(strTmp != Table2->FieldByName("Type")->AsString)
                    {
                        strTmp = Table2->FieldByName("Type")->AsString;
                        pTop = TreeView1->Items->AddChild(0,strTmp);
                    }
                    TreeView1->Items->AddChild(pTop,Table2->FieldByName("FuncName")->AsString);
                    Table2->Next();
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -