Форум: "Основная";
Текущий архив: 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