📄 main.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h" //主窗体头文件
#include "DataModule.h" //数据模块头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TF_Main *F_Main;
//---------------------------------------------------------------------------
__fastcall TF_Main::TF_Main(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::CheckBox1Click(TObject *Sender)
{ /*****CheckBox1复选框单击事件 *****/
DM->T_Forecast->Edit(); //天气预报数据集处于编辑态
DBEdit4->Text = Now(); //提取系统当前时间,Now()为C++ Builder系统函数,返回TDateTime类型数据
Timer1->Enabled = true; //启动定时器,周期为1000毫秒
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::Timer1Timer(TObject *Sender)
{ /*****Timer1定时器响应事件 *****/
CheckBox1->Checked = false; //使复选框处于非选中状态
Timer1->Enabled = false; //关闭定时器
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn1Click(TObject *Sender)
{ /*****提交按钮单击事件 *****/
DBNavigator->BtnClick(nbPost); //相当于按下数据库导航条控件中nbPost按钮
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn2Click(TObject *Sender)
{ /*****取消按钮单击事件 *****/
DBNavigator->BtnClick(nbCancel); //相当于按下数据库导航条控件中nbCancel按钮
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::PageControlChange(TObject *Sender)
{ /*****PageControl不同标签页切换事件*****/
switch(PageControl->ActivePageIndex){ //判断PageControl现在切换到了那一页,对导航条控件数据源进行动态赋值,实现动态切换数据源的目的
case 0 : DBNavigator->DataSource = DM->DS_Forecast;
break; //导航导数据源为天气预报信息表
case 1 : DBNavigator->DataSource = DM->DS_Bulletin;
break; //导航导数据源为公告信息表
case 2 : DBNavigator->DataSource = DM->DS_News;
break; //导航导数据源为文字新闻信息表
case 3 : DBNavigator->DataSource = DM->DS_PicNews;
break; //导航导数据源为图片新闻信息表
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::UpdateDate()
{ /*****用户自定义更新发布日期记录函数*****/
CheckBox1Click(this); //相当于单击调用天气预报、系统设置标签页获取系统当前日期时间复选框
BitBtn2Click(this); //提交修改后的数据
}
void __fastcall TF_Main::BitBtn4Click(TObject *Sender)
{ /*****公告标签页上修改按钮单击事件*****/
UpdateDate(); //修改系统设置表中发布日期时间函数
DBNavigator->BtnClick(nbPost); //相当于按下数据库导航组件中的nbPost按钮
}
//---------------------------------------------------------------------------
int __fastcall TF_Main::GetMaxNum(TTable *Table)
{
if(Table->RecordCount == 0) //数据集记录为零判断
return 0;
int Rec = Table->RecNo; //保存数据集活动记录的当前位置
Table->First(); //设定数据集活动记录为第一条
int Max = 0;
while(!Table->Eof){ //以下代码遍历全部记录,求取最大的序号,当数据集指针指向最后一条记录时Table->Eof是真
if(Table->FieldByName("Bulletin_ID")->AsInteger > Max) //当前记录序号字段值与Max变量大小比较
Max = Table->FieldByName("Bulletin_ID")->AsInteger;
Table->Next(); //下移一条记录
}
Table->First(); //设定数据集活动记录为第一条
Table->MoveBy(Rec); //恢复遍历开始前数据集活动记录的位置
return Max;
}
void __fastcall TF_Main::BitBtn6Click(TObject *Sender)
{ /*****增加按钮单击事件 *****/
int i = GetMaxNum(DM->T_Bulletin)+1; //GetMaxNum是求T_Bulletin中最在的序号值
DM->T_Bulletin->Append(); //进入数据集中追加记录状态
DM->T_BulletinBulletin_ID->Value = i; //填充记录序号数据字段,注意这个赋值方法只有在字段编辑器中添加了赋值字段才可以使用
// DM->T_Bulletin->Post(); //提交改变后的数据集,添加了一个新记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn5Click(TObject *Sender)
{ /*****删除按钮单击事件 *****/
DBNavigator->BtnClick(nbDelete); //删除一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn9Click(TObject *Sender)
{ /*****文字新闻标签页上增加按钮单击事件 *****/
DM->DS_News->Enabled = false; //数据源控件处于非使能态,数据感知控件不再关联
DM->T_Count->First(); //当前活动记录指向第一条记录
DM->T_Count->MoveBy(1); //当前活动记录下移一条记录,指向第二条记录
int i = DM->T_Count->FieldByName("Count_Value")->Value; //取得News序号计数器计数值
DM->T_News->Insert(); //进入插入一条记录状态
DM->T_News->FieldByName("News_ID")->AsInteger = i;
DM->T_News->Post(); //执行插入记录操作,提交插入记录后的数据集
DM->T_Count->Edit(); //处于编辑状态
DM->T_Count->FieldByName("Count_Value")->AsInteger = i+1;
DM->T_Count->Post(); //执行编辑记录操作,提交编辑记录后的数据集
DM->DS_News->Enabled = true; //数据源控件处于使能态,数据感知控件恢复关系关联关系
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn11Click(TObject *Sender)
{
DM->T_News->First(); //移动当前活动记录为最前一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::BitBtn12Click(TObject *Sender)
{
DM->T_News->Last(); //移动当前活动记录为最后一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::FormCreate(TObject *Sender)
{ /*****主窗体创建事件*****/
LabeledEdit1->Text = GetCurrentDir(); //GetCurrentDir是取得当前路径函数,LabeledEdit是C++ Builer 6新增加的集Lable与Edit控件为一体的新控件
FileListBox1->Directory = LabeledEdit1->Text;
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::Button1Click(TObject *Sender)
{ /*****浏览...按钮单击事件*****/
AnsiString Dir = "C:\\Program Files\\MyApp"; //在字符串中两个\\表示一个\符号
//SelectDirectory是目录函数,自动弹出选择目录对话框
if (SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt,1000)){
LabeledEdit1->Text = Dir;
FileListBox1->Directory = Dir;
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::FileListBox1Click(TObject *Sender)
{ /*****文件列表框单击事件*****/
//取出选中文件的扩展名
AnsiString Ext = ExtractFileExt(FileListBox1->FileName).UpperCase();
//如果是可以显示的图形文件格式
if(Ext==".JPG"||Ext==".JPEG"||Ext==".BMP"||Ext==".ICO"||Ext==".EMF"||Ext==".WMF"){
//在图像显示区中间显示图形文件
Image1->Picture->LoadFromFile(FileListBox1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::FileListBox1DblClick(TObject *Sender)
{ /*****文件列表框双击事件*****/
//如果数据源不处于编辑态或插入态是地,使其外于编辑态
if(DM->DS_PicNews->State!=dsEdit||DM->DS_PicNews->State!=dsInsert)
DM->T_PicNews->Edit(); //使图片新闻信息表处于编辑状态
DBEdit9->Text = ExtractFileName(FileListBox1->FileName); //取出不包含路径的文件名显示在DBEdit9控件上
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::Button2Click(TObject *Sender)
{
AnsiString Command; //声明一个标准字符串变量
char lpBuffer[128];
GetWindowsDirectory(lpBuffer,128); //取得Windows目录路径名
Command = StrPas(lpBuffer); //char类型字符串转换成AnsiString类型字符串
Command+="\\EXPLORER.EXE /n,/e, ftp://"+LabeledEdit2->Text;
//查找同名进程是否在系统已经运行
HWND handle = FindWindow("ExploreWClass",Command.c_str()); //c_str()将AnsiString字符串转换成char
if(handle==NULL) //如果进程没有运行
WinExec(Command.c_str(),SW_SHOW); //建立进程
else
ShowWindow(handle,SW_SHOWNORMAL); //进程窗口若被最小化,正常方式显示
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::Button3Click(TObject *Sender)
{
AnsiString Command; //声明一个标准字符串变量
char lpBuffer[128];
GetWindowsDirectory(lpBuffer,128); //取得Windows目录路径名
Command = StrPas(lpBuffer); //char类型字符串转换成AnsiString类型字符串
Command+="\\EXPLORER.EXE /n,/e, http://"+LabeledEdit3->Text;
//查找同名进程是否在系统已经运行
HWND handle = FindWindow("ExploreWClass",Command.c_str()); //c_str()将AnsiString字符串转换成char
if(handle==NULL) //如果进程没有运行
WinExec(Command.c_str(),SW_SHOW); //建立进程
else
ShowWindow(handle,SW_SHOWNORMAL); //进程窗口若被最小化,正常方式显示
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -