2014-01-16 210 views
2

我試圖做的,在Delphi中,當你按下一個按鈕,我顯示一個下拉麪板,這樣的選擇:我該怎麼辦這個效果?

Panel Desplegable

有誰知道如何使VCL這種效果? 現在我有一個2面板的形式,主要總是顯示並有一個側面按鈕,當我按下按鈕的側面板顯示,但我想做的效果。 謝謝

+0

很難知道從哪裏開始。你真的不是指vlc嗎?你到目前爲止有什麼?你以什麼方式卡住? –

+0

我使用[AnimateWindow](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632669%28v=vs.85%29.aspx)使用VCL表單時的WinAPI命令。缺點是你的用戶界面在動畫的時候被凍結,所以最好用它來做短暫和快速的動畫。 [1]: 「AnimateWindow」 –

+0

VLC(VideoLAN的客戶端)或VCL(可視化組件庫爲Delphi)???也許他需要一個滑出式面板+非矩形窗口(或兩個窗口)。 –

回答

7

我不知道具體的應用程序,具有透明度和其他東西。不過,我認爲你必須通過自己的某種循環來對你的面板/窗口進行動畫處理。我不知道任何VCL功能。

這裏是一個動畫的窗口下(它的快速和骯髒雖然)爲例:

enter image description here

代碼:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    I, X: Integer; 
begin 
    Form2.Width := 1; 
    Form2.Height := Form1.Height; 
    Form2.Left := Form1.Left + Form1.Width; 
    Form2.Top := Form1.Top; 
    Form2.Show; 

    Timer1.Enabled := true; 
end; 

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
    if I < 500 then 
    begin 
    I := I + 1; 
    Form2.Width := I; 
    end 
    else 
    begin 
    Timer1.Enabled := false; 
    end; 
end; 

並不完美,但希望不夠好,給你一個想法。

安迪

+0

I' d使用Application.ProcessMessages()重新考慮。如果用戶在動畫已經在進行中時再次點擊按鈕會怎麼樣? –

+1

Application.ProcessMessages - 不建議這麼做... – RBA

+4

不要使用ProcessMessages。計時器就是你想要的。看到彼此相鄰的'Sleep'和'ProcessMessages'讓我感到毛骨悚然! –

3

可以使用TJvRollOut從絕地JVCL。它的行爲就像一個可以讓人喜歡和擴大的面板。你也可以看看Delphi: sliding (animated) panelHide, Slide And Fade Away Controls On A Delphi Form

+1

的答案和努力,但他需要的形式之外 –

+0

從OP的問題我明白,他希望用一個面板 - '現在我有一個2格的表格' – RBA

+0

@ Arioch'The - 基於公認的答案,似乎是OP所要求的。一個動畫gif和一個複製粘貼代碼,這是正確的答案,所以OP得到了VLC所需的結果(是vlc)。 – RBA

2

最後,我設法做出了效果。我把一個小組,我添加了一張照片。然後我在按鈕點擊過程中使用了動畫窗口。

procedure TFTelefonoSIP.Button1Click(Sender: TObject); 
begin 
    if GDPanelLlamadasHidden = False then 
    begin 
    AnimateWindow(Panel1.Handle, 200, AW_SLIDE or AW_HOR_POSITIVE or AW_HIDE); 
    GDPanelLlamadasHidden := True; 
    end 
    else 
    begin 
    AnimateWindow(Panel1.Handle, 200, AW_SLIDE or AW_HOR_NEGATIVE or AW_ACTIVATE); 
    GDPanelLlamadasHidden := False; 
    end; 
end; 

但效果不是我想要的,有時圖像顯示閃光,不是很美觀。

enter image description here

0

,你應該能夠在申請表的「雙緩衝」財產......這應該防止閃爍..

+0

這不是一個答案。它應該是對@ elcharlie的回答的評論。 –