就使用Delphi中提供的TActionManager和TActionToolBar就可以实现,不知道这种方法别人用过没有,应该很多人知道把,我使用的步骤如下: 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; 完了!
在我看来就是在一个Panel 容器当中放入Button和一个其他的什么,看你自己的需要了
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;
完了!
我的email:[email protected]
谢谢哦!!
我的email:[email protected]
谢谢哦!!
可以给出个具体的实现方法吗?
我也要一个[email protected]