可视化编程---------图片管理系统
通过对可视化编程的学习,考察掌握的情况,而重点是在数据库应用和多媒体编程技术
方面。
做一个图片管理系统,可以进行如下的操作:
1) 可添加、删除图片。添加是将名称、路径存入数据库,删除是要从数据库中删除。 2) 以列
的形式列出系统图片,点击可查看。
3) 能按名称查找一副图片,并且能统计系统中的图片数量。
1) 实验需要自己先建一个数据库,Fieldname设计了三个,即图片名,地址,分类。 2) 添加删除数据库中的内容,我们知道有DBNavigator,可直接实现这种操作。此外
ActionList也可以实现,ActionList富含很多的按钮操作,包括导航器中的按钮操作,
用一Button 与之相连,即可实现
3) 以列表显示图片,可以用DBGrid来实现,也可以用ListBox来做,用DBGrid可以
只显示图片名,而将其他信息隐藏,而用ListBox则需将地址显示出来。 4) 查找,统计图片与书上操作相似。
1、 建一文件夹在E盘,命名TPGL;
2、 建数据库,以图片名为关键字,效果如图所示,并建别名为tpgl;
3、打开C++ Builder ,先将工程保存,作出主界面如图
3、 新建一个Form,在进入按钮下写代码
Form2->show(); 当然要在头文件上添加#include "Unit2.h"
4、 在Form2中用PageControl, 新建四个页面,
1) 图片添除,效果如图
实际上是用ActionList 新建了两个
按钮, DataSetInsert1, DataSetDelete1,
然后insert delete 两个按钮的ACTION分别与其连接。
2) 列表浏览,效果如图
使用ListBox操作,右下角有四个按钮,分别是添加到列表,从列表中删除,从数据库中添
加,清空列表。鼠标移到按钮上时会有显示操作的目的,用Label实现的。其中添加是从文
件中添加,有OpenPictureDialog组件,同时左边会显示出添加的图片来。如下图所以
3)按名查询,如图所示
只用了一个Edit和一个Image组件,如有则显示图片,无则提示
5) 数量统计,如图
void __fastcall TForm2::Button3MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
Label5->Visible =true;
Label6->Visible =false;
Label7->Visible =false;
Label8->Visible =false;
}
这里其他三个组件也是相似的操作。
//--------------------------------------------------------------------------- void __fastcall TForm2::TabSheet2MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{ \\设置鼠标移到其他的地方,四个Label组件是不可见的,只有移到哪个按钮,才显示相
应的内容
Label8->Visible =false;
Label6->Visible =false;
Label7->Visible =false;
Label5->Visible =false;
}
//--------------------------------------------------------------------------- void __fastcall TForm2::Edit4KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{\\按名查询图片
if(Key==13&&Edit4->Text!="")
{
Table1->SetKey() ;
Table1->FieldByName("TPM")->Value=Edit4->Text;
if(!Table1->GotoKey())
ShowMessage("没有要查的图片");
else
Image2->Picture->LoadFromFile(Table1->FieldByName("DZ")->AsString) ;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button7Click(TObject *Sender)
{\\统计总数,以及各组分类中的图片数量
int i,jia,zhen,feng;
i=jia=zhen=feng=0;
Table1->Open() ;
Table1->First() ;
while(!Table1->Eof ) \\这里编写的时候提示有错误,检查不出,忽略,最后可以运行
{if(Table1->FieldByName("FL")->AsString=="JIATING" )
jia++;
else if(Table1->FieldByName("FL")->AsString=="ZHENCANG")
zhen++;
else feng++;
i++;
Table1->Next() ;
}
Edit5->Text = IntToStr(i);
Edit6->Text = IntToStr(jia);
Edit1->Text = IntToStr(zhen);
Edit7->Text = IntToStr(feng);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::ListBox1Click(TObject *Sender)
{\\设置在列表中选中,点击可查看
for(int i=0;i
Items->Count;i++)
if(ListBox1->Selected[i])
Image1->Picture->LoadFromFile(ListBox1->Items->Strings[i] );
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{\\将数据库中的内容全添加在列表上
int i=0;
Table1->Open() ;
Table1->First() ;
while(!Table1->Eof )
{ListBox1->Items->Strings[i] = Table1->FieldByName("DZ")->AsString ;
i++;
Table1->Next() ;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm2::Button3Click(TObject *Sender)
{\\添加图片到列表,同时显示出来
if(OpenPictureDialog1->Execute() )
{ ListBox1->Items->Add(OpenPictureDialog1->FileName );
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName );
}
}
程序编好了可以运行,但是在编程序的过程中不停的提示有问题
[C++ Error] Unit2.cpp(1): Unable to invoke Code Parameters due to errors in source code 这是出现在用Table组件时,只要有加括号的代码立马有如上的提示,我看不出错误,因此
忽略了,最后运行,可以通过,但不知道为何。我已在程序中做了标注。
这次是上机考试,我选的是图片管理系统,一开始就把总体的思路给想好了,像第一步
中的用导航器的实现,第二步倒是有些像播放列表,但是可以简单的操作出来,我想用
DBGrid来实现,做成播放列表的样子,但是自己对文件的操作知之甚少,在网上看了些程
序也没有调出来,所以只得进行简单的操作,将地址都显示在了列表上,但是不甘心,我又
做了一些小的操作丰富了一下这个界面。像后两步的操作就很简单,打开Table,指针操作。 这次上机让我学到了很多,像运用ActionList组件,因为不懂,而又遇到了那么多问题,敦
促着我去学习,也在这样的学习中认识到了很多,体会到了乐趣。