如何用C++Builder来实现像QQ那样的上下滑动菜单啊,我没有思路,各位大侠救救我吧!
我遇到了一个难题,就是如何用BCB来实现象QQ那样的上下滑动菜单,
我没有思路,目前还不清楚会涉及到哪些关键技术,痛苦啊,各位大侠,救救我吧。
希望能指点一些思路或者明示一些关键技术。最好能有相关的程序代码。
十万火急哪!!!!
问题点数:20、回复次数:21Top
1 楼SSTS(铁冰)回复于 2001-06-27 13:51:10 得分 0
响应按钮的OnClick事件,
里面用一个循环,改变按钮的Top
当然你自己要判断是否已经是最上还是最上!Top
2 楼dbxmcf(刀板虾米)回复于 2001-06-27 14:12:47 得分 20
我给你一个,这是我毕业设计花了一个小时临时凑数的,不过很好用
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Panel3->Align=alNone;
Panel4->Align=alNone;
Panel5->Align=alNone;
Panel4->Top=Panel1->Height-Panel4->Height;
Panel3->Top=Panel4->Top-Panel3->Height;
Panel5->Top=Panel2->Top+Panel2->Height;
Panel4->Align=alBottom;
Panel3->Align=alBottom;
Panel5->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if (Panel3->Align==alBottom)
{
Panel3->Align=alNone;
Panel4->Align=alNone;
Panel5->Align=alNone;
Panel3->Top=Panel2->Top+Panel2->Height;
Panel5->Top=Panel3->Top+Panel3->Height;
Panel3->Align=alTop;
Panel4->Align=alBottom;
Panel5->Align=alClient;
}
else if (Panel3->Align==alTop)
{
Panel4->Align=alNone;
Panel5->Align=alNone;
Panel5->Top=Panel3->Top+Panel3->Height;
Panel4->Align=alBottom;
Panel5->Align=alClient;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if (Panel4->Align==alBottom)
{
Panel4->Align=alNone;
Panel5->Align=alNone;
Panel4->Top=Panel3->Top+Panel3->Height;
Panel5->Top=Panel4->Top+Panel4->Height;
Panel4->Align=alTop;
Panel5->Align=alClient;
}
}
//---------------------------------------------------------------------------
头文件如下:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TPanel *Panel1;
TPanel *Panel2;
TPanel *Panel3;
TPanel *Panel4;
TPanel *Panel5;
TSpeedButton *SpeedButton1;
TSpeedButton *SpeedButton2;
TSpeedButton *SpeedButton3;
void __fastcall SpeedButton1Click(TObject *Sender);
void __fastcall SpeedButton2Click(TObject *Sender);
void __fastcall SpeedButton3Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
放一个Panel...来不及写了,还有事,很简单但是多数人认为很烂的办法,如果要全部的例子代码给个mail,我发过去Top
3 楼dbxmcf(刀板虾米)回复于 2001-06-27 14:13:43 得分 0
晚上见Top
4 楼dbxmcf(刀板虾米)回复于 2001-06-27 14:17:30 得分 0
要是你觉得看程序眼花的话就别看了,还有Panel和SpeedButton的属性设置一大堆来不及讲了Top
5 楼songhtao(三十年孤独)回复于 2001-06-27 14:44:05 得分 0
这种东西容易呀,循环改变几个TSpeedButton加载的图片就可以造成按钮移动的假象了。根本没有什么技术可言。早就实现了。Top
6 楼songhtao(三十年孤独)回复于 2001-06-27 15:02:55 得分 0
而且通过设置flat可以造成按钮浮动、沉下的效果,这些根本不是什么技术问题。可能是因为qq的名声干扰了你的判断,所以你觉得“我遇到了一个难题,就是如何用BCB来实现象QQ那样的上下滑动菜单,我没有思路,目前还不清楚会涉及到哪些关键技术,痛苦啊,”。不要被吓着了,如果你有打倒一切反动权威的胆量,这些东西就很好解决了。Top
7 楼Sammo(三毛)回复于 2001-06-27 15:08:43 得分 0
sammochoi@china.com
可以的话请提供源程序学习学习!!Top
8 楼dbxmcf(刀板虾米)回复于 2001-06-27 15:34:48 得分 0
没错,十分简单的Top
9 楼sephil(NAILY Soft 【哈里波特大】)回复于 2001-06-27 17:27:13 得分 0
简单啊Top
10 楼Fox128(小狐狸)回复于 2001-06-28 10:06:06 得分 0
在下,在这里谢谢各位热心的大侠支招。
确如“三十年孤独”大侠所讲,我第一时间确实被“吓”傻了。
诚挚的表示感谢!!!——“刀板虾米” generalhu@netease.comTop
11 楼FANGAO(凡高)回复于 2001-06-28 11:16:39 得分 0
太麻麻烦了!用1stClass控件吧, 简单至极!Top
12 楼FANGAO(凡高)回复于 2001-06-28 11:29:04 得分 0
忘了说了,下载地址:
http://www.woll2woll.com
用fcOutlookBar控件Top
13 楼c12(幸福花儿)回复于 2001-06-28 11:44:28 得分 0
dbxmcf(刀板虾米) ,可以的话请提供源程序学习学习!!
tansung@fm365.comTop
14 楼dbxmcf(刀板虾米)回复于 2001-07-01 09:40:09 得分 0
等一下,今天搬家没空,晚上一定发Top
15 楼Fox128(小狐狸)回复于 2001-07-01 12:35:03 得分 0
再次表示感谢——刀板虾米
还有我DOWN了一个InfoPower3000安装时要注册码,我找了很久但是找不到。
希望大侠再施以援手。Top
16 楼dbxmcf(刀板虾米)回复于 2001-07-01 13:14:45 得分 0
现在在别人的机器上上网,啊呀,还要买新的电话线
to fox128:
InfoPower没用过,查一下以前的帖子好了
有一点声明,收到程序别忘了..................加分:-)
还有,别说我的程序很烂,呵呵Top
17 楼yinmingke(黄豆汤)回复于 2001-07-01 14:12:38 得分 0
1stClass 控件组Top
18 楼coolcalf(牛犊初生[菜牛])回复于 2001-07-01 16:14:17 得分 0
cool_calf@163.net
thanksTop
19 楼Fox128(小狐狸)回复于 2001-07-02 08:58:06 得分 0
多谢各位大侠的指点。
我是有分必给,千金散尽还复来吗。Top
20 楼dbxmcf(刀板虾米)回复于 2001-07-02 14:20:34 得分 0
发出去了Top
21 楼Fox128(小狐狸)回复于 2001-07-30 09:10:31 得分 0
谢谢各位大侠,经过冥思苦想之后终于解决。Top




