|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как клонировать компоненты на форме?
При старте программы читается XML из которого загружается список бинарных файлов (количество этих файлов заранее не известно, но может быть большим )
В этих файлах данные, типа сингл. Содержимое каждого бинарного файла нужно отобразить на форме в виде графика (компонент TChart) Все это уже реализовано и работает, остается только одна проблема: Как создать на форме произвольное количество чартов? Размещать вручную сотни чартов как-то не хочется. Подскажите, как можно программно клонировать компонент? |
#2
|
|||
|
|||
Код:
var I : Integer; AChart : TChart; begin For I := 0 To MyDataList.Count-1 Do Begin AChart := TChart.Create(Self); AChart.Parent := Self; AChart.Top := ... AChart.Left := ... ... End; А вообще-то Chart нужен один, а вот серий с данными в нем можно сделать много... |
#3
|
|||
|
|||
Спасибо большое! Щас буду пробовать))))
Один чарт мне не совсем подходит, т.к. необходимо организовать взаимодействие между ними. (По крайней мере, я пока не знаю как это взаимодействие реализовать в одном чарте) У меня еще один вопрос: Как обращаться к этим новым чартам? Где описывать события, например ОнКлик и прочее.... Как в режиме реального времени менять графики? Как создать массив указателей на объекты Делфи и с ним работать? Последний раз редактировалось ProperDoze, 06.08.2008 в 23:13. |
#4
|
||||
|
||||
Цитата:
Код:
AChart.OnClick := ClickOnChart; --------------------------------------------- Программирование - не профессия, а стиль жизни |
#5
|
|||
|
|||
Нашел сам:
Нужно создать массив типа TList: Код:
var mas: TList; ... mas := TList.Craete; Мотом добавить в него указатели на объекты: Код:
mas.Add(Chart); // Chart - типа TChart Обращаться к методам и свойствам так: Код:
TChart(mass.Items[n]).<метод>; В конце программы надо удалить все объекты и очистить массив: Код:
TChart(mas.Items[n]).Free; mas.Remove(mas.Items[n]); mas.free; Вот и все Всем спасибо, кто участвовал в обсуждении и помог своим советом! |