可视化程序设计
媒体播放器
1.两个Edit框:Text置为空。
2 System中MediaPlayer组件:FileName置为歌曲的路径,AutoOpen属性置为True。
EnabledButton属性决定组件上的按钮是否可用。
MediaPlayer可以播放A VI格式的视频。
3 System中Timer组件中写入:
Edit1.Text:=timetostr(time());
if Edit1.Text= Edit2.Text then
Mediaplayer1.play;
4 Button组件:写入Caption置为闹钟停止
MediaPlayer1.Stop;
5 两个Lable组件分别写现在时间和闹钟时间。
6 Form 中的Caption可以改变Form的窗体标题。
7 Dialogs中的OpenDialog组件
电话本
1
使用Database Desktop制作数据库文件:File-New-Table
设置Field Name,Type中单击右键选择Alpha,Size。
编辑好后用Edit Data添加数据。
添加好数据后必须关上Database Desktop,否则在Delphi中会出错。2
新建BDE :Object-New-Ok更改名字PATH设置为新的DB
格式文件的地址。
PATH中的Drives可也改变磁盘地址保存后关闭BDE否则在Delphi中会出错.
3
(1)Table组件:DatabaseName设置为新的BDE
TableName设置为DB格式的表的名字
Table1.Open
(2)DataSource组件的DataSet属性设置为Table1。
(3)DBGird组件DataSource属性设为DataSource1.
( 4 )DBEdit组件Data Source设为Data Source1,
DataField设置为想要查阅字段的名称Name。
(5)Data Control中DBNavigator的Data Source属性置为
Data Source1
计算器
(1)Edit框:Text置为空
(2)Button按钮:数字按钮中写Edit1.Text:=Edit1.Text+'1';1~0 清除按钮Edit1.Text:='';小数点Edit1.Text:=Edit1.Text+'.';
在implementation前定义变量
x,y:real;
a:integer;
+:x:=StrToFloat(Edit1.Text);
a:=1;
Edit1.Text:=' ';
- : a=2
*: a=3
/: a=4
=按钮:
begin
case (a) of
1: Edit1.Text:=Floattostr(x+StrToFloat(Edit1.Text));
2: Edit1.Text:=Floattostr(x-StrToFloat(Edit1.Text));
3: Edit1.Text:=Floattostr(x*StrToFloat(Edit1.Text));
4: Edit1.Text:=Floattostr(x/StrToFloat(Edit1.Text));
end;
end;
end.
记事本(Memo组件:)
(1)改变Memo上显示的内容:改变lines属性。(2)若要在Edit里输入的内容显示到Memo里:
在Button里写程序:Memo1.lines.Add(Edit1.Text);
Edit1.Text:=‘’;
(3)一按Button就将指定位置(例:D盘里文件名为AAA.txt的文件里的内容读进去)的文件读到Memo里显示出来:
在Button里写程序:Memo1.lines.LoadFromFile(‘D:\AAA.txt’); (4)Memo里输入的内容被保存到指定位置(例:保存到D盘BBB 记事本里,若不存在BBB文件则新建一个)
在Button里写程序:Memo1.lines.SavetoFile(‘D:\BBB.txt’); (5)Dialogs里的OpenDialog和SaveDialog组件以及Standard里的Memo,Mainmenu组件。
Mainmenu主要设置功能栏,例如弄成这个样子:文件编辑帮助
打开复制
保存粘贴
另存为剪切
退出
打开中的程序:Opendialog1.Execute;
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); 保存中的程序:Savedialog1.Execute;
Memo1.Lines.SavetoFile(SaveDialog1.FileName);
另存为:Savedialog1.Execute;
Memo1.Lines.SavetoFile(SaveDialog1.FileName);
退出:close;
复制,粘贴,剪切里的程序分别为:Memo1.CopyToClipboard;
Memo1.PasteFromClipboard;
Memo1.CutToClipboard;
十一月二日用Delphi访问Excel表
1:新建Excel保存->利用控制面板设计别名指向Excel(控制面板->管理工具->ODBC数据管理器->添加->设计别名->选择工作簿以及之前保存的Excel)->利用BDE Administrator查看->进入Delphi编程环境->BDE中的table->DataBasename指向刚建的Excel别名->tablname用手动输入sheet1(该Excel的表格名字)->Datacontrols 和DataAcess中的DataSource和DBGird(操作同以前)
2:用Delphi访问数据库并对其进行修改
准备好后,用Button组件一按就对该表的某一行做某种操作,此时要保证Table1已经添加了字段
Button:Table1.First;
While not Table1.EOF do
Begin
Table1.Edit;
Table1No.value:= Table1No.value+1;
Table1.Post; Table1.Next;
End
将Table1数据中的字段合法化:右击Table1->Fields Edit->右击窗体->选Add Fields->选择OK->则table中的各字段就会出现在代码编程中(为table添加字段)。
3:访问数据库时进行筛选条件的设置
添加组件Edit1,Edit2,Button1(Edit1,Edit2用于筛选范围)用lable 显示提示
Table1的Filter属性(设置条件)例如:NO>=10 (Table1的Filter 属性置为true。
Button: Table1.Filtered:=false;
Table1.Filter:=’NO>=’+Edit1.Text+’andNO<=’+ Edit2.Text;
Showmessage(Table1.Filter);(调试语句将Table1.Filter里的内容显示一下)
Table1.Filtered:= true;
当有多个条件进行筛选时不一定都设定才能筛选,用参数的方法设定筛选条件
ButtonClick: var f:string;
Begin
Table1.Filtered:=false; f:=’‘;(f为空)
If Edit1.Text<>’‘then f:=f+’NO>=’+ Edit1.Text+’and’;
If Edit2.Text<>’‘then f:=f+’NO<=’+ Edit2.Text+’and’;
f:=copy(f,1,length(f)-5);//把最后的f中的and删除
Showmessage(Table1.Filter);
Table1.Filter:=f;
Table1.Filtered:= true;
(以上对于数值型的成立)若为字符串则用以下程序,用另外的一个Edit3用于设置字符串条件
在Button里加上一句话:if Edit3.Text<>‘’then f:=f+’memo=’’’+ Edit3.Text+’*’’and’;
(*为通配符,不限定字符个数)
建立索引:
在Database Desktop中建立索引,用Desktop打开数据表选择一个table->restruction->Define(起名,例如PZBCODE,PZBID) 用radioButton1指向PZBCODE,用radioButton2指向PZBID radioButton1里的程序:table1.close;
table1.IndexName:=‘PZBCODE’;
table1.open;
radioButton2里的程序同1的。table1.IndexName:=‘PZBID’;
十一月九日数据库连接
一:BDE -> Databases指向数据库-> 保存->打开Delphi6
(1)安装3个table组件,设置同一个DatababaseName,分别设置
TableName.
(2)安装2个DataSource分别对应2个table设置Tata1(pza),
table2(pzb).
(3)安装3个DBEdit(在Data Controls中):用于显示pza的三
个字段:No,Data,Memo.
DBEdit1:Datasourse->Table1(pza),DateFileld->No.
DBEdit2, DBEdit3: Datasourse分别->Table2,3(pza,pza),
DateFileld->Data,Memo.
(4)安装DBNavigater: Visible Buttons展开,将不需要的置为false.
Datasourse->Table1(pza).
(5)安装DBGrid: Datasourse-> Datasourse2(pzb)(用于显示pzb)
连接Table1与Table2,将Table1(pza)设为主动表,Table2(pzb)设为从动表:①table2(pzb)的MasterSourse-> Datasourse1(pza). ②将table2(pzb)的MasterField打开,将两个ID进行连接(用于显示哪两个字段相连接).Available Indexes设置为IndexID
Add键确定
(6)
(7)Form: table1.open; table2.open;
(8)在DBGrid1中的pzb显示中连接另一个数据库文件KM的一个
字段:连接table2与table3。
Table2(pzb)的字段添加:右击table2(pzb)打开添加的字段,右击对话框中New Field填写Name类型String,Size30,,Fieldtype(lookup),KeyField(code),Dataset(table3(km)),lo
okup keys(code),Result Field(Name).
字段删除:①可在table中删除Delete永久删除,但可能会影响DBGrid显示或table间的连接受影响。②DBGrid中“删除”即不显示该字段。右击DBGrid选中Column Field进行删除。
字段中文化:DBGrid->Column Field->属性title中caption 进行修改。
十一月二十三日动态删除
1:前章介绍删除只能删除一项,无法动态进行删除用户想删除的内容。
添加组件:Edite框。将Button里的程序改为:Query2.SQL.clear;
Query2.SQL.Add(‘Delete from Pza where Num = “+Edit Text); Query2.Exec.SQL;
Query1.Close;
Query1.open;
2:筛选方法一:字符串拼接。
进行筛选条件:组件:Edit1,Edit2,Button1.
Button1: Query1.Close;
Query1.SQL.clear;
Query1.SQL.Add(‘select* from pza NUM>=’+Edit1.Text);
Query1.SQL.Add(‘And NUM<=’ +Edit2.Text);
Query1.open;
筛选方法二:参数设置。
Query1 SQL属性:selete *from pza‘where NUM>=:X and NUM<=:Y
Params属性:打开显示框,选中X,设置X的属性Data type:integer params:ptlnput
Button代码:Query1.Close; Query1.ParamByName(‘X’).Value:=strtoint(Edit1.Text);
Query1.ParamByName(‘Y’). Value:=strtoint(Edit2.Text);
Query1.open;
为X,Y赋初值:Query1->params->x->value (初值必须为记录存在的项目)
3:用Query组件代替之前的三个table组件进行同一功能的编程。
DBEdit1: DtaeSource-> DtaeSource1; DateField->NUM
DBEdit2: DtaeSource-> DtaeSource1; DateField->Data
DBEdit3: DtaeSource-> DtaeSource1; DateField->Memo
添加Query的所有字段,并在DBGrid右击选中Column Field,删除不需要显示的字段。
SQL:select *from pza,pzb (利用以上步骤只留下Name字段)Where pza.ID and (pzb.code=km.code)↑NUM=:x
Button2:用于向下翻一个记录。
Query1.Close;
Query1.ParamByName(‘x’).value=Query1.ParamByName(‘x’) .value+1; Query1.open;
打印(最初的打印,用table组件)
组件:table指向pza,DtaeSource指向table, DBGrid指向DtaeSource1。
QReport中的组件(1)QuickRep:右击选中Report settings.
Portrait代表纸竖着,Margin意味着纸的边界,Dataset属性:确定打印的二维表。
(2)QRBand(打印区域):Bandtype属性置为rbDetail
(3)QRDBText(输出字段的位置):
DataSet->table1
QRDBText1: DateField->NUM QRDBText2: DateField->Data
QRDBText3: DateField->Memo
Button1: QuickRep1.preview;(让用户检查是否为要打印的数据)
十一月30日打印(用Query做报表)
一:最基本打印
(1)Query1:Database Name->别名
SQL:select *from pza
(2)QuickRep1: DataSet->Query1(若不设置该属性则只打印一行)
(3)QRband1放在QuickRep1上,BandType->rbDetail.
在QuickRep1上放三个QRDBText(1,2,3),其DateSet属性指向Query1,其DataFeild属性分别为:No,Date,Memo. FormActivate: Query1.open;
Button1: QuickRep1.preview;
二:打印表框
(1)加一个QRBand2: BandType->rbTitle(title在detail之前)QReport:QRlabel放在QRBand2内,修改Caption.
(2)第一个QRBand1的Frame打印左线,右线,底线。第二个QRBrand2只打印下线。
* 打印竖线:在两个QRDBText中间放QRlabel,Caption改为“|”,长度为横格长短(自己调)
三:打印标题
QRBand3:BandType->rbColumnHeader
QRlabel放在QRBand3上,Caption->number
四:页码
QRBand4:BandType->rbpagefooter
加一个QRSysData放在QRBand4上,属性Data改为Pagenumber. 五:页码相加合计
QRBand5: BandType->rbSummary
QRExpr1: Expression: function->sum->下拉->Database
Field->Num->ok->ok->打印预览。
用table做分组打印表:list group (分组打印)(该表必须是按分组条件排好序的)
一:
(1)table1:利用pzb中ID为分组原则设置Database Name,Table Name:pzb
(2) QuickRep1:DataSet->table1 在QuickRep上放QRBand1,其BandType->rbDetail.
(3)在QRBand1上放四个QRDBText分别指向order,code,DB,CR. Form: table1.open; button1: QuickRep1.preview;
(4) QRGroup: 类型为Group Header与BandType中的rbGroupHeader不一样。若分组打印必须用QRGroup。加一个QRDBText放在QRGroup上,指向ID。加一个QRlabel1,标明以什么分组,例如:ID= 在保证已经添加字段的前提下QRGroup属性Expression-> DatabaseField->table->ID: table1.ID 如果未按照ID顺序排好,则设置table属性IndexName:pzbID 二:将每个ID分格
QRGroup:上,左,右线。QRBand1:左,右加QRBand2:BandType->rbGroupFooter 左,右,下
三:合计DB与CR
分别在QRBand2上安两个QRExpr,对应DB,CR
QRExpr:Expression->sum->continue->DatabaseField->table1.DB (CR也一样)->ok
ResetAfter Print属性:true (每组合计一次)
十二月七日用两个form打印
Form1显示二维表,Form2打印。
1:两个table分别指向pza,pzb.两个DataSource.
2: table2的MasterSource属性-> DataSource1, table2的MasterFeild将两个ID相连。
3:是三个DBEdit指向table1的no,memo,date.
4: 安装DBNavigter. DBGrid指向table2.