一.播放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;