FormContainer渐变效果指南  
为什么要写这篇短文,目的之一感谢所有帮助过我的人,之二为了让用delphi的朋友们节约点时间来看其Demo.之三是感谢那些为大家无私奉献的朋友,如DelphiVCL,saycc.keeping.coder....太多了.之四是Formcontainer作者做一下宣传,感谢他这么精彩之作,如果大家用好这个东东,一定要想办法购个正式版来用.之五,把LP给忘了:) 
FormContainer渐变效果指南先看看什么是渐变效果,作者在其文档中是这样定义的:一个渐变是运行窗体从开始显示的图形到最后完成显示过程的图形效果.实际上,按我的理解,就是指一个控件在显示过程中所细化的显示过程.这里的控件,指从TControls继承来的所有组件.
在Formcontainer机制中,渐变效果已经被作者抽象成一个基类TTransitionEffect,其他所有要实现的渐变效果都要从这个类继承,并处在其类的层次结构中,而非组件.为了使用一个渐变效果,我们不得不建立,配置,执行最后释放掉这个效果.
对于不同的控件所使用的渐变效果的处理过程是不同的.具体可分为以下三种情况:一.控制标准窗体的渐变效果.主要可分为三步:
1.拖一个TFormTransitions组件到一个窗体上;
2.然后通过窗体的Create事件,通过TFormTransitions设置窗体的显示效果;具体作法是建立一个渐变效果类实例,附值给TFormTransitions.ShowTransition.
3.利用窗体的Show或ShowModal,窗体显示时就以设置的显示效果来显示了.
下面是我从其Demo中剪出的示例代码:
procedure TMainForm.FormCreate(Sender: TObject);
var
lTWipeTransition:TWipeTransition;
begin
lTWipeTransition:=TWipeTransition.Create;
FormTransitions.ShowTransition := lTWipeTransition;
with lTWipeTransition do
begin
Milliseconds := 3000;
BandWidth := 100;
Direction := tedDown;
end;
end;
上面的代码中,FormTransitions 是我们手工拖到要改变窗体显示效果上去的TFormTransitions组件.TWipeTransition是作者直接在FormContainer VCL中完成的渐变效果类,代码中用这个类实例lTWipeTransition 来处理窗体的显示效果.通过上面的代码,也不难想到,要使用不同的渐变效果来显示窗体,只要改变FormTransitions.ShowTransition的值就能达到.
二.插入到父窗体中的子窗体的渐变效果按前文,为了将一个窗体插入一个父窗体,我们要用到TFormcontainer,并用其来建立被插入窗体.下面是具体的代码:
FormIntro := TFormIntro(FormContainerNavigator.CreateForm(TFormIntro));
同样,为了显示被插入的子窗体,我们不能调用子窗体的Show或ShowModal,而不得不用TFormContainer的ShowForm或ShowFormEx方法.实际上,如果要改变子窗体的显示效果,
就只能用ShowFormEx显示子窗体.下面这行代码演示如何利用TransEffct效果实例显示子窗体FormIntro:
FormContainerNavigator.ShowFormEx(FormIntro, True, TransEffct, nil, Align);
到此,我们看一下完整的代码,来理解如何控制子窗体的渐变效果:
procedure TFormNavigator.Intro;
var
TransEffct: TTransitionEffect;
begin
TransEffct := TWipeTransition.Create;
TransEffct.FlickerFreeWhenDisabled := True;
TransEffct.Milliseconds := 500;
(TransEffct as TWipeTransition).BandWidth := 50;
try
FormIntro := TFormIntro(FormContainerNavigator.CreateForm(TFormIntro));
FormContainerNavigator.ShowFormEx(FormIntro, True, TransEffct,nil,Align);
finally
TransEffct.Free;
end;
end;
通过上面的代码,很容易就能看原来子窗体的显示效果是通过Formcontainer的ShowFormEX方法的第三个参数来完成.三.控件的渐变效果下面的代码演示如何控件一个TMemo的显示效果:
procedure TFormIntro.ShowText;
var
TextTransition: TWipeTransition;
begin
TextTransition := TWipeTransition.Create;
try
TextTransition.Milliseconds := 2000;
TextTransition.Direction := tedDown;
TextTransition.BandWidth := 100;
TextTransition.Prepare(MemoText.Parent, MemoText.BoundsRect);
MemoText.Visible := True;
if TextTransition.Prepared then
TextTransition.Execute;
finally
TextTransition.Free;
end;
end;
从代码中可以看到,首先要为控制显示的TMemo控件设置为不可见.一般的情况在设计期设置Visible=False.然后建立一个效果类,利用效果类对TMemo进行Prepare,再设置TMemo为可见,最后让效果执行.即执行效果类的Execute方法.别忘了释放声明的效果类.
到此,也无法完整说明FC-Demo,这里,只是一个总结,如果想进一步了解FC的使用,还得参考其帮助文档及Demo.当然,你会得到意外的收获.(摘自Chinaasp)