Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Вниз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
Почитаю, я когда её смотрел что-то не заметил особо полезного…
> Моё предложение.
Лана, кое-что есть — буду разбираться…
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c