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

Вниз

TChart   Найти похожие ветки 

 
Kirill ©   (2002-05-18 14:06) [0]

Народ, нужна помощь для работы с сабжем. А конкретнее, как динамически создавать Series и добавлять их в Chart. И как работать с Axis, точнее как в run-time установить максимальное значение для x и y.


 
MBo ©   (2002-05-18 21:21) [1]

а хелп не пробовал посмотреть по второму вопросу?
procedure TForm1.Button1Click(Sender: TObject);
var dynser: TLineSeries;
i:integer;
begin
dynser:=TLineSeries.Create(chart1);
dynser.ParentChart:=chart1;
for i:=1 to 50 do dynser.addxy(i,sin(i));
chart1.BottomAxis.Automatic:=false;
chart1.BottomAxis.maximum:=30;
end;


 
Kirill ©   (2002-05-23 15:56) [2]

Извини, пожалуйста, что не ответил сразу - пропутил ветвь.
БОЛЬШОЕ СПАСИБО, помогло.


 
Kirill ©   (2002-05-23 15:57) [3]

А почему не работает TChartSeries, а TLineSeries - работает?


 
Kirill ©   (2002-05-23 16:04) [4]

Вопрос: а освобождать надо ресурсы?
т.е. где уничтожать dynser?


 
Kozhanov ©   (2002-05-23 16:28) [5]

> Kirill
TChartSeries - абстрактный класс (в основном)
По-моему, чарт сам освобождаем все свои серии...


 
Kirill ©   (2002-05-23 16:29) [6]

Судя по всему, не в цикле.
Еще вопрос:
В цикле добавляю графики, но вертикальная решетка высвечивается только для последнего графика. А мне надо желательно все. Поясняю, пунктир для точек со значениями.


 
MBo ©   (2002-05-23 16:30) [7]

>TChartSeries, а TLineSeries - работает
потому что первое-это общий предок. объявить переменную можно и TChartSeries, но в конструкторе обязательно создавать экземпляр конкретного типа TLineSeries.
>где уничтожать dynser
его уничтожит автоматически Owner, т.е. chart1 при своем destroy


 
Kirill ©   (2002-05-23 16:36) [8]

>его уничтожит автоматически Owner, т.е. chart1 при своем destroy
Это хорошо


 
MBo ©   (2002-05-23 16:42) [9]

>но вертикальная решетка высвечивается только для последнего графика
что-то я не пойму...


 
Kirill ©   (2002-05-23 16:44) [10]

Не выводятся подписи для первых графиков и пунктирная вертикальная линия значений. Только для последнего.


 
MBo ©   (2002-05-23 16:48) [11]

подписи выводятся для оси в целом.


 
Kirill ©   (2002-05-23 16:59) [12]


> подписи выводятся для оси в целом

Да, но только для одного последнего графика.


 
Kirill ©   (2002-05-23 17:11) [13]

И как вообще построить свои пунктирные линии?


 
MBo ©   (2002-05-23 17:32) [14]

рисуй в afterpaint


 
Kirill ©   (2002-05-23 17:35) [15]

Как?


 
MBo ©   (2002-05-23 17:45) [16]

на Canvas


 
Kirill ©   (2002-05-23 18:56) [17]

Пробовал. Он не обновляет, почему-то? Плюс он еще подписи не выводит, их тоже самому писать на канвас? А проще нет решения, типа REFRESH?


 
Kirill ©   (2002-05-24 10:54) [18]

Никаких идей больше нет?


 
Kirill ©   (2002-05-28 17:29) [19]

2 MBo:
Он не хочет обновлять линии.


 
MBo ©   (2002-05-28 17:39) [20]

я твоей проблемы не пойму


 
Kirill ©   (2002-05-28 19:02) [21]

Так, начнем сначала и подробно.
Есть таблица с сотрудниками. В таблице есть с какого дня в отпуске и сколько. Т.к. количество сотрудников меняется, то задать количество Series не могу. На TChart надо полосами указать время в отпуске. Что-то вроде этого:

Петров | ------ |
Иванов | ----- |
Сидоров | ----- |
--------------------------------------------------------
Привожу код:


 
Kirill ©   (2002-05-28 19:03) [22]

procedure TfrmGr.FormActivate(Sender: TObject);
var i,j : word;
ser : TLineSeries;
dat : TDate;
x : longint;
begin
WindowState:=wsMaximized;
j:=0;
with Chart1 do begin
for i:=0 to DatM.TGO.RecordCount-1 do begin
ser:=TLineSeries.Create(Chart1);
ser.ParentChart:=Chart1;
DatM.TGO.RecNo:=i;
if (DatM.TGO.FieldByName("DataNach").value=NULL)or(DatM.TGO.FieldByName("DaysOtp").Value=NULL) then continue;
inc(j);
dat:=DatM.TGO.FieldByName("DataNach").AsDateTime;
ser.AddNull(Trim(DatM.TS.FieldByName("FIO").AsString));
ser.AddXY(DayOfTheYear(dat),i+2,Copy(DateToStr(dat),1,5),clRed);
ser.AddXY(DayOfTheYear(dat)+DatM.TGO.FieldByName("DaysOtp").AsInteger,i+2,""{IntToStr(DayOfTheYear(dat)+DatM.TGO.FieldByName("DaysOtp").AsInteger)},clRed);
end;
LeftAxis.Automatic:=false;
LeftAxis.Maximum:=j+2;
BottomAxis.LabelsFont.Name:="Small Fonts";
BottomAxis.LabelsFont.Size:=6;
Canvas.Pen.Style:=psDash;
Canvas.Pen.Width:=1;
Canvas.Pen.Color:=clLtGray;
Canvas.Brush.Style:=bsClear;
end;
end;


 
Kirill ©   (2002-05-28 19:06) [23]

Но проблема в том, что через значения должны проходить пунктиры (вертикальные и горизонтальные), но из-за (не знаю чего) отображается только для последней записи, а для остальных только график, т.е. линии отпуска (ни подписей, ни значений нет).


 
MBo ©   (2002-05-29 07:09) [24]

Обрати внимание на gantt series


 
Kirill ©   (2002-05-29 11:36) [25]

Спасибо. В хелпе не нашел как им пользоваться. :(


 
MBo ©   (2002-05-29 12:40) [26]

\Delphi5\Demos\Teechart


 
Kirill ©   (2002-05-29 16:54) [27]

2MBo:
Все, БОЛЬШОЕ СПАСИБО. Вопрос закрыт.



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

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

Наверх




Память: 0.53 MB
Время: 0.01 c
6-30956
ввв
2002-04-01 20:18
2002.06.10
mapireadmail


14-31010
Malder
2002-05-04 13:41
2002.06.10
ДР


3-30684
Malyatko
2002-05-17 17:28
2002.06.10
DBGrid <--> Excel.


1-30768
Sniffer
2002-05-30 06:09
2002.06.10
Алгоритм перевода из десятиричной системы исчисления


6-30953
alexnsk
2002-04-02 07:56
2002.06.10
Как получить сообщение из почтового ящика