可视化程序设计

媒体播放器

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.

相关文档
最新文档