Принципиальная разница между TNoteBook и TPageControl

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 07.05.2008 20:40:43

Есть ли она?
Я прочел в Д-хелпе, что ноутбуки оставлены для обратной совместимости. По логике, это обозначает, что лучше пользоваться PageControl. Так ли это? Почему? А в чем между ними разница в функционале?

Попутно: это я не вижу, или нет штатной возможности спрятать ярлычки страниц, чтобы пользователь мог попасть на предыдущую/следующую только с моего согласия, например - кнопкой? Вроде на глаза попадалось нечто со словом "wizard", но сейчас найти не могу.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение alexs » 07.05.2008 22:43:02

Troublemaker писал(а):wizard

это ты наверное в RxLib видел - я такое делал
а чтобы скрыть закладки - TabVisible свойство у соответсвуюшей закладки
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Alexx2000 » 07.05.2008 22:58:56

Troublemaker писал(а):это я не вижу, или нет штатной возможности спрятать ярлычки страниц, чтобы пользователь мог попасть на предыдущую/следующую только с моего согласия, например - кнопкой?


Как раз у TNoteBook такая возможность есть, а именно свойство ShowTabs.
А вот у TPageControl я такого не нашел.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Павел Ишенин » 08.05.2008 02:35:59

TNodeBook - ведет свои корни от windows 3.1 Это устаревший компонент, который не знаю зачем включен в LCL. Имеет сходные свойства что и TPageControl. Отличаются лишь некоторые моменты: доступ к страницам, TabVisible vs ShowTabs, названия некоторых событий.

Лучше пользоваться TPageControl.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 08.05.2008 10:01:11

Гм... коллеги, речь не о сокрытии страниц, а о том, чтобы только убрать ярлычки. Из TFM неясно, TabVisible прячет всю страницу или только ее ярлычок?

Вот что там написано: "Use TabVisible to temporarily remove a tab sheet from a page control. When TabVisible is false, the tab does not appear in the page control and its TabIndex property is -1. Setting TabVisible to true allows the user to see the tab of the tab sheet again."
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Attid » 08.05.2008 10:10:27

Troublemaker
алекс тебе ответил, все остальное от лукавого.


Павел Ишенин писал(а):Лучше пользоваться TPageControl.

для меня без ShowTabs он вообще лучшеб и не существовал, я в трекер писал по этому поводу мне сказали что оппа у дельфи нет такого и мы не будем делать, вот такая совместимость только огорчает.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 08.05.2008 10:28:27

Attid писал(а):для меня без ShowTabs он вообще лучшеб и не существовал
Хреново. Значит будем пользоваться ноутбуком. Или есть еще какие-то средства для создания "визардов", когда в конкретный момент времени видна только одна страница из всего набора?

Попутно.
1. Не увидел способа задать ширину табов (ярлычков). В том же Clarion можно их сделать либо оптимальной ширины, как это есть в LCL, так и автоматически растягивать на всю ширину контрола. Второй вариант меня тоже бы устроил - ярлычок пошел бы как заголовок страницы. Что можно сделать?

2. Захотелось мне, чтобы один и тот же TCalcControl был виден на всех листах. Однако я не могу сделать его родителем собственно notebook или pagecontrol, только конкретную страницу. Вариант с размещением его на самой форме на "территории" страничного контрола почему-то не катит: поле для ввода числа видно "сквозь" страницу, а кнопка для вызова калькулятора не видна, см. скриншоты.
Если же разместить кальк именно как потомка страницы, то он только на ней и будет виден.
Неужели единственная возможность сделать кальк видимым только на странице, это динамически менять его родителя?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Brainenjii » 08.05.2008 10:35:04

Есть там такое... Только для каждой отдельной TTabSheet оно отдельное... И страшно глючит в GTK2... Я просто обрабатываю переход по TabSheet'ам, и если нельзя дальше переходить - возвращаю ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение alexs » 08.05.2008 14:06:50

Я, кстати, планирую вобще в мастерах отказаться от TPageControl-ов, хотя раньше их активно использовал. Для этой цели на мой взгляд лучше подходят фреймы (тем более сейчас их Павел доделывает) или TPanel.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 08.05.2008 14:41:10

alexs писал(а):Для этой цели на мой взгляд лучше подходят ... TPanel
Будем собирать двигатель через выхлопную трубу, как тот гинеколог. Чувствую, я тоже буду использовать панели. Но для того, чтобы спрятать табы... :)
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение alexs » 08.05.2008 14:51:46

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

Ну не скажи - это только кажется что с табом проблем меньше - а когда визард большой и навороченный - вся эта куча кода и компонентов начинает напрягать. Проще разбить на несколько частей - а потом парой строк кода собрать в одну форму. Я к этому пришёл через модули.
Бух. комплекс модульный - настроек много, причём зависят от кол-ва модулей. Вот и созрело такое решение - сами настройки на фремах в каждом модуле, а уж потом из модулей в основной программе вытягиваю эти фрмы и собираю их в форму настроек.
Для мастеров этотоже очень хорошо подходит технолгия.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 08.05.2008 15:16:41

Решил выпендриться и, закрыв табы панелью, добавил горизонтальный TUpDown. Тупо обрабатываю клик:
Код: Выделить всё
var pages:TPageControl;

procedure TMDSForm.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var a:byte;
begin
  a:=Pages.ActivePageIndex;
  case Button of
     btNext:   if a=pages.PageCount-1 then a:=0 else inc(a);
     btPrev:   if a=0 then a:=pages.PageCount-1 else dec(a);
  end;
  Pages.ActivePageIndex:=a;
end;
Странички переключаются, ярлыков не видно. КалькЕдит поместил на панель. Лепота!
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Brainenjii » 08.05.2008 15:29:58

Код: Выделить всё
Var
  i: Integer;
Begin
  For i := 0 To PageControl1.PageCount - 1 Do
    If i div 2 = 0 Then
      PageControl1.Pages[i].TabVisible := FALSE;
End;

Это пробовали? У меня вроде работает... И даже глюков пока не вижу прежних (времён 0.9.22)
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение alexs » 08.05.2008 15:44:32

По моим наблюдениям PageControl страшно глючит если у него много страничек и на этих страничках лежат другие PageControl-ы со своими анборами страниц
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Принципиальная разница между TNoteBook и TPageControl

Сообщение Troublemaker » 08.05.2008 15:54:51

Brainenjii писал(а):TabVisible
Я об этом спрашивал в начале треда: что же делает (точнее - что должен штатно делать) этот tabvisible - убирает ТОЛЬКО ярлычок, делая страницу недоступной для выбора пользователем, или временно удаляет всю страницу из набора, делая ее вообще недоступной ДЛЯ ПОКАЗА?
Спасибо за пример, теперь разобрался.
В общем, можно внаглую создавать потомка от TPageControl, которому добавлять проперти ShowTabs и функции Set/GetShow, которые будут пробегать по всем имеющимся страницам и поднимать/опускать ярлычки.
alexs писал(а):PageControl страшно глючит если у него много страничек и на этих страничках лежат другие PageControl-ы
А кто не глючит? Ноутбук с подчиненными ноутбуками?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru