powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как удалить серии типа TShapeSeries c графика
5 сообщений из 5, страница 1 из 1
Как удалить серии типа TShapeSeries c графика
    #39507769
Alexander2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывожу на TeeChart два графика, в цикле вывожу туда дополнительно несколько TShapeSeries - просто прямоугольники в нужных местах.
Код: pascal
1.
2.
3.
4.
z := TChartShape.Create(self);
z.ParentChart := cht1;
z.Style := chasRectangle;
.... про все остальное X0,X1....


Есть необходимость при условии удалять прямоугольники с графика - а виртуозно черезж сделанный TeeChart предлагает в аналогично виртуозно " гланды через..." хелпе непонятный способ удаления серий типа Shape.

TChart.RemoveSeries (Each Shape is a unique Series)

пытаюсь написать такой код удаления:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
....
  else
      begin
       for i := cht1.SeriesCount-1 downto 0 do
        begin
          //    cht1.RemoveSeries(cht1.Series[i]);  -- удаляет нафиг все!  - не годится, надо оставить линии графиков
          //    if cht1.Series[i].ClassType = TShape   -- пытаюсь этот признак, что это шейп класс - не реагирует 
          //    if cht1.Series[i].Style = chasRectangle  -- пытаюсь по стилю определить - ругается на несовместимость
                                                                                        [dcc32 Error] unForm.pas(2012): E2008 Incompatible types
//          then
            cht1.RemoveSeries(cht1.Series[i]);    
//   
//            ShowMessage('jopa '+IntToStr(i));
//            cht1.Series[i].Clear;
           end;
//         if (cht1.Series[i].Style = TChartShape)
        end;
         cht1.Refresh;
      end;


Кто знает как эти чертовые шейпы удалить, не трогая нормальные линии графиков?
...
Рейтинг: 0 / 0
Как удалить серии типа TShapeSeries c графика
    #39507771
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander2,
ты просто не умеешь их готовить (с)
Код: pascal
1.
if cht1.Series[i] is TChartShape...


А лучше делать так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var  FTempChartContainer: TComponent;

//создание
  FTempChartContainer:=TComponent.Create(self);
  z := TChartShape.Create(FTempChartContainer);

//удаление
  FTempChartContainer.Free;
...
Рейтинг: 0 / 0
Как удалить серии типа TShapeSeries c графика
    #39507772
Alexander2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,
Оперативненько!!! Спасибо друг!

Все заработало!
...
Рейтинг: 0 / 0
Как удалить серии типа TShapeSeries c графика
    #39507773
Alexander2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Вот так я готовлю шейпы на график (попробовал предложенный вариант - срабатывает), а удалить теперь той командой не получается.
автор//удаление
FTempChartContainer.Free;


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
procedure TfSample.Button1Click(Sender: TObject);
   var z: TChartShape;
       i: Integer;
   var FTempChartContainer: TComponent;
begin
    If MySelectedNameId <> -1
     then
      begin
        panSelectedParameter.Caption:= MySelectedName;

        dmSample.mtValue.Active:=False;
        dmSample.mtValue.Active:=True;
        dmSample.mtValue.First;
        While not dmSample.mtValue.Eof do
         begin
        //  z := TChartShape.Create(self);
        //создание
          FTempChartContainer:=TComponent.Create(self);
          z := TChartShape.Create(FTempChartContainer);
          //-------------------------------------------------------------
          z.ParentChart := cht1;
          z.Style := chasRectangle;
          z.X0:=dmSample.mtValue.FieldByName('From').AsFloat;
          z.Y0:=0;
          z.X1:=dmSample.mtValue.FieldByName('To').AsFloat;
          z.Y1:=6000;
          z.Pen.Width:=0;
          z.Color := StringToColor(dmSample.mtValue.FieldValues['ValueColor']);
          z.Transparency:= 70;
          z.Font.Size:= 7;
          z.Text.Add(dmSample.mtValue.FieldValues['Value']);
          z.Alignment := taLeftJustify;
          z.VertAlign := vaTop;
          z.Legend.Visible := False;
          dmSample.mtValue.Next;
         end;
      end
     else
      begin
        FTempChartContainer.Free;     -----  это не срабатывает.
       {   
       for i := cht1.SeriesCount-1 downto 2 do
        begin
         if cht1.Series[i] is TChartShape then
          cht1.RemoveSeries(cht1.Series[i]);
        }
      end;
   cht1.Refresh;
end;
...
Рейтинг: 0 / 0
Как удалить серии типа TShapeSeries c графика
    #39507774
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander2,
отдыхать тебе пора, барин (с).
Контейнер глобальной переменной должен быть или полем класса.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как удалить серии типа TShapeSeries c графика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]