Вниз
Скачать: CL | DM;

TPageControl в TScrolBox е какие есть варианты реализации?   Найти похожие ветки 

← →
Kolan ©   (2007-07-13 18:40) [0]

Здравствуйте,
 Если посмотреть на BDS, то у неё так часть где расположен редактор кода(по виду аналог TPageControl) находится как бы внутри TScrolBox. Вот и мне надо сделать аналогично.

Кинул на форму TScrolBox, ему Align.Client. Внутрь кинул TPageControl.

У меня на PageControl"е будут динамически создаваться контролы.

Я придумал так. Напишу функцию, которая будет маштабировать PageControl так, чтобы все дин. созданые контролы было видно. Если PageControl будет больше окна, то тогда появятся полосы прокрутки.

Может есть решение попроще?


← →
Kolan ©   (2007-07-13 19:02) [1]

> Напишу функцию

Кроме того непонятно как её написать:

procedure TMainForm.FormResize(Sender: TObject);
var
 I: Integer;
 MaxLeft, MaxTop: Integer;
begin
 MaxLeft := 100;
 MaxTop := 100;
 for I := 0 to ComponentCount — 1 do
 begin
   if (Components[I] is TControl) then
     with (Components[I] as TControl) do
     begin
       if Parent = TabSheet1 then
       begin
         if (Top + Height) > MaxTop then
           MaxTop := Top + Height;
         if (Left + Width) > MaxLeft then
           MaxLeft := Left  + Width;
       end;
     end;
 end;
 PageControl1.Height := MaxTop;
 PageControl1.Width := MaxLeft;    
end;


Только у компонентов же координаты относительно  TabSheet1, а у PageControl относительно ScrolBox :(


← →
Sdubaruhnul   (2007-07-13 20:58) [2]

Эй, Колян, ты ли это? Неужто GUI-проектирование тебя сломило.

Не совсем понял, что ты там увидел в BDS. По мне так это редактор кода находится на PageControl"е.

Пихать в TScrollBox кучу контролов, причём разной вложенности - получится медленно. СкроллБокс подходит для чего-нибудь, типа прокручивающихся окон (подобно AutoScroll"у формы), но не для больших списков однородных элементов.

Но если и так, что сделай процедуру добавления компонентов, которая будет обновлять все размеры основываясь на старых данные и добавляемых элементах.


← →
Kolan ©   (2007-07-13 22:21) [3]

> Неужто GUI-проектирование тебя сломило.

Я все могу :) И крестиком вышивать :)


> Не совсем понял, что ты там увидел в BDS.

Чтобы увидеть надо открыть код, и сдвинуть сбоков панели так, чтобы текст не влизал — появятся 2 полосы прокрутки.


> По мне так это редактор кода находится на PageControl"е.

Да, а сам этот PageControl как бы в  ScrolBox"e


> Пихать в TScrollBox кучу контролов

Там будет 1 контрол — PageControl.


← →
Sdubaruhnul   (2007-07-13 23:11) [4]

>Чтобы увидеть надо открыть код, и сдвинуть сбоков панели так, чтобы текст не влизал — появятся 2 полосы прокрутки.

Да, у редактора кода появится вторая полоса прокрутки. Код двигается, а табы нет. Ы?

>Там будет 1 контрол — PageControl.

На нём панель, на панели group box, в груп-боксе кнопка, в кнопке яйцо, в яйце игла. Так и ходят сообщения о перерисовке - взад-вперёд.


← →
Kolan ©   (2007-07-14 08:24) [5]

Смысл вот в чём:

Мне надо отображать на TabSeet"ах, заране не известное по кол-ву и расположению, множество контролов. Окно ессно могут растягивать. Вот и вопрос как реализовать такой GUI?


← →
Sdubaruhnul   (2007-07-14 14:41) [6]

Kolan,

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

В коде VCL у контролов бывает тупо процедурка AdjustSize, которая всё просчитывает и изменяет. Ты её и хотел написать. Кстати, почему сканируешь форму? У TTabSheet есть св-во Controls.

В общем, это один способ, который предлагает Borland на протяжении 12 лет. Отлично.

Но уже давно есть более мощные решения по размещению и групировке контролов, причём такие, что позволяют забыть о редакторе форм (что абсолютно правильно). Где-то в Яве, а теперь и в WPF (ей богу, как только он грядёт - буду только на нём морды программам писать) есть.... СЕТКА. Grid. Это аналог TGridPanel, только, наоборот, TGridPanel - это аналог сетки.

Моё предложение. Почитать, посмотреть про сетку и написать своё.


← →
Kolan ©   (2007-07-14 14:49) [7]

> У TTabSheet есть св-во Controls.

Я в дизайнере конопки кидал на TabSheet, у них видимо Owner форма, так как TAbSheet.ControlsCount блыло равно 0.


> AdjustSize

Ага, поищю


> TGridPanel

Почитаю, я когда её смотрел что-то не заметил особо полезного&#133

> Моё предложение.

Лана, кое-что есть — буду разбираться&#133



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.022 c
15-1184430455
Таможенник
2007-07-14 20:27
2007.08.12
Подскажите, где купить домен?


15-1184552746
Slider007
2007-07-16 06:25
2007.08.12
С днем рождения ! 16 июля 2007 понедельник


15-1184149445
vpbar
2007-07-11 14:24
2007.08.12
Статья 146 УК РФ. Нарушение авторских и смежных прав


8-1162386885
Sinegru
2006-11-01 16:14
2007.08.12
DirectSound(DirectShow) capture soudn (захват звука)


9-1152518489
netboy
2006-07-10 12:01
2007.08.12
Вопросик по геймдеву




   Наверх