《键盘鼠标和文件编程ppt培训课件》由会员分享,可在线阅读,更多相关《键盘鼠标和文件编程ppt培训课件(32页珍藏版)》请在金锄头文库上搜索。
1、Delphi程序设计教程,第11章 键盘、鼠标和文件编程,6.1 键盘的编程 6.2 鼠标的编程 6.3 文件的编程 6.3.1 适合于各种文件的基本操作 6.3.2 适合于文本文件的基本操作6.3.3 有类型文件 6.3.4 无类型文件 6.4本章小结 习题6,6.1键盘的编程 在Windows之中,可以判断键盘单击的事件有三种:(1)OnKeyDown:当用户单击键盘时,就会触发此事件。(2)OnKeyPress:当用户单击ASCII字符的键盘时,就会触发此事件。(3)OnKeyUp:当用户放开键盘时,就会触发此事件。OnKeyDown OnKeyUp用户按下 用户放开 OnKeyDown
2、和OnKeyPress TIME在这些事件中,OnKeyDown和OnKeyUp都会传入用户单击的Key值(word值),可以利用这些值,来判断用户按了哪些键,而这些值代表了Windows中的Virtual Key Code。而OnKeyPress所返回的是一个Char值,代表一个ASCII字符,而ASCII字符和Virtual Key Code是不相同的,因为Virtual Key Code中有代表ASCII的字符,但ASCII字符不包含全部的Virtual Key Code,因为Virtual Key Code中内含了很多功能键。,【例6.1】 在本例中利用左右方向键在不同的edit控件中
3、切换,利用edit控件的onkeydown事件进行处理,当用户按下方向键时,使用perform函数转换控件中的焦点。界面设计 使用Edit组件即可设计界面 程序设计procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begincase key ofvk_left:/如果是向左方向键beginif (sender as tedit).selstart0 then exit;perform(wm_nextdlgctl,1,0);if (activecontrol is tedit) th
4、en(activecontrol as tedit).SelStart:=(activecontrol as tedit).MaxLength-1;end;,vk_right:/如果是向右方向键beginif (sender as tedit).selstart(sender as tedit).gettextlen then exit;perform(wm_nextdlgctl,0,0);if (activecontrol is tedit) then(activecontrol as tedit).SelStart:=0;end;end;end;程序运行的效果,6.2鼠标的编程 常用鼠标的
5、事件有以下几种:(1)OnClick:当用户单击鼠标任何一个键时,就会触发此事件。(2)OnMouseDown:当用户单击鼠标时,就会触发此事件。(3)OnMouseMove:当用户单击鼠标在对象上移动时,就会触发此事件,但停止就不触发了。(4)OnMouseUp:当用户放开鼠标时,就慧触发此事件。(5)OnMouseWheel:当用户单击滚轮按钮时,就会触发此事件。(6)OnMouseWheelDown:当用户用滚轮按钮向下转动时,就会触发此事件。(7)OnMouseWheelUp:当用户滚轮按钮向上转动时,就会触发此事件。在这些事件中,OnMouseDown和OnMouseUp都会触发事件
6、,但是在用户单击时,可能会移动鼠标位置,使得两者被触发的对象是不同的,但OnClick和OnMouseDown是会触发在同一个对象上的。当用户在对象A按一下时,A会同时触发OnMouseDown OnClick OnMouseUp OnMouseMove当用户在对象A单击但在对象B放开时,A会触发OnMouseDown OnMouseMove OnMouseUpB会触发OnMouseMove 因此如果要触发OnClick事件,就必须要在一个对象按一下才行,否则只会有OnMouseDown、OnMouseMove、OnMouseUp这些事件。,【例6.2】 本例中实现了鼠标的锁定和解锁的功能。
7、界面设计 使用Button组件即可设计界面 程序设计procedure TForm1.Button1Click(Sender: TObject);var rtbutton2:trect;beginrtbutton2:=button2.BoundsRect;mapwindowpoints(handle,0,rtbutton2,2); /坐标换算clipcursor(rtbutton2); /限制鼠标移动区域end;/取消限制procedure TForm1.Button2Click(Sender: TObject);var rtscreen:trect;beginrtscreen:=rect(0
8、,0,screen.Width,screen.Height);clipcursor(rtscreen);end;,程序运行的效果,6.3文件的编程 6.3.1 适合于各种文件的基本操作Delphi的文件分为文本文件、有类型文件和无类型文件。在一般情况下,文件仅指磁盘文件,外设如打印机、显示器也是文件,这里的文件仅指磁盘文件。在有关文件的标准过程和函数中,有些是适用于所有文件的,有些是只适用于个别文件类型。下面将分别介绍适合所有文件的基本操作函数于过程及只适合于某种文件类型的基本操作函数的过程。 1. 与外部文件联系的建立与中断(1) 文件变量与外部文件建立联系。AssignFile过程的声明如
9、下:procedure AssignFile(var F; FileName: string);,(2) 文件变量与外部文件中断联系。CloseFile过程的声明如下: procedure CloseFile(var F); 2. 文件的打开与关闭 (1) 以读方式打开文件(Reset)。Reset过程的声明如下: procedure Reset(var F : File; RecSize: Word ); (2) 以写方式打开文件(Rewrite)。Reset过程的声明如下: procedure Rewrite(var F: File ; Recsize: Word ); (3) 用Eras
10、e过程删除文件。 Erase过程的声明如下: procedure Erase(var F);,6.3.2 适合于文本文件的基本操作 1. 以添加方式打开文件(Append) Append过程的声明如下: procedure Append(var F: Text); 2. 文本文件的读取与写入 (1) 用Read过程读取数据。 通过调用Read过程可以从文本文件中读取字符串、字符或数字。其声明如下: procedure Read( var F: Text; V1 , V2,.,Vn ); (2) 用Readln过程读取数据。 通过调用Readln过程可以从文本文件中读取字符串、字符或数字,直到一
11、行的结束。其声明如下: procedure Readln( var F: Text; V1 , V2, .,Vn );,(3) 用Write过程写入数据。 通过调用Write过程可以向文件中写入数据。其声明如下: procedure Write( var F: Text; P1 , P2,., Pn ); (4) 用Writeln过程写入数据。 通过调用Writeln过程可以向文件中写入一行数据,并在结尾处输入回车换行符。 procedure Writeln( var F: Text; P1 , P2, .,Pn ); 3. 文件的基本操作 【例6-5】设计一个简易文本编辑器,具有创建、编辑、
12、保存普通文本文件的功能,如图所示。 设计步骤如下: (1) 建立应用程序用户界面。,(2) 设置对象属性。 (3) 编写程序代码。 varForm1: TForm1;f:textfile;wfilename:string;flag:boolean;implementation$R *.DFM,编写按钮Button1的OnClick事件代码: procedure TForm1.Button1Click(Sender: TObject); beginassignfile(f,c:my documentsnewfile.txt);form1.caption:=newfile.txt;wfilenam
13、e:=newfile.txt;rewrite(f);memo1.enabled:=true;button1.enabled:=false;button2.enabled:=false;button3.enabled:=false;button4.enabled:=true;button5.enabled:=true;button6.enabled:=true;button7.enabled:=true;closefile(f); end;,编写按钮Button2的OnClick事件代码: procedure TForm1.Button2Click(Sender: TObject); var l
14、ine:string; begin if opendialog1.Execute then beginassignfile(f,opendialog1.filename);reset(f);form1.caption:=opendialog1.filename;memo1.enabled:=false;flag:=true;while not eof(f) do beginreadln(f,line);,memo1.LineS.add(line);end;button1.enabled:=false;button2.enabled:=false;button3.enabled:=false;b
15、utton4.enabled:=false;button5.enabled:=false;button6.enabled:=true;button7.enabled:=true;closefile(f);end; end;,编写按钮Button3的OnClick事件代码: procedure TForm1.Button3Click(Sender: TObject); var line:string; begin if opendialog1.Execute then beginwfilename:=opendialog1.filename;assignfile(f,wfilename);for
16、m1.caption:=wfilename;reset(f);memo1.enabled:=true;while not eof(f) do beginreadln(f,line);,memo1.LineS.add(line);end;button1.enabled:=false;button2.enabled:=false;button3.enabled:=false;button4.enabled:=true;button5.enabled:=true;button6.enabled:=true;button7.enabled:=true;closefile(f);end; end;,编写按钮Button4的OnClick事件代码: procedure TForm1.Button4Click(Sender: TObject); var i,lastline:integer; begin lastline:=memo1.lines.add()-1;assignfile(f,wfilename);rewrite(f);for i:=0 to lastline dobeginwriteln(f,memo1.linesi);end;closefile(f); end;,