📄 main.cpp
字号:
//---------------------------------------------------------------------------
#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 + -