我希望這樣的事情應該工作:打開一個新的形式與特定的標籤
Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;
的事情是,我有多個按鈕(在第一種形式),我想對於每一個他們可以在PageControl的特定選項卡中打開新窗體。
錯誤:Undeclared identifier: 'TabSheet1'
我希望這樣的事情應該工作:打開一個新的形式與特定的標籤
Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;
的事情是,我有多個按鈕(在第一種形式),我想對於每一個他們可以在PageControl的特定選項卡中打開新窗體。
錯誤:Undeclared identifier: 'TabSheet1'
的消息顯示,TabSheet1沒有定義 - 這可能是(雖然不向我們展示完整的代碼),因爲你的父對象外,所以你需要行
Form2.PageControl1.ActivePage := Form2.TabSheet1;
Dsm的回答是提問的正確答案。
但是從設計的角度來看,雖然這樣可以正常工作,但它確實需要調用代碼來了解Form2的內部知識,這不是很好的類封裝。我將一個數據成員,而不是添加到Form2
,表示期望的頁面在窗體的OnShow
事件來顯示,然後調用Show()
之前設置該成員,如:
type
TWhichTab = (wtNone, wtTab1, wtTab2, ...);
TForm2 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
...
procedure FormShow(Sender: TObject);
...
public
...
InitialTab: TWhichTab;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
PageControl1.ActivePageIndex := Ord(InitialTab)-1;
end;
Form2.InitialTab := wtTab2;
Form2.Show();
Form1.Hide();
是的,我同意,雖然我會進一步討論它,並且指出正在顯示什麼而不是哪個選項卡,因爲信息如何顯示應該是視覺對象。例如,標籤可能會重新排序,例如6個月。 – Dsm
我經常使用的各這些命令沒有問題。那麼你的問題到底是什麼?我認爲你需要給予更多的幫助,最好是一個能夠顯示你的問題的小型示例程序。同時請說明它是Firemonkey還是VCL,以及您使用的Delphi版本。 – Dsm
其VCL。它說:'未聲明的標識符''TabSheet1'' - Delphi 7 –