我有一個帶有 7 個選項卡的 PageControl 的表單。我只想看到一些標簽。一側是選項卡 0、1、2、3、4 和 5,另一側只有選項卡 6 和 7。然后我依次渲染為不可見。我有一個 DBNavigator,它在程序 DBNavigatorClik 中更改資料源以控制使用的選項卡上的網格等。
以 2 Tab 為例
procedure TF_DatenErfassung.PageControl1Change(Sender: TObject);
begin
with (Sender as TPageControl) do
case PageControl1.Tabindex of
0:begin
DBNavigator1.DataSource:=F_ModuleTables.DS_MieteBezahlung;
end;
1:begin
DBNavigator1.DataSource:=F_ModuleTables.DS_T_JaresAbrechnung_Mieter;
end;
end;{case}
end;
在 FormActivate 程序中,我有以下代碼:
if ModuleTables.T_TABLE.FieldByName('NrDossier').AsString[1]<>'X' then
{A} begin
PageControl1.Pages[0].TabVisible:=false;
PageControl1.Pages[1].TabVisible:=true; {I want to work only on this Tab}
end
else
{B} begin
PageControl1.Pages[0].TabVisible:=true; {I want to work only on this Tab}
PageControl1.Pages[1].TabVisible:=false;
end;
當我在表單 PageControl 上的 {A} 上時,Tab 1 顯然是第一個(在這種情況下是唯一的),Tab 0 不可見,只有 Tab 1 可見。但似乎對于 pageControl 來說,這是 Tab 0 而不是 1 它只是改變了 Tab 索引;有沒有辦法繞過;我嘗試放入一個
PageControl1.ActivePageIndex:=1;
但它不在乎。在我看來,Tab 索引實際上是在創建頁面時創建的,這不會產生問題,但在我的情況下它會產生問題。有沒有辦法繞過它而無需重新創建所有“輪子”。
uj5u.com熱心網友回復:
您需要區分Tabs和Pages。標簽是可見頁面的標簽。因此,如果只有一個選項卡可見,則該選項卡/頁面始終為TabIndex = 0。
PageControl1Change 中的 case 陳述句應該作用于PageControl1.ActivePageIndex而不是PageControl1.TabIndex。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357946.html
標籤:德尔福
上一篇:在Delphi中撰寫十六進制文字值的正確方法是什么?
下一篇:從Json物件創建陣列
