Tabsheet по размерам Pagecontrol

  • Автор темы Jungle
  • Дата начала
J

Jungle

Гость
#1
Необходим такой трюк: ширина и высота закладок TabSheet должны равняться соответственно ширине и высоте родительского компонента PageControl. Если установить свойства

PageControl.Style:=tsButtons; {плоский PageControl}
TabSheet1.TabVisible:=False {отключаем видимость корешка закладки}

в этом случае всё ещё сохраняется минимальный зазор по периметру:

 
S

Silver Wind

Гость
#2
Jungle
Т.е. тебе нужен компонент с закладками типа как в PageControl, но без ярлычков и чтобы закладки занимали всю область компонента?
Тогда посмотри на TNotebook (закладка Win 3.1). А в TPageControl, насколько я знаю от этого бордюра никак не избавиться через его свойства.
 
J

Jungle

Гость
#3
Silver Wind,
На самом деле я использую рисованный интерфейс для своей программы, стараясь не применять стандартные компоненты VCL. Но без PageControl мне не обойтись. Вот окно моей программы:



На данный момент управляю видимостью панелей через BringToFront, на которых расположен Image с PNG-изображением (благодаря PNGComponents 1.0 RC3). Это извращенный способ, так как каждый раз при перерисовке Image изображение слегка мельтешит.

Можно еще рисовать на канве PageControl, но только если это Bitmap, а у меня PNG.
 
S

Silver Wind

Гость
#4
Ну раз без PageControl не обойтись, то почему бы не заменить его на TNotebook? Функционал у них очень похож - это реализация закладок, разница лишь в том, что у TNotebook ярлычков закладок нет в принципе, но в данном случае они как раз и не нужны.

З.Ы. Кстати интерфейс красиво нарисован, мне понравилось.
 
J

Jungle

Гость
#5
Silver Wind

Да, компонент Notebook – как раз то, что необходимо для решения задачи, однако есть некий скептицизм, что касается его использования.

Ну, во-первых, я столкнулся, казалось бы, с такой смешной ситуацией; переношу компоненты на закладки копированием в буфер: делаю активной вторую закладку, вставляю компоненты из буфера – размещение происходит на первой закладке. Вставляю компоненты из буфера на третью закладку – размещение происходит на четвертой. В общем, закономерность непонятная. Поправить ситуацию можно, если только переключиться на текстовый вид формы и вставлять нужные куски кода в нужных местах.

Во-вторых, я практически незнаком с компонентами windows 3.11, поэтому возник вопрос: как обратиться к компонентам, расположенным на закладках компонента Notebook из других модулей? К примеру, если компонент располагается на главной форме MainForm1, то из другого модуля к нему можно обратиться через with MainForm1 do.

ЗЫ: у меня есть и другое приложение с рисованным GUI, в котором используется PageControl. Однако здесь задача решилась моментально.

 
S

Silver Wind

Гость
#6
Ну, во-первых, я столкнулся, казалось бы, с такой смешной ситуацией; переношу компоненты на закладки копированием в буфер: делаю активной вторую закладку, вставляю компоненты из буфера – размещение происходит на первой закладке. Вставляю компоненты из буфера на третью закладку – размещение происходит на четвертой. В общем, закономерность непонятная. Поправить ситуацию можно, если только переключиться на текстовый вид формы и вставлять нужные куски кода в нужных местах.
Да, есть такой момент, сам сталкивался.

как обратиться к компонентам, расположенным на закладках компонента Notebook из других модулей
Просто в виде MainForm.Button0, точно также как и в случае их размещения на PageControl.

Что же касается того момента, что этот компонент располагается на закладке Win 3.11, то так сложилось исторически, он появился в более ранних версиях и оставлен больше для совместимости. Думаю, на самом деле, не стоит боятся его использовать, к Win 3.11 он никакого отношения не имеет, ни на какие устаревшие API не завязан. Если его функциональность это как раз то что надо, то пускай остается.
 
J

Jungle

Гость
#7
Silver Wind
Спасибо за помощь! Проблема, думаю, решена. Остановлюсь на компоненте Notebook.