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

Тема в разделе "Delphi - Компоненты", создана пользователем Jungle, 2 авг 2008.

  1. Jungle

    Jungle Гость

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

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

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

    [​IMG]
     
  2. Silver Wind

    Silver Wind Гость

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

    Jungle Гость

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

    [​IMG]

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

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

    Silver Wind Гость

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

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

    Jungle Гость

    Silver Wind

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

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

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

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

    [​IMG]
     
  6. Silver Wind

    Silver Wind Гость

    Да, есть такой момент, сам сталкивался.

    Просто в виде MainForm.Button0, точно также как и в случае их размещения на PageControl.

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

    Jungle Гость

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

Поделиться этой страницей