试了一下,关于好几个广告界面,左右滚动的效果:用TabControl 加上定时器实现即可。
1、TTabControl外观
TTabControl的外观由属性TabPosition控制,可选项包括:
tpTop 选项tab在控件上方
tpBottom 选项tab在控件下方
tpNone 以原点形式显示选项tab,在控件下方,如下图:
tpDots 以方格形式显示选项tab,在控件下方,如下图:
以下是源代码:
//每五秒滚动一次Procedure TForm1.FormActivate(Sender: TObject);
Begin
Timer1.Interval := 5000;
End;
//自动滚动;
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
If TabControl1.ActiveTab <> TabControl1.Tabs[TabControl1.TabCount-1] Then
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex+1]
Else
TabControl1.ActiveTab := TabControl1.Tabs[0];
End;
//手势编程,也可以不需要;
Procedure TForm1.TabControl1Gesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
Begin
Case EventInfo.GestureID Of //识别事件的手势
sgiLeft: //由右向左滑动手指
Begin
//如果不是最后一个tab,则选择下一个tab;如果是,则选择第一个。
If TabControl1.ActiveTab <> TabControl1.Tabs[TabControl1.TabCount-1] Then
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex+1]
Else
TabControl1.ActiveTab := TabControl1.Tabs[0];
Handled := True; //已完成代码处理
End;
sgiRight: //由左向右滑动手指
Begin
//如果不是第一个tab,则选取前一个tab;如果是,则选择最后一个。
If TabControl1.ActiveTab <> TabControl1.Tabs[0] Then
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex-1]
Else
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabCount-1];
Handled := True; //已代码处理
End;
End;
End;