就像“大名鼎鼎”个人信息管理系统里的窗体打开一样
有动画感

解决方案 »

  1.   

    //动画显示
        AnimateWindow(Self.Handle,50,AW_CENTER+AW_HIDE);
      

  2.   

    楼上的也可以,一般自己定义可以这样做,先初始化窗体为一条线状,然后放个定时器,然后再在定时器里判断窗体大小是否达到你的要求大小了,如果没有就把WIDTH,HEIGHT加上一个数,这样看起来就是窗体在慢慢变大了.
      

  3.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    beginForm1.Height:=Form1.Height+2;
    if  Form1.Height>100 then
    timer1.Enabled:=false;
      

  4.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      AnimateWindow(Self.Handle,500,AW_HOR_POSITIVE + AW_VER_POSITIVE);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      AnimateWindow(Self.Handle,500,AW_HOR_POSITIVE + AW_VER_POSITIVE + AW_HIDE);
    end;
      

  5.   

    照我的试试,如果需要我可以给你写个DEMO看看
      

  6.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      AnimateWindow(Self.Handle,500,AW_CENTER);//第三个参数改一下即可
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      AnimateWindow(Self.Handle,500,AW_CENTER+ AW_HIDE);//
    end;
      

  7.   

    真的出来了,可是有时候关闭按钮就不能用了还有就是我打开一个窗口时 比如消费管理口:打开按钮代码为
     if frmConsume = nil then
      begin
        frmConsume := TfrmConsume.Create(Application);
         frmConsume.GetSelectSql(1,'');
      end;
      frmConsume.Show;在frmConsume .create里加上这段代码 感觉闪的利害
      

  8.   

    在frmConsume .create里加上这段代码 感觉闪的利害
    --可能跟你
       frmConsume.GetSelectSql(1,'');
       里的操作有关
      

  9.   

    frmConsume.GetSelectSql(1,'');就是查询出来赋值,
      

  10.   

    timer1的Interval设为100,在timer1的双击事件里加入我上面的代码
    ps:漏了个end
      

  11.   

    回  hellolongbin(一个人) ,beyondsun(兆欣) :
    感觉效果还是不太好,首先初始时有表题显示
      我认为 “大名鼎鼎”的界面确实做得漂亮
      建议大家下载来看一看
    http://www.snksoft.com/opensoft.asp?soft_id=12
      

  12.   

    http://blog.csdn.net/luckyjan/archive/2004/10/09/129011.aspx
      

  13.   

    应该用动画窗口API:
    AnimateWindow(Self.Handle,500,AW_HOR_POSITIVE + AW_VER_POSITIVE + AW_HIDE);
      

  14.   

    笨方法
    form1,timer1各一个
    form1.BorderStyle设为bsNone;
    timer1.Enabled设为false;
    timer1.Interval设为10;
    procedure TForm1.FormShow(Sender: TObject);
    begin
        form1.Width:=100;
        form1.Height:=1;
        timer1.Enabled:=true;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var i,j:integer;
    begin
        form1.Width:=form1.Width+2;
        form1.Height:=form1.Height+2;
        form1.Left:=form1.Left-1;
        form1.Top:=form1.Top-1;
        if form1.Width>=696 then
        begin
            i:=form1.Width;
            j:=form1.Height;
            form1.BorderStyle:=bsSizeable;
            form1.Width:=i;
            form1.Height:=j;
            timer1.Enabled:=false;
        end;
    end;
    看看效果是不是你要的
      

  15.   

    我看了那个“大名鼎鼎”的软件了,它的显示速度很快,我把楼上的代码中form1.Width:=form1.Width+2;
        form1.Height:=form1.Height+2;
    中的2改成20,然后将timer1.Interval设为3或4,if form1.Width>=696改为400试了试感觉还成;不过“大名鼎鼎”的窗口关闭时是四个边框缩成一个点消失的,而不是整个窗口缩小。
      

  16.   

    我在自己程序中的about窗口用了这个东西,呵呵
    用c写的,跟pascal差不多:
    form的show事件:
       Form2->Width=20;
       Form2->Height=20;
       Timer2->Enabled=false;
       Timer1->Enabled=true;form的click事件(单击窗口关闭):
    Timer2->Enabled=true;
    timer1:
        Form2->Width=Form2->Width+25;
        Form2->Height=Form2->Height+25;
        if (Form2->Width>=260)
        {
            Timer1->Enabled=false;
        }
    timer2:
        Form2->Width=Form2->Width-25;
        Form2->Height=Form2->Height-25;
        if (Form2->Width<30)
        {
            Timer1->Enabled=false;
            Timer2->Enabled=false;
            Close();
        }
    其中timer1和timer2的interval都设为5,感觉效果还不错,从左上角出现,消失的时候也是缩到左上角消失