Содержание материала

Есть ли возможность в компоненте 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}

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить