Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скрыть у TabControl вкладки? [Delphi]


BaryV ©   (2005-11-22 15:49:00) 

Кто подскажет, как скрыть у TabControl вкладки
Заранее спасибо


ECM   (2005-11-23 15:59:00) [1]


> По моему в данном случае не стоит связываться с TabControl

ИМХО: Наоборот... Мне, лично, больше нравится использовать в этом случае
TabControl - при большом количестве панелей гораздо легче что-то исправлять в design-time. В Вашем случае - получается слишком много телодвижений надо выполнить, чтобы добраться до нужной панели, для редактирования... (повоторюсь - это ИМХО и только для MCK)


-=Mike=-   (2005-11-23 14:24:00) [2]

По моему в данном случае не стоит связываться с TabControl.
Почему просто не наляпать панелей друг на друга и делать BringToFront.
Ложим главную панель, а на нее панели с элементами управления. Делаем у них Align=caClient.
Получилось очень просто:

 TVItem:= TreeView1.TVInsert( 0, 0, 'Пункт 1' );
 TreeView1.TVItemData[TVItem]:= Panel1;

 TVItem:= TreeView1.TVInsert( 0, TVItem, 'Пункт 2' );
 TreeView1.TVItemData[TVItem]:= Panel2;

 TVItem:= TreeView1.TVInsert( 0, TVItem, 'Пункт 3' );
 TreeView1.TVItemData[TVItem]:= Panel3;

....

procedure TForm1.TreeView1Change(Sender: PObj);
begin
 TKOLPanel(TreeView1.TVItemData[TreeView1.TVSelected]).BringToFront;
end


BaryVetaL   (2005-11-23 10:41:00) [3]

Да просто хочется сделать что-то вроде связки TreeView + TabControl (наподобие окно настройки в LightAlloy или TotalCommander) ну типа щелкаешь в TreeView и в зависимости от выбранной строки появляется нужная вкладка. Я все это сделал, а вот вкладки выглядят ни к месту ведь TreeView есть ...

Еще раз спасибо.


z007   (2005-11-22 22:42:00) [4]

А еще можно создать для tabContorl событие OnPaint и ничего в нем не отрисовывать:
procedure TForm1.TabControl1Paint(Sender: PControl; DC: HDC);
begin
//
end;

Но [2] + [3], конечно, правильней :)


Vladimir Kladov   (2005-11-22 19:06:00) [5]

Правильнее использовать TC_DisplayRect, он возвращает координаты прямоугольника, который и должен остаться после обрезки.


ECM   (2005-11-22 17:47:00) [6]

Если Вы по вкладками имели ввиду кнопки переключения страниц, то
заставить скрыть вкладки TabControl "самостоятельно" - не получится, но можно прибегнуть к такому трюку:
Перевести вкладки вниз (tcoBottom = TRUE) и обрезать регион отрисовки.
Примерно так:

var
 Rgn: HRGN
...
   Rgn := CreateRectRgn(0,4,TabControl1.Width-1,TabControl1.Height-22);
   SetWindowRgn(TabControl1.GetWindowHandle,Rgn,TRUE);


Если вкладки - это страницы - ИМХО: надо их (страницы) удалять, а при необходимости показа вставлять обратно...


BaryV   (2005-11-22 16:23:00) [7]

Ну конечно для KOL :-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо