Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2007, 15:22   #1
Llirik
Пользователь
 
Регистрация: 17.05.2007
Сообщений: 15
По умолчанию компонент TChart

Всем добрый день!
У меня есть Chart1 :TChart с свойствами:
AllowPanning:=pmBoth; (прокрутка разрешена в обоих направлениях)
AllowZoom:=True; (позволяет изменять во время выполнения масштаб изображения, вырезая фрагменты диаграммы или графика курсором мыши)

При создании компонента в мастере на закладке Chart => Axis => Scales, выбрано Automatic (устанавливает автоматическое масштабирование данных по оси).

В процессе заполнения графика (у меня этот процесс долгий) автоматическое масштабирование работает.

После прокрутки или вырезания фрагмента, масштабирование прекращается (это понятная необходимость).

Как мне вернуть отображение в исходное состояние (с автоматическим масштабированием)?
Llirik вне форума Ответить с цитированием
Старый 18.05.2007, 08:07   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Если речь идёт о выделении участка графика (во время работы) с помощью мыши то возвратить график в исходное состояние можно с помощью мыши, только нужно выделить любой участок графика в направлении справо налево.
SERG1980 вне форума Ответить с цитированием
Старый 18.05.2007, 14:30   #3
Llirik
Пользователь
 
Регистрация: 17.05.2007
Сообщений: 15
По умолчанию

Спасибо большое! Хотя я уже сам разобрался... надо было свойствам каждой из осей задать следующее:
Код:
Chart1.BottomAxis.Automatic:=True;
Chart1.LeftAxis.Automatiс=True;
И все вернулось на круги своя!....

Теперь бьюсь, чтобы при перемещении курсора по графику выдавалось информация о значениях по обеим осям точки под курсором...

Вроди-бы обрабатывай MouseMove и все... Да только у меня размеры Chart-а изменяет пользователь и при этом сами оси плавают по графику...
Подскажите, плиз, как узнать положение осей на канве? Зная максимумы и минимумы осей привязку сделаю!
За ранее благодарен!
Llirik вне форума Ответить с цитированием
Старый 18.05.2007, 17:00   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

...Пересчёт координат осей в экранные координаты осуществляет метод:
Function CalcPosValue (Const Value:Double):Longint;
он возвращает экранную координату (X или Y в зависимости от того применяется он к горизонтальной или вертикальной оси), соответствующую занчению Value данной оси. Экранные координаты соотв. координатам компонента Chart Координаты лев. края =(0,0). Метод применим к любой оси. Аналогичные методы CalcXPosValue и CalcYPosValue, соответственно для гор. и верт осей.
function CalcPosPoint (Value:integer):Double; возвращает знач. координаты данной оси, сооотв-ей экранной координате Value в пикселах. если применяется к гориз оси то Value -экранная координата X, если к верт. оси то Value-Y.
function CalcSizeValue (valueouble):longint; возвращает число пикселов, соотв. отрезку оси длиной Value. позволяет пеерводить интервалы значений координат оси в интервалы экранных координат. применимо к любой оси.
PS: может и поможет
SERG1980 вне форума Ответить с цитированием
Старый 16.12.2007, 20:19   #5
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию

Здраствуйте
Тут такой вопрос по поводу TChart: у меня есть двумерный массив:
а[i,1] - это название предмета, а[i,2] - кол-во этого предмета. Нужно нарисовать такой график : вдоль Х идут названия предметов, вдоль Y - кол-во предметов. От названий вверх поднимаются столбики, высота которых зависит соответственно от кол-ва. Немного путанно. Ну вы поняли.
Помогите пожалуйста
Rifler вне форума Ответить с цитированием
Старый 18.12.2007, 16:10   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

только на будущее не вдоль оси а по оси......
Вложения
Тип файла: rar 2.rar (226.6 Кб, 230 просмотров)
SERG1980 вне форума Ответить с цитированием
Старый 18.02.2008, 20:54   #7
treugolnich
Новичок
Джуниор
 
Регистрация: 17.02.2008
Сообщений: 2
По умолчанию вопрос

Привет всем! У меня 2 вопроса.

1) В таймере у меня есть процедура, котрая добавляет в одну из серий TChart (Line) новую точку - текущую координату движущейся на экране точки. Мне нужно, чтобы при рисовании графика новая точка графика соединялась прямой линией с предыдущей точкой. Однако при добавлении новой точки в график он, видимо, строится заново, причем точки соединяются ломаной линией в той последовательности, как они расположены по оси абсцисс, а не в соответствии с последовательностью их добавления. Можно ли как-то это исправить? Может, у этого компонента есть соответствующие параметры?

2) График в выше описанном случае рисуется при определённых параметрах. Нужно, чтобы при изменении параметров рисовался новый график в тех же координатах, а старый график оставался на рисунке. Т.е. нужно, чтобы при заранее неизвестном количестве серий добавлялись новые серии при запуске нового сценария. Как это сделать?

(я работаю в Delphi 7)

Последний раз редактировалось treugolnich; 18.02.2008 в 23:18.
treugolnich вне форума Ответить с цитированием
Старый 19.02.2008, 21:07   #8
darkstarx
Пользователь
 
Регистрация: 20.01.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от treugolnich Посмотреть сообщение
Привет всем! У меня 2 вопроса.

1) В таймере у меня есть процедура, котрая добавляет в одну из серий TChart (Line) новую точку - текущую координату движущейся на экране точки. Мне нужно, чтобы при рисовании графика новая точка графика соединялась прямой линией с предыдущей точкой. Однако при добавлении новой точки в график он, видимо, строится заново, причем точки соединяются ломаной линией в той последовательности, как они расположены по оси абсцисс, а не в соответствии с последовательностью их добавления. Можно ли как-то это исправить? Может, у этого компонента есть соответствующие параметры?
Почти ничего не понятно, но попытаюсь ответить.
Во-первых, график строится при необходимости перерисовки панели (причем только та часть, которая видима), ЕСТЕСТВЕННО, что при добавлении новой точки необходимость перерисовки возникает.
Во-вторых, если вы действительно используете тип серии TSeriesLine, то следующая точка неизбежно прорисуется вместе с линией, исходящей из предыдущей (глупо, если бы было не так, правда?! надеюсь вы не отключали прорисовку линий при последующем ожидании их прорисовки).
В-третих, точки располагаются так, как вы их добавляете в серию:
- указываете только Y для новой точки, получаете серию точек, в которой они следуют по оси абсцисс в очередности добавления;
- указываете X и Y, получаете серию точек, соединенных в очередности добавления, но по оси абсцисс расположенных в соответствии с указанными координатами X

И чего не понятного, ну у вас и вопросы...уж куда проще-то, даже по элементарной логике и то все интуитивно понятно...
darkstarx вне форума Ответить с цитированием
Старый 19.02.2008, 23:47   #9
treugolnich
Новичок
Джуниор
 
Регистрация: 17.02.2008
Сообщений: 2
По умолчанию

Цитата:
Сообщение от darkstarx Посмотреть сообщение
надеюсь вы не отключали прорисовку линий при последующем ожидании их прорисовки
А как называется это свойство? Надо проверить. // не могу найти подробного описания этого компонента, help не работает

Что касается метода добавления точек, то я указывала X и Y, но при перерисовке они соединяются в очерёдности их расположения по оси абсцисс, а не в очерёдности их добавления...
Цитата:
Сообщение от darkstarx Посмотреть сообщение
И чего не понятного, ну у вас и вопросы...уж куда проще-то, даже по элементарной логике и то все интуитивно понятно...
Я вобще-то биолог, просто понадобилось программку написать для моделирования. Поэтому я не очень вникала, как все это работает, в т.ч. в коды готовых компонентов Delphi - вот и недогадалась сразу, что при добавлении новой точки происходит перерисовка (эта процедура логична, но я же в "кишки" этого компонента не залазила и не знаю, задана там перерисовка, или нет).

Последний раз редактировалось treugolnich; 19.02.2008 в 23:49.
treugolnich вне форума Ответить с цитированием
Старый 11.03.2011, 20:41   #10
lin8773
Новичок
Джуниор
 
Регистрация: 11.04.2010
Сообщений: 1
По умолчанию

Всем привет. Есть проблема: Генерирую случайные числа, по ним строю график функции распределения. Если этот процесс повторить многократно, то TCHART каждый раз автоматически меняет цену деления шкалы, а график строит правильно, как сделать, чтобы цена деления шкалы не изменялась.
lin8773 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить график функции, используя компонент TChart. vitalik007 Компоненты Delphi 3 09.06.2014 11:20
TChart nataly60 Помощь студентам 1 06.06.2008 19:13
Tchart Droid Общие вопросы Delphi 9 27.05.2008 20:38
Использование TChart Tvv7-7-7 Помощь студентам 7 24.06.2007 21:08
TChart и printer Albenous Общие вопросы Delphi 5 20.02.2007 09:42