Уже много раз нужно было убрать у TPageControl эти закладки. Не TabSheet, а именно сам заголовок. Мне нужно было для визарда, для формы настроек, где слева дерево, а справа страница с контролами.
Как сделать это с TPageControl сразу не понятно и поэтому как я только не изголялся - использовал и TFrame, и TNoteBook. Всё неудобно. Но как это сделать с TPageControl я долго не искал, потомучто нужно было делать срочно.
И вот настал момент, когда сказали переделать существующий PageControl, у которого около 20 страниц, на каждой из которых может быть до 20 контролов. Переделывать все это заново как-то не хотелось.
Правду люди говорят:
Вот и все
Как сделать это с TPageControl сразу не понятно и поэтому как я только не изголялся - использовал и TFrame, и TNoteBook. Всё неудобно. Но как это сделать с TPageControl я долго не искал, потомучто нужно было делать срочно.
И вот настал момент, когда сказали переделать существующий PageControl, у которого около 20 страниц, на каждой из которых может быть до 20 контролов. Переделывать все это заново как-то не хотелось.
Правду люди говорят:
"Лень - двигатель прогресса"Нашел как это сделать. И все оказалось очень просто. И так.
- Кидаем на форму TPageControl.
- Устанавливаем TPageControl.Style := tsButtons.
- Заполняем его TTabSheet-ами
- У каждого табшита устанавливаем TabVisible := False;
- Потом присваиваем TPageControl.ActivePage := TabSheet1;
В моем случае я сделал при создании формы
pcMain.Style := tsButtons;
for I := 0 to pcMain.PageCount-1 do
pcMain.Pages[I].TabVisible := False;
pcMain.ActivePage := tsBasic;
Заполнил TreeView нодами с заданными значениями SelectedIndex. Потом в TTreeView.OnChange
procedure TfrmMain.PropTreeChange(Sender: TObject; Node: TTreeNode);
begin
case Node.SelectedIndex of
10 : pcMain.ActivePage := tsBasic;
20 : pcMain.ActivePage := tsDocs;
30,
31 : pcMain.ActivePage := tsTextsOffer;
32 : pcMain.ActivePage := tsTextsInfo;
...
где tsBasic и тому подобные - это TTabSheet
Вот и все
shRestrUtDB: TTabSheet;
ОтветитьУдалитьif ... then shRestrUtDB.Free;
Правда потом чтобы показать вкладку её придётся создать заново
А, точно. TabVisible := True/False.
ОтветитьУдалить