当前位置:编程学习 > Delphi >>

Delphi的两个实用技巧

 

一.播放Flash
  首先,你的机器里要装有Flash播放软件(你的IE能显示Flash)。IE之所以能显示Flash是安装了由Macromedia公司提供的swflash.ocx控件,我们可以在Win98的$WindowsSystemMacromed Flash中或在Win2000中的$WinntSystem32 MacromedFlash中找到它。ActiveX控件在Windows里是通用的,Delphi也同样支持。
  运行Delphi后,选择选单Component→Import ActiveX Control,找到SWFlash.OCX 文件进行安装。安装完成后,ActiveX面板里出现TShockwaveFlash控件,这是Delphi对SWFlash.OCX的封装,现在我们就可以用这个控件来播放Flash了。拖一个Flash过来,放在Form上,指定其Movie属性为d: est.SWF,并按F9键加以运行即可。怎么样,运行效果不错吧?
  下面,笔者将具体介绍TShockwaveFlash主要属性、方法和事件,以便于读者开发。
TShockwaveFlash主要属性如下:
ReadyState:读一个flash文件时的状态,其中包括0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete;
TotalFrames:总帧数,只有当ReadyState = 4时才能访问该属性;
FrameNum:当前播放的帧;
Playing:播放或暂停一个flash;
Quality:指定当前渲染的质量,包括0=Low, 1=High、2=AutoLow、3=AutoHigh;
ScaleMode:缩放模式,0=ShowAll、1= NoBorder、2 = ExactFit;
AlignMode:对齐模式,Left=+1、Right=+2、Top=+4、Bottom=+8;
BackgroundColor:背景色,-1为默认颜色;
Loop:是否循环;
Movie:指定播放的flash文件路径,可以为一个URL。
TShockwaveFlash主要方法如下:
Play():开始播放动画;
Stop();停止播放动画;
Back();播放前一帧动画;
Forward():播放后一帧动画;
Rewind():播放第一帧动画;
SetZoomRect(int left, int top, int right, int bottom):设置缩放的区域;
Zoom(int percent):按百分比缩放;
Pan(int x, int y, int mode):缩放播放面板,其中模式0为按像数、1为按窗口百分比。

TShockwaveFlash主要事件如下:

OnProgress(int percent):读取一个flash时触发;
OnReadyStateChange(int state):状态改变时触发。states的值可以为0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete。


二.巧用(Windows的)API函数
  这里用几个具体的应用来说明:
应用1:
Delphi中有控件MEMO,当使用应控件输入内容或编辑时,如何确定光标当前的位置呢?这时就可以调用Windows API函数中的EM_LINEFROMCHAR和EM_LINEINDEX消息来确定MEMO控件中光标的当前行和列,具体调用方法的过程如下:
procedure TForm1.Button1Click(Sender: TObject);
var
LineNum:longint;
CharsBeforeLine:longint;
begin
LineNum := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,
Memo1.SelStart,0);
CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,
LineNum,0);
Label1.Caption:=Line: +IntToStr(LineNum + 1);
Label2.Caption:=Position: +IntToStr((Memo1.SelStart -
CharsBeforeLine)+1);
end;

应用2:
  Delphi中的控件TlistBox没有提供水平滚动条,如果想添加一个水平流动条,我们只需使用API函数给TListBox 发送一个LB_SetHorizontalExtent消息就行了。

源代码如下:
SendMessage(ListBox1.Handle,LB_SetHorizontalExtent,2000,
longint(0));

应用3:
  当我们需要获取所运行程序的计算机的分辨率时,有二种方法:①可以通过访问Delphi提供的SCREEN全局变量,即SCREEN.WIDTH和SCREEN.HEIGHT以像素点给出屏幕的分辨率。②利用WINDOWS的API函数GetDeviceCaps()来得到所用显示器的分辨率,
源代码如下:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
CASE GetDeviceCaps(GetDC(Form1.Handle), HORZRES) of
640 : //对640*480分辨率进行处理的代码;
800 : //对800*600分辨率进行处理的代码;
1024: //对1024*768分辨率进行处理的代码;
1280: //对1280*1024分辨率进行处理的代码;
END;
Application.Run;

补充:软件开发 , Delphi ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,