Delphi 带有 TabSheet invisibleTabVisible 的 PageControl := False;
Delphi PageControl with TabSheet invisibleTabVisible := False;
我有一个带有 PageControl 和 7 个选项卡的表单。
我只想看到一些标签。一侧是选项卡 0、1、2、3、4 和 5,另一侧只有选项卡 6 和 7。我依次渲染为不可见。
我有一个 DBNavigator,它在 DBNavigatorClik 过程中更改数据源以控制所用选项卡上的网格等。
以 2 个选项卡为例
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} 上时,选项卡 1 显然是第一个(在这种情况下是唯一的)选项卡 0 不可见,只有选项卡 1 可见。但对于 pageControl 来说,这似乎是 Tab 0 而不是 1 它只是更改了 Tab 索引;有办法绕过去吗?我试着输入一个
PageControl1.ActivePageIndex:=1;
但它不在乎。在我看来,Tab 索引实际上是在创建页面时创建的,这不会造成问题,但在我的情况下它会造成问题。
有没有办法绕过它而无需重新创建所有“轮子”。
您需要区分 Tabs 和 Pages。 选项卡 是可见页面的选项卡。因此,如果只有一个选项卡可见,则 tab/page 始终 TabIndex = 0.
PageControl1Change 中的 case 语句应该作用于 PageControl1.ActivePageIndex
而不是 PageControl1.TabIndex
。
我有一个带有 PageControl 和 7 个选项卡的表单。 我只想看到一些标签。一侧是选项卡 0、1、2、3、4 和 5,另一侧只有选项卡 6 和 7。我依次渲染为不可见。 我有一个 DBNavigator,它在 DBNavigatorClik 过程中更改数据源以控制所用选项卡上的网格等。
以 2 个选项卡为例
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} 上时,选项卡 1 显然是第一个(在这种情况下是唯一的)选项卡 0 不可见,只有选项卡 1 可见。但对于 pageControl 来说,这似乎是 Tab 0 而不是 1 它只是更改了 Tab 索引;有办法绕过去吗?我试着输入一个
PageControl1.ActivePageIndex:=1;
但它不在乎。在我看来,Tab 索引实际上是在创建页面时创建的,这不会造成问题,但在我的情况下它会造成问题。 有没有办法绕过它而无需重新创建所有“轮子”。
您需要区分 Tabs 和 Pages。 选项卡 是可见页面的选项卡。因此,如果只有一个选项卡可见,则 tab/page 始终 TabIndex = 0.
PageControl1Change 中的 case 语句应该作用于 PageControl1.ActivePageIndex
而不是 PageControl1.TabIndex
。