紧急求救!(10分)

L

lovepig

Unregistered / Unconfirmed
GUEST, unregistred user!
一系统,仿outlook写,左边用的是qq那样的分组,每组里有一item,点选的时候右边出现的是
对应的窗体,但是这个窗体是嵌入到主窗体中的!大部分的情况像outlook,也可以说像winpim
友情强档那样的。怎么做啊?不得眉目!请高手指教!
谢谢
 
怎么到处发?
 
用Panel控件可以比较容易的实现你所说的这种特效,panel控件可以容纳任何其他控件,
而他的align、autosize、docksite、usedockmanager、ControlCount属性的综合利用能
完成很好的效果。
1.类似qq的分组界面
控件的align属性有六个值,实现qq分组功能只要用到三个属性,alTop、
alBottom、alClient.即顶对齐、底对齐、控件显示在剩下的客户域中。对qq分组的
控件实施这三种对齐方式就可以有qq的特效了
当然实现这种效果的最佳控件是panel了,因为它可以容纳任何其他控件,又可以
通过ControlCount属性循环控制属于它自己的控件。

最好把要进行qq特效的所有控件放到panel控件中,或者这个panel控件里下一级
panel控件里中。
例子:
用panel实现qq界面,控件:panel、ScrollBox。
新建一个panel控件,继续建它里面的控件。建五个panel和五个ScrollBox控件,当然,
在这五个panel里还可继续添加其他控件,添加的控件会随着panel移动,在此不做介绍
//下面这个过程实现类似qq界面的功能

procedure qq_switch(I_id:integer);
begin
{如果该按纽的内容已经显示,已经没必要进行任何处理,直接跳出该过程}
if (I_id=1) and (ScrollBox1.Visible) then
exit;
if (I_id=2) and (ScrollBox2.Visible) then
exit;
if (I_id=3) and (ScrollBox3.Visible) then
exit;
if (I_id=4) and (ScrollBox4.Visible) then
exit;
if (I_id=5) and (ScrollBox5.Visible) then
exit;
{-------------------------------------------------------------
如果该按纽的内容没有显示,可以先全部隐藏后再把要显示的显示出来
-------------------------------------------------------------}
//先全部隐藏
ScrollBox1.Visible :=false;
ScrollBox2.Visible :=false;
ScrollBox3.Visible :=false;
ScrollBox4.Visible :=false;
ScrollBox5.Visible :=false;
{ -————————————————————————
if-else
if-else
if分支 共5个
这5个分支是先判断显示的部位,然后再进行界面布局
——————————————————————————}
if I_id=1 then
//第一个分支
begin
panel1.Align :=altop;
//控制控件在面板顶部显示
{以下四条语句是控制控件在面板底部显示 }
Panel5.Align :=albottom;
Panel4.Align :=albottom;
Panel3.Align :=albottom;
Panel2.Align :=albottom;
ScrollBox1.Visible :=true;
//显示控件
ScrollBox1.Align :=alclient;
//在剩下部分(客户区)显示
end
//剩下的4个分支,内容同上
else
if I_id=2 then
begin
panel1.Align :=altop;
Panel2.Align :=altop;
Panel5.Align :=albottom;
Panel4.Align :=albottom;
Panel3.Align :=albottom;
ScrollBox2.Visible :=true;
ScrollBox2.Align :=alclient;
end
else
if I_id=3 then
begin
panel1.Align :=altop;
Panel2.Align :=altop;
Panel3.Align :=altop;

Panel5.Align :=albottom;
Panel4.Align :=albottom;
ScrollBox3.Visible :=true;
ScrollBox3.Align :=alclient;
end
else
if I_id=4 then
begin
panel1.Align :=altop;
Panel2.Align :=altop;
Panel3.Align :=altop;
Panel4.Align :=altop;
Panel5.Align :=albottom;
ScrollBox4.Visible :=true;
ScrollBox4.Align :=alclient;
end
else
if I_id=5 then
begin
panel1.Align :=altop;
Panel2.Align :=altop;
Panel3.Align :=altop;
Panel4.Align :=altop;
Panel5.Align :=altop;
ScrollBox5.Visible :=true;
ScrollBox5.Align :=alclient;
end;

end;

调用:显示第一个分组:
qq_switch(1);
相信说的也差不多了,至于出现右边的是对应的窗体,但是这个窗体是嵌
到主窗体中的!大部分的情况像outlook,也可以说像winpim友情强档那样的效果
用panel也好实现
只要先设置要停靠的panel属性  
do
cksite:true;
  usedockmanager:true;
窗口的属性
dragkind:dkdock
调用Form.dock(参数1,参数2);
就可实现,至于更多的设置,可以调用窗口的onDockDrop();onDockOver()
onEndDock()、onUnDock()事件;
 
做成这种东东的界面的话
用frame配合主窗中的panel最简单
只要一个全局的Tframe变量
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
919
DelphiTeacher的专栏
D
顶部