【问题标题】:Delphi PageControl with TabSheet invisibleTabVisible := False;Delphi PageControl 与 TabSheet invisibleTabVisible := False;
【发布时间】:2021-11-14 15:07:05
【问题描述】:

我有一个带有 7 个选项卡的 PageControl 的表单。 我只想看到一些标签。一侧是选项卡 0、1、2、3、4 和 5,另一侧只有选项卡 6 和 7。然后,我依次渲染为不可见。 我有一个 DBNavigator,它更改 DBNavigatorClik 过程中的 DataSource 以控制已使用选项卡上的网格等。

以 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 Index;有没有办法绕过;我试着放一个

 PageControl1.ActivePageIndex:=1;

但它不在乎。在我看来,选项卡索引实际上是在创建页面时创建的,这不会造成问题,但在我的情况下它会造成问题。 有没有办法绕过它而不重新创建所有“轮子”。

【问题讨论】:

    标签: delphi


    【解决方案1】:

    您需要区分 TabsPages标签 是可见页面的标签。因此,如果只有一个选项卡可见,则该选项卡/页面始终 TabIndex = 0

    PageControl1Change 中的 case 语句应该作用于 PageControl1.ActivePageIndex 而不是 PageControl1.TabIndex

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 2016-05-30
      • 2015-08-13
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多