Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
4-31053
masanovetc
2002-04-09 11:48
2002.06.10
WinExec


3-30723
Voldemar
2002-05-18 16:29
2002.06.10
Пример базы склада


3-30715
jaric
2002-05-17 17:32
2002.06.10
Как при форм ADOQuery использ данн из др ADOQuery как из подзапр


3-30710
diww
2002-05-18 13:27
2002.06.10
не определяется тип поля


1-30891
Great DAN
2002-05-30 07:26
2002.06.10
Объект TListBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский