Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Динамическое создание элементов на форме   Найти похожие ветки 

 
StarWolf   (2004-07-07 10:18) [0]

Уважаемые спецы! Помогите новечку. Появилась проблема. Я не уверен, что наилучшим образом решаю ее. Если есть другой лучшый способ, то буду рад любому предожению. И так.
На форме должно быть 42 панели GroupBox. И у них однотипная обработка данных. Т.к. обрабатывать каждую по имени займет кучу времени, решил создавать массив этих боксов. Но раньше я с подобным ни когда не сталкивался.
Объявляю в глобальных переменных
GDays: array [1..42] of TGroupBox;
Далее в FormCreate пишу
for i:=1 to 42 do GDays[i]:=TGroupBox.Create(MainForm);
for i:=1 to 42 do GDays[i]:=TGroupBox.Show;

В FormResize задаю размеры (Width, Height, Top, Left).
Но ни один бокс так и не появляется на форме. В чем дело? Что я делаю не так? Повторюсь: я сталкиваюсь с подобным созданием компонент впервые. И вынудило меня на это только однотипность их обработки (что можно организовать в цикле). Если вы знаете другой способ перебора компанентов на форме, то подскажите пожалуйста.


 
Axis_of_Evil ©   (2004-07-07 10:22) [1]

Parent := MainForm, если не ошибаюсь


 
StarWolf   (2004-07-07 10:25) [2]

Супер! Спасибо. Получилось.


 
evvcom ©   (2004-07-07 10:29) [3]

for i:=Low(GDays) to High(GDays) do begin
 GDays[i]:=TGroupBox.Create(MainForm);
 GDays[i].Parent:=Self; // надеюсь это в обработчике формы?
 GDays[i].SetBounds(ALeft, ATop, AWidth, AHeight); // параметры должны быть где-то рассчитаны
end;


 
evvcom ©   (2004-07-07 10:30) [4]

точнее так:
GDays[i]:=TGroupBox.Create(Self);


 
HSolo ©   (2004-07-07 10:30) [5]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
serg128   (2004-07-07 10:32) [6]

Я бы не советовал размещать 42 панели на одной форме. Во первых - это плохой стиль программирования, во вторых - форма будет сжирать много ресурсов памяти/процессорного времени. Советую пересмотреть идеологию.


 
StarWolf   (2004-07-07 10:58) [7]

Дааа. Памяти уже только заготовка есть почти 3 мега.:( Но как еще сделать на форме ячейки с надписями нид ними? Лучшего способа я не придумал:( Конечно попробую что-нить придумать, но... Спасибо всем.


 
infom ©   (2004-07-07 11:01) [8]

А не вариант использовать таблицу ?


 
StarWolf   (2004-07-07 11:06) [9]

Так, а о какой таблице идет речь? Разве есть такой компанент? Ни когда о нем не слышал.


 
HSolo ©   (2004-07-07 11:11) [10]

StringGrid ?


 
StarWolf   (2004-07-07 11:20) [11]

Вроде в гриде же нельзя каждой ячайке задать заголовок.
А задача стоит именно в задании заголовка к каждой ячейке.


 
evvcom ©   (2004-07-07 11:25) [12]

Зато можно в одной ячейке заголовок, а в другой данные; в следующей опять заголовок, а в четвертой опять данные. См. http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/nogrid.htm


 
infom ©   (2004-07-07 11:28) [13]


> Зато можно в одной ячейке заголовок, а в другой данные;
> в следующей опять заголовок, а в четвертой опять данные.

или использовать навороченные гриды :
GridView
EhGrid
dxTreeList
и т.д.


 
StarWolf   (2004-07-07 11:28) [14]

Тоже верно. И на сколько я помню, можно даже задать у каждой ячкйки свой цвет? Можно ли? Если да, то это выход.


 
infom ©   (2004-07-07 11:29) [15]

а ещё вариант использовать Инспектор какой нидь


 
infom ©   (2004-07-07 11:39) [16]

Если хочешь задавать цвета ячеек, то по-моему лучший вариант это использовать GridView - отличный грид, очень много там можно настроить разного и полезного : цвета, разные типы колонок (checkbox в том числе) и т.д.


 
StarWolf   (2004-07-07 11:44) [17]

Отлично. ТОлько теперь подскажите, где его взять?


 
infom ©   (2004-07-07 12:01) [18]

http://bib.com.ua/info.php?id1=1761
а вообще
http://yandex.ru/yandsearch?text=%F1%EA%E0%F7%E0%F2%FC+GridView+&stype=www


 
evvcom ©   (2004-07-07 12:21) [19]

Yandex тебе поможет!
Я в свое время смотрел EhGrid, он меня не устроил. Вероятно, и GridView, если он халявный, недалеко ушел от EhGrid. Поэтому гораздо полезнее будет почитать ту статью на королевстве.


 
StarWolf   (2004-07-07 12:41) [20]

Хорошо. Спасибо. Щас покопаемся.


 
KADAN ©   (2004-07-07 14:15) [21]

Хм... а еще вариант просто рисовать на форму :)


 
StarWolf   (2004-07-07 14:32) [22]

Ну если подскажите как рисовать линии, то это было бы идеальный вариант.


 
infom ©   (2004-07-07 14:34) [23]

with Form1.Canvas do
MoveTo
LineTo


 
StarWolf   (2004-07-07 14:44) [24]

А можно ли где почитать на эту тему?


 
Sandman25 ©   (2004-07-07 14:44) [25]

TCanvas + F1


 
KADAN ©   (2004-07-07 15:26) [26]

тебе понадобятся только rectangle, MoveTo, LineTo, TextOut и, может быть, DrawFrameControl... ну еще brush.color и pen.color (с этим ты сможешь нарисовать то, что тебе надо).


 
Anatoly Podgoretsky ©   (2004-07-07 15:29) [27]

TBevel


 
StarWolf   (2004-07-07 15:49) [28]

Спасибо. Разобрался.



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

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
3-1087992836
Vit
2004-06-23 16:13
2004.07.18
Программное изменение типа поля из Alpha в Int


1-1088867036
Cyxapeff
2004-07-03 19:03
2004.07.18
FindFirst


1-1088722108
Глеб
2004-07-02 02:48
2004.07.18
Компонент - красивое меню


3-1088182867
zokzok
2004-06-25 21:01
2004.07.18
ttable vs tquery


1-1089033655
wild_arg
2004-07-05 17:20
2004.07.18
навигация по TXMLDocument