Delphi实验.docx
《Delphi实验.docx》由会员分享,可在线阅读,更多相关《Delphi实验.docx(16页珍藏版)》请在冰点文库上搜索。
Delphi实验
一·实验目标
1、内容:
键鼠、多媒体编程及DLL创建和使用
2、要求:
掌握键盘鼠标编程常用事件;掌握DLL编程方法。
二·实验内容
实验一
1、实验内容:
关于鼠标拖动操作的验证性实验:
教材158页例6.3
2、实验结果:
运行代码(如图1)
图1
将输入文本拖至下方(如图2)
图2
3、核心代码:
procedureTForm1.Edit1MouseDown(Sender:
TObject;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
ifButton=mbLeftthen
(SenderAsTEdit).BeginDrag(False);
end;
procedureTForm1.Memo1DragDrop(Sender,Source:
TObject;X,Y:
Integer);
begin
if(SenderIsTmemo)and(SourceIsTedit)then
(SenderAsTmemo).Lines.Add((SourceAsTEdit).Text);
end;
procedureTForm1.Memo1DragOver(Sender,Source:
TObject;X,Y:
Integer;
State:
TDragState;varAccept:
Boolean);
begin
begin
ifSourceIsTeditthen
Accept:
=True;
end;
end;
实验二
1、实验内容:
完成下面截图关于图形组件以及画笔画刷使用的程序,可参考教材176页例7.3
2、运行结果
如图3
图3
3、核心代码
procedureTForm1.FormCreate(Sender:
TObject);
begin
pen:
=1;
penbrush:
=true;
SetLength(p,1);
end;
procedureTForm1.N1Click(Sender:
TObject);
begin
ifopendialog1.Executethen
begin
end;
end;
procedureTForm1.N2Click(Sender:
TObject);
begin
ifsavedialog1.Executethen
begin
end;
end;
procedureTForm1.PaintBox1MouseDown(Sender:
TObject;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
firstp.X:
=X;
firstp.Y:
=y;
p:
=nil;
SetLength(p,1);
p[0].X:
=X;
p[0].Y:
=Y;
SetLength(p,length(p)+1);
end;
procedureTForm1.PaintBox1MouseMove(Sender:
TObject;Shift:
TShiftState;X,
Y:
Integer);
begin
p[high(p)].X:
=X;
p[high(p)].Y:
=Y;
SetLength(p,length(p)+1);
end;
procedureTForm1.PaintBox1MouseUp(Sender:
TObject;Button:
TMouseButton;
Shift:
TShiftState;X,Y:
Integer);
begin
if(pen=1)then//画笔
begin
penbrush:
=true;
p[high(p)].X:
=X;
p[high(p)].Y:
=Y;
PaintBox1.Canvas.Polyline(p);
end;
if(pen=2)then//直线
begin
PaintBox1.Canvas.MoveTo(firstp.X,firstp.Y);
PaintBox1.Canvas.LineTo(X,Y);
end;
if(pen=3)then//矩形
begin
PaintBox1.Canvas.rectangle(firstp.X,firstp.Y,X,Y);
end;
if(pen=4)then//圆形
begin
PaintBox1.Canvas.ellipse(firstp.X,firstp.Y,X,Y);
end;
if(pen=5)then//圆角矩形
begin
PaintBox1.Canvas.roundrect(firstp.X,firstp.Y,X,Y,10,10);
end;
end;
procedureTForm1.Button10Click(Sender:
TObject);//修改颜色
begin
ifColorDialog1.Executethen
begin
PaintBox1.Canvas.Pen.Color:
=ColorDialog1.Color
end
else
begin
PaintBox1.Canvas.Pen.Color:
=clBlack;
end;
end;
procedureTForm1.Button11Click(Sender:
TObject);
begin
PaintBox1.Canvas.Brush.Style:
=bsSolid;
end;
procedureTForm1.Button13Click(Sender:
TObject);
begin
PaintBox1.Canvas.Brush.Style:
=bsBDiagonal;
end;
procedureTForm1.Button14Click(Sender:
TObject);
begin
PaintBox1.Canvas.Brush.Style:
=bsFDiagonal;
end;
procedureTForm1.Button15Click(Sender:
TObject);
begin
PaintBox1.Canvas.Brush.Style:
=bsCross;
end;
procedureTForm1.Button16Click(Sender:
TObject);
begin
PaintBox1.Canvas.Brush.Style:
=bsDiagCross;
end;
procedureTForm1.Button19Click(Sender:
TObject);//修改填充色
begin
ifColorDialog1.Executethen
begin
PaintBox1.Canvas.Brush.Color:
=ColorDialog1.Color
end
else
begin
PaintBox1.Canvas.Brush.Color:
=clBlack;
end;
end;
procedureTForm1.Button1Click(Sender:
TObject);//line
begin
pen:
=2;
//showmessage(inttostr(pen));
end;
procedureTForm1.Button2Click(Sender:
TObject);//矩形
begin
pen:
=3;
end;
procedureTForm1.Button3Click(Sender:
TObject);//圆形
begin
pen:
=4;
end;
procedureTForm1.Button4Click(Sender:
TObject);//圆角矩形
begin
pen:
=5;
end;
procedureTForm1.Button5Click(Sender:
TObject);//画笔
begin
pen:
=1;
end;
procedureTForm1.Button6Click(Sender:
TObject);
begin
penbrush:
=false;
pen:
=6;
PaintBox1.Canvas.Brush.Style:
=bsSolid;
PaintBox1.Canvas.Brush.Color:
=clBlack;
end;
procedureTForm1.Button7Click(Sender:
TObject);//实线
begin
PaintBox1.Canvas.Pen.Style:
=psSolid;
end;
procedureTForm1.Button8Click(Sender:
TObject);//虚线
begin
PaintBox1.Canvas.Pen.Style:
=psDash;
end;
procedureTForm1.Button9Click(Sender:
TObject);//点虚线
begin
PaintBox1.Canvas.Pen.Style:
=psDashDot;
end;
procedureTForm1.Edit1Change(Sender:
TObject);//修改粗细
begin
PaintBox1.Canvas.Pen.Width:
=strtoint(Edit1.text);
end;
实验三
1、实验内容:
媒体播放器组件的使用:
教材189页例7.10
2、实验结果:
运行代码(如图4)
图4
点击打开按钮,选择示例视频(如图5)
图5
点击播放(如图6)
图6
3、核心代码
procedureTForm1.Button1Click(Sender:
TObject);
begin
opendialog1.DefaultExt:
='AVT';
opendialog1.FileName:
='*.wmv';
ifopendialog1.Executethen
begin
mediaplayer1.FileName:
=opendialog1.FileName;
mediaplayer1.Open;
end;
end;
procedureTForm1.Button2Click(Sender:
TObject);
begin
mediaplayer1.Next;
end;
procedureTForm1.Button3Click(Sender:
TObject);
begin
mediaplayer1.Back;
end;
procedureTForm1.Button4Click(Sender:
TObject);
begin
mediaplayer1.Open;
mediaplayer1.Play;
end;
procedureTForm1.Button5Click(Sender:
TObject);
begin
ifbutton5.Caption='暂停'then
button5.Caption:
='恢复'
else
button5.Caption:
='暂停';
mediaplayer1.Pause;
end;
实验四
1、实验内容:
DLL文件的创建:
教材204页课后题8-5
2、核心代码
libraryProject1;
uses
SysUtils,Classes;
{$R*.res}
vari:
integer;flag:
boolean;
functionsushu(a:
integer):
boolean;stdcall;
begin
flag:
=true;
fori:
=2toado
begin
if(amodi=0)and(i<>a)then
begin
flag:
=false;
break;
end;
end;
result:
=flag;
end;
exports
sushu;
begin
end.
实验五
1、实验内容
DLL文件的静态调用和动态调用:
教材204页课后题8-5
2、实验结果
运行代码(如图7)
图7
输入数字,例3,点击静态(如图8),点击动态(如图9)
图8图9
输入数字,例4,点击静态(如图10),点击动态(如图11)
图10图11
3、核心代码:
implementation
{$R*.dfm}
functionsushu(a:
integer):
Boolean;stdcall;external'Project1.dll';
procedureTForm1.Button1Click(Sender:
TObject);
begin
ifsushu(strtoint(edit1.Text))then
edit1.Text:
='该数是素数!
'
else
edit1.Text:
='该数不是素数!
';
end;
Type
Tsushu=function(a:
integer):
Boolean;stdcall;
procedureTForm1.Button2Click(Sender:
TObject);
var
pfunc:
TFarProc;
hdl:
THAndle;
begin
hdl:
=loadlibrary('Project1.dll');
ifhdl>32then
begin
pfunc:
=getprocaddress(hdl,'sushu');
ifss(pfunc)(strtoint(edit1.Text))then
edit1.Text:
='该数是素数!
'
else
edit1.Text:
='该数不是素数!
';
end;
freelibrary(hdl);
end;