2015-10-29 30 views
0

已經創建創建動態在運行時tabsheets和使用這段代碼放在裏面一個框架:如何檢查標籤頁都在TPageControl

procedure TForm1.Button2Click(Sender: TObject); 
var 
    TabSheetG: TTabSheet; 
begin 
    TabSheetG := TTabSheet.Create(PageControl1); 
    TabSheetG.Caption := 'Tab Sheet green '; 
    TabSheetG.PageControl := PageControl1; 
    Frame3 := TFrame3.Create(nil); 
    Frame3.Parent := TabSheetG; 
    Frame3.Show; 
end; 

,現在我想知道,如果標籤已經創建並只是讓它激活時,我點擊相同的按鈕

回答

2

添加TTabSheet類型的私有變量到您的類。它會自動初始化爲nil

OnClick事件處理程序中,測試變量是否爲nil。如果沒有,則創建標籤頁,否則使用現有的標籤頁。

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    if not Assigned(FMyTabSheet) then 
    FMyTabSheet := TTabSheet.Create(PageControl1); 
    FMyTabSheet.PageControl := PageControl1; 
    ... etc. 
    end; 
    PageControl1.ActivePage := FMyTabSheet; 
end; 
+0

感謝這很好的解決方案,但你認爲它的功能,如果我有30幀使用30 TabSheet? – HamzaGeeK

+1

是的,它會縮放得很好。您可能會選擇爲30個不同的頁面聲明一個枚舉類型。然後有一個標籤頁和框架的數組,由該枚舉類型索引。 –

+0

好的,謝謝你好,這似乎很好 – HamzaGeeK