我想实现象QQ里面的抽屉效果用VB已经实现,可是用VB里的思想在DELPHI里实现不了
主要原因就是控件数组的概念,在DELPHI可能没有这个向VB里那样实现的
Private Sub Command1_Click(Index As Integer)
............End Sub
"Command1_Click(Index As Integer)"这句在DELPHI里用什么办法可以实现
主要原因就是控件数组的概念,在DELPHI可能没有这个向VB里那样实现的
Private Sub Command1_Click(Index As Integer)
............End Sub
"Command1_Click(Index As Integer)"这句在DELPHI里用什么办法可以实现
解决方案 »
- 局域网访问access数据库难题!!!
- 移动文件的问题!MoveFileEx
- 介绍一个开发技术知识库网站,up就给分
- 很菜的问题,在线等待,解决后100分献上!!!!!!!
- 有办法让tabsheet不能点击呢?
- (Delphi+Access)做的数据库,怎么封装?
- 使用dxdbgrid控件来显示数据,为什么我在添加或刷除一条记录并刷新之后dxdbgrid不能显示刷新后的结果呢
- 菜鸟的问题
- 请教,MDIChildForm,在最大化后如何仍然显示本身的最大化、最小化、关闭按钮,而不是被MDIFrom的替代了??
- DBGrid中得到fieldname
- 请高手们帮帮我!!我给加分
- 大家有什么关于DELPHI比较有用的E书,手册,函数,库的说明,可否给地址或发到我邮箱?
能讲一下用PANEL的CLICK事件的思想吗?怎么控制知道是按了哪一个按扭
(先在你的窗体上放一个若干个Panel,然后每个Panel的单击事件如下)
procedure TQQTypeForm.DrawerPanelnOnClick(Sender:TObject);
begin
//通过DrawerPanel的属性Tag来标志DrawerPanel的状态:0表示未打开抽屉,1表示打开
if DrawerPaneln{n表示你使用的Panel的索引}.Tag=0 then
begin
DrawerPaneln.Tag:=1;
DrawerPaneln.Top:=(StrToInt(Copy(DrawerPaneln.Caption,Length(DrawerPaneln.Caption)-1,1))-1)*DrawerPaneln.Height; //各个DrawerPanel的Height相同,并且所有的DrawerPanel的名字规格一致
end
else
begin
DrawerPaneln.Tag:=0;
DrawerPaneln.Top:=QQTypeForm.Height-(StrToInt(Copy(DrawerPaneln.Caption,Length(DrawerPaneln.Caption)-1,1))-1)*DrawerPaneln.Height;
end;
end;
这样做出来的效果缺少滑动效果,可以使用一个Timer来实现,具体就不说了!
1。在窗体上放一个ActionManager空间
2。放若干个Panel,然后没个Panel里面在放一个Panel,做标题,类似QQ里面“我的好友”那种标题。然后其属性为ALIGN=ALTOP;
3。接着,每个PANEL(不做标题的那些PANEL)中放一个ACTIONTOOLBAR,ALIGN=ALCLIENT;
4。然后在ACTIONMANAGER里面建立几组相应的CATEGORY,最后把CATEGORY拖到对应的PANEL里面----》例如,存在标题“我的好友”,那么就在ACTIONMANAGER里面建立MYPAL这个CATEGORY,里面包含的ACTION有若干个人名(当然这个需要在运行的时候动态的建立,就想QQ那样);
5。最后将所有ACTIONTOOLBAR控件的容器PANEL的AUTOSIZE置为TRUE;
6。在FORM的ONCREATE里面写如下代码:(先定义个全局的变量CategoryList:TObjectList,还需要把包含TObjectList这个类申明但单元文件用Uses包含,具体那个俺忘记了,你自己到HELP里面查查把)
procedure TForm1.OnCreate(Sender:TObject);
begin
CategoryList:=TObjectList.Create;
with CategoryList do
begin
Add(//这里放每个ActionToolBar的容器Panel); //有几个就写几个Add函数
end;
Panel1.OnClick(Panel1); //这里假设程序中你存放第一个ActionToolBar的容器Pane名
//字为Panel1
end;
7。最后将所有ACTIONTOOLBAR容器PANEL中的标题PANEL的ONCLICK事件都指向PANEL1的ONCLICK事件,代码如下:
procedure TForm.Panel1OnClick(Sender:TObject);
var
M,N: Integer;
begin
for M:=0 to CategoryList.Count-1 do
begin
(CategoryList[M] as TPanel).Align := alNone;
(CategoryList[M] as TPanel).Height := 20;
if CategoryList[M] = (Sender as TPanel).Parent then
N:=M;
end
for M:=N-1 downto 0 do
(CategoryList[M] as TPanel).Align := alTop;
for M:=CategoryList.Count-1 downto N+1 do
(CategoryList[M] as TPanel).Align := alBottom;
(CategoryList[M] as TPanel).Align := alClient;
end;
完了!