Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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

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

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

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



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

Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Наверх




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


15-1184508737
P_
2007-07-15 18:12
2007.08.12
Пиратство - конструктивный подход.


2-1184754884
***mikle***
2007-07-18 14:34
2007.08.12
Class TSocketServer not found


2-1184332482
GMH
2007-07-13 17:14
2007.08.12
вызываемая Getmodulefilemameex


2-1184865192
Leggin
2007-07-19 21:13
2007.08.12
Проблемма: работа программы под разными учетными записями.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский