今天嘗試了TTabControl的使用。在很多Android的app中,首次啟動時都使用選項卡模式進行產品介紹,用戶通過向左滑動,改變選項卡。在xe5下這項工作由TTabControl控件完成,如下圖:
1、TTabControl外觀
TTabControl的外觀由屬性TabPosition控制,可選項包括:
tpTop 選項tab在控件上方
tpBottom 選項tab在控件下方
tpNone 以原點形式顯示選項tab,在控件下方,如下圖:
tpDots 以方格形式顯示選項tab,在控件下方,如下圖:
2、控制換頁
對換頁的處理有以下幾種形式:
(1)按鈕+Action控制
通過創建標准Action——TChangeTabAction,指定Tab屬性表示該動作的目標選項卡,如下圖:
然后對按鈕指定對應的Action
(2)手勢(Gesture)控制
手勢控制就是在Pad或手機上常用的左右滑動,放大縮小等操作,這里需要先在Form上放置一個TGestureManager控件,然后在TTabControl的OnGesture事件對手勢進行判斷和處理,代碼如下:
procedure TTabbedwithNavigationForm.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];
Handled := True; //已代碼處理
end;
sgiRight://由左向右滑動手指
begin
//如果不是第一個tab,則選取前一個tab
if TabControl1.ActiveTab <> TabControl1.Tabs[0] then
TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex-1];
Handled := True;//已代碼處理
end;
end;
end;
(3)通過硬件按鈕(Hardware KeyBoard)控制
在窗體的OnKeyDown或OnKeyUp事件,對硬件按鈕進行識別,然后處理。代碼如下:
procedure TTabbedwithNavigationForm.FormKeyUp(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin
//如果是硬件的返回按鈕
if Key = vkHardwareBack then
begin
//在特定的頁面上,返回上一個頁面
if (TabControl1.ActiveTab = TabItem1) and (TabControl2.ActiveTab = TabItem6) then
begin
//指定頁面
TabControl2.ActiveTab = TabItem5;
//已處理鍵盤的鍵值
Key := 0;
end;
end;
end;