Есть ли возможность в компоненте Tabbednotebook сделать
какую-либо страницу недоступной? То есть не позволять пользователю щелкать на
ней и видеть ее содержимое?
Да, такая возможность существует. Самый простой путь - удалить страницу,
например так:
with TabbedNotebook do
Pages.Delete(PageIndex);
и снова включить ее (при необходимости), перегрузив форму.
Блокировка (а не удаление) немного мудренее, поскольку необходима организация
цикла в процедуре создания формы, присваивающая имена закладкам компонента
TabbedNotebook. Например так:
J := 0;
with TabbedNotebook dofor I := 0 to ComponentCount - 1 doif Components[I].ClassName = "TTabButton" thenbegin
Components[I].Name := ValidIdentifier(TTabbedNotebook(
Components[I].Owner).Pages[J]) + "Tab";
Inc(J);
end;
где ValidIdentifier ValidIdentifier - функция, которая возвращает правильный
Pascal-идентификатор, производный от строки "Tab":
function ValidIdentifier (theString: str63): str63;
{--------------------------------------------------------}{ Конвертирует строку в правильный Pascal-идентификатор, }{ удаляя все неправильные символы и добавляя символ "_", }{ если первый символ - цифра }{--------------------------------------------------------}var
I, Len: Integer;
begin
Len := Length(theString);
for I := Len downto 1 doifnot (theString[I] in LettersUnderscoreAndDigits) then
Delete(theString, I, 1);
ifnot (theString[1] in LettersAndUnderscore) then
theString := "_" + theString;
ValidIdentifier := theString;
end; {ValidIdentifier}
Затем мы можем сделать закладку компонента TabbedNotebook недоступной:
with TabbedNotebook dobegin
TabIdent := ValidIdentifier(Pages[PageIndex]) + "Tab";
TControl(FindComponent(TabIdent)).Enabled := False;
{ Переключаемся на первую доступную страницу: }for I := 0 to Pages.Count - 1 dobegin
TabIdent := ValidIdentifier(Pages[I]) + "Tab";
if TControl(FindComponent(TabIdent)).Enabled thenbegin
PageIndex := I;
Exit;
end;
end; {for}end; {with TabbedNotebook}
следующий код восстанавливает доступность страницы:
with TabbedNotebook dofor I := 0 to Pages.Count - 1 dobegin
TabIdent := ValidIdentifier(Pages[I]) + "Tab";
ifnot TControl(FindComponent(TabIdent)).Enabled then
TControl(FindComponent(TabIdent)).Enabled := True;
end; {for}
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Недоступная закладка в компоненте TabbedNotebook", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!