小豬爸常常在電影裡或是Apple電腦中可以看到
擴張式的視窗顯示方法
很遺憾的,在Windows中小豬爸並沒有發現這個功能(WinXP)
所以豬爸就想說來試試看能不能用程式(BCB, OWL, VCL)的方法來達成,
結果是可以的,雖然效果差強人意了點~
首先要拉一個Timer的VCL到Form裡面來
並且在這個程序中加進下面的程式碼(需依程式不同去修改裡面的值)
Form1->Width = Form1->Width + 32 ;
Form1->Height = Form1->Height + 32 ;
//32的值可以一速度去調整,因為我們用Timer來計時,所以理論上應該不同速度的電腦
//每次呼叫這個程序的間隔應該是相同的。
if(Form1->Width > iORGWindowWidth){
Form1->Width = iORGWindowWidth ;
WWidthOK = true ;
}//處理當寬度已經到達我們所設定的值之後,將Window的寬度設定為我們要的值,並且設定旗標
另外,在FormShow這個程序中,我們要加進下面的程式碼,
if(Form1->Height > iORGWindowHeigh){
Form1->Height = iORGWindowHeigh ;
WHeiOK = true ;
}//處理當高度已經到達我們所設定的值之後,將Window的高度設定為我們要的值,並且設定旗標
if((WWidthOK == true) && (WHeiOK == true)){
WPosTOK = true ;
WPosLOK = true ;
//如果高寬都已經到達我們所設定的目標,就將視窗位置旗標設定為 true
}else{
Form1->Top = Form1->Top - 16 ;
Form1->Left = Form1->Left - 16 ;
if(Form1->Top < iORGPosTop){
Form1->Top = iORGPosTop ;
WPosTOK = true ;
}
if(Form1->Left < iORGPosLeft){
Form1->Left = iORGPosLeft ;
WPosLOK = true ;
}
} //更該視窗的位置,這樣才能營照出從中間放射出來的顯現方式,16 的值恰好為 32/2
if((WWidthOK == true) && (WHeiOK == true) && (WPosTOK == true) && (WPosLOK == true)){
Timer1->Enabled = false ;
} //如果上面的條件都達到了,即表示視窗已經顯示到我們要的狀態,所以將Timer關閉
主要都是在做一些參數的初始化。
iORGWindowWidth = Form1->Width ;
iORGWindowHeigh = Form1->Height ;
iORGPosTop = Form1->Top ;
iORGPosLeft = Form1->Left ;
Form1->Width = 2 ;
Form1->Height = 2 ;
Form1->Top = iORGPosTop + (iORGWindowHeigh / 2) ;
Form1->Left = iORGPosLeft + (iORGWindowWidth / 2) ;
WWidthOK = false ;
WHeiOK = false ;
WPosTOK = false ;
WPosLOK = false ;
Timer1->Enabled = true ;
這樣就可以在視窗開啟的時候有一個小動畫了~
試試吧~
下次我在把視窗結束的部份貼上來~
2007年8月13日 星期一
[BCB] 土法煉鋼式的視窗顯現動畫
張貼者:
向風的孩子
於
凌晨1:34
標籤: Coding Tech
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言