我该怎么办?

时间:2014-01-16 11:29:08

标签: forms delphi panel vcl effect

我试图在delphi中按下按钮时,我会显示一个下拉面板,其中包含以下选项:

Panel Desplegable

有谁知道如何使用VCL产生这种效果? 现在我有一个带有2个面板的表格,主要是总是显示并有一个侧面按钮,当我按下按钮时,侧面板显示,但我想产生效果。 谢谢

4 个答案:

答案 0 :(得分: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;

不完美,但希望能够给你一个好主意。

安迪

答案 1 :(得分:3)

你可以使用Jedi JVCL的TJvRollOut。 它就像一个崩溃和扩展的面板。您也可以查看Delphi: sliding (animated) panelHide, Slide And Fade Away Controls On A Delphi Form

答案 2 :(得分:2)

最后,我设法发挥了作用。我放了一个面板,我添加了一张图片。然后我在buton点击过程中使用了animatedwindows。

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

答案 3 :(得分:0)

你应该在申请表格中启用“Double Buffered”属性......这样可以防止闪烁..