Недоступная закладка в компоненте TabbedNotebook

Previous  Top  Next

    
 

Есть ли возможность в компоненте Tabbednotebook сделать какую-либо страницу недоступной? То есть не позволять пользователю щелкать на ней и видеть ее содержимое?

 

Да, такая возможность существует. Самый простой путь - удалить страницу, например так:

 

Code:

with TabbedNotebook do

Pages.Delete(PageIndex);

 

и снова включить ее (при необходимости), перегрузив форму.

 

Блокировка (а не удаление) немного мудренее, поскольку необходима организация цикла в процедуре создания формы, присваивающая имена закладкам компонента TabbedNotebook. Например так:

 

Code:

J := 0;

with TabbedNotebook do

for I := 0 to ComponentCount - 1 do

if Components[I].ClassName = 'TTabButton' then

begin

Components[I].Name := ValidIdentifier(TTabbedNotebook(

Components[I].Owner).Pages[J]) + 'Tab';

Inc(J);

end;

 

где ValidIdentifier ValidIdentifier - функция, которая возвращает правильный Pascal-идентификатор, производный от строки 'Tab':

 

Code:

function ValidIdentifier (theString: str63): str63;

{--------------------------------------------------------}

{ Конвертирует строку в правильный Pascal-идентификатор, }

{ удаляя все неправильные символы и добавляя символ '_', }

{ если первый символ - цифра                             }

{--------------------------------------------------------}

var

I, Len: Integer;

begin

Len := Length(theString);

for I := Len downto 1 do

if not (theString[I] in LettersUnderscoreAndDigits) then

Delete(theString, I, 1);

if not (theString[1] in LettersAndUnderscore) then

theString := '_' + theString;

ValidIdentifier := theString;

end; {ValidIdentifier}

 

Затем мы можем сделать закладку компонента TabbedNotebook недоступной:

Code:

with TabbedNotebook do

begin

TabIdent := ValidIdentifier(Pages[PageIndex]) + 'Tab';

TControl(FindComponent(TabIdent)).Enabled := False;

{ Переключаемся на первую доступную страницу: }

for I := 0 to Pages.Count - 1 do

begin

TabIdent := ValidIdentifier(Pages[I]) + 'Tab';

if TControl(FindComponent(TabIdent)).Enabled then

begin

PageIndex := I;

Exit;

end;

end; {for}

end; {with TabbedNotebook}

 

следующий код восстанавливает доступность страницы:

 

Code:

with TabbedNotebook do

for I := 0 to Pages.Count - 1 do

begin

TabIdent := ValidIdentifier(Pages[I]) + 'Tab';

if not TControl(FindComponent(TabIdent)).Enabled then

TControl(FindComponent(TabIdent)).Enabled := True;

end; {for}

 

 

 

©Drkb::01179

http://delphiworld.narod.ru/

DelphiWorld 6.0