Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
1

Мигающий график в TChart.

28.04.2017, 13:41. Показов 1702. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно сделать чтоб в компоненте TChart мигала линия, как такое сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2017, 13:41
Ответы с готовыми решениями:

график в TChart
Привет всем)))) посмотрите правильно написан код для графика и еще как можно записать чтобы при...

График TChart
Построить график функции exp(x)-exp(-x)-2. procedure TForm1.BitBtn1Click(Sender: TObject); var...

График в TChart
как сделать в TChart (конечно использую два: 1-строит точки, 2-функцию через эти точки), чтобы...

Построить график в TChart
Hellp me

15
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
28.04.2017, 14:16 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.Series[0].Add(0);
Chart1.Series[0].Add(10);
Chart1.Series[0].Add(4);
Chart1.Series[0].Add(14);
Chart1.Series[0].Add(-4);
Chart1.Series[0].Add(0);
Timer1.Interval:=70;
Timer1.Enabled:=True;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Chart1.Series[0].SeriesColor:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;
??
1
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 14:57  [ТС] 3
GoodWeather, спасибо большущие

Добавлено через 27 минут
переделал под свою процедуру

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFrmToklGrafik.FormCreate(Sender: TObject);
begin
TChart.Series1[0].Add(0);
TChart.Series1[0].Add(10);
TChart.Series1[0].Add(4);
TChart.Series1[0].Add(14);
TChart.Series1[0].Add(-4);
TChart.Series1[0].Add(0);
Timer1.Interval:=70;
Timer1.Enabled:=True;
end;
 
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
begin
TChart.Series1[0].Series1Color:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;
вот такую ошибку выдает

ошибка Необъявленный идентификатор: 'Series1'
____________

как исправить ошибку? и series1 вроде и не нужно объявлять
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2017, 15:24 4
Цитата Сообщение от wolf777 Посмотреть сообщение
и series1 вроде и не нужно объявлять
Но где-то это объявлено иначе откуда программа это слово взяла?

Добавлено через 4 минуты
А, у Вас написано
Delphi
1
Series1[0]
Или уберите цифру 1, или пишите
Delphi
1
Series1.Add(0);
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 15:25  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
Но где-то это объявлено иначе откуда программа это слово взяла?
ну получается тогда series, объявляется в типе, так как при создании компонента, мы задаем линии (series), а они определяются в типе, так как type Определяет новую категорию переменной или процесса.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
  TFrmToklGrafik = class(TForm)
    ButtonExe: TButton;
    ButtonExit: TButton;
    ChartRsr: TChart;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Series3: TLineSeries;
    Series4: TLineSeries;
    Series5: TLineSeries;
    Timer1: TTimer;
    procedure ButtonExeClick(Sender: TObject);
    procedure ButtonExitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

ну как мне правильно прописать эти процедуры?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFrmToklGrafik.FormCreate(Sender: TObject);
begin
TChart.Series1[0].Add(0);
TChart.Series1[0].Add(10);
TChart.Series1[0].Add(4);
TChart.Series1[0].Add(14);
TChart.Series1[0].Add(-4);
TChart.Series1[0].Add(0);
Timer1.Interval:=70;
Timer1.Enabled:=True;
end;
 
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
begin
TChart.Series1[0].Series1Color:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;

ругается на Series1, пишет необъявлен идентификатор series1
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2017, 15:30 6
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.FormCreate(Sender: TObject);
begin
series1.Add(0);
series1.Add(10);
series1.Add(4);
series1.Add(14);
series1.Add(-4);
series1.Add(0);
end;
1
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
28.04.2017, 15:40 7
Цитата Сообщение от wolf777 Посмотреть сообщение
переделал под свою процедуру
славненько так "переделал"
TChart. - это что?
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 15:46  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
Или уберите цифру 1, или пишите
прописал как Вы сказали

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFrmToklGrafik.FormCreate(Sender: TObject);
begin
TChart.Series1.Add(0);
TChart.Series1.Add(10);
TChart.Series1.Add(4);
TChart.Series1.Add(14);
TChart.Series1.Add(-4);
TChart.Series1.Add(0);
Timer1.Interval:=70;
Timer1.Enabled:=True;
end;
 
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
begin
TChart.Series1.Series1Color:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;
выдает ошибку 'Tchart' does not contain a member named 'Series1' переводчик (Не содержит члена с именем)

Добавлено через 1 минуту
Цитата Сообщение от YuryK Посмотреть сообщение
славненько так "переделал"
TChart. - это что?
Tchart это компонент

Добавлено через 56 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
procedure TForm1.FormCreate(Sender: TObject);
begin
series1.Add(0);
series1.Add(10);
series1.Add(4);
series1.Add(14);
series1.Add(-4);
series1.Add(0);
end;

вооо так работает пасибки
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
28.04.2017, 16:01 9
Цитата Сообщение от wolf777 Посмотреть сообщение
Tchart это компонент
это класс компонента. А компонент - ChartRsr
выже сами привели код, где видно какие компоненты у вас на форме
Delphi
1
2
3
4
5
6
7
8
9
10
TFrmToklGrafik = class(TForm)
    ButtonExe: TButton;
    ButtonExit: TButton;
    ChartRsr: TChart;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Series3: TLineSeries;
    Series4: TLineSeries;
    Series5: TLineSeries;
    Timer1: TTimer;
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 17:30  [ТС] 10
ребят а как сделать чтоб мигала только красным линия series1? а не цветами перебора
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2017, 17:36 11
Заведи глобальную переменную var k:integer;
В таймере считай ее inc(k)
при нечетных цвет красный, при четных цвет фона.
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 17:50  [ТС] 12
Delphi
1
2
3
4
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
begin
Series1.Color:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;
а с этим как быть?

тут ведь RandomRange он перебирает диапазон, а как сделать чтоб статичный цвет был?

Цитата Сообщение от Puporev Посмотреть сообщение
Заведи глобальную переменную var k:integer;
В таймере считай ее inc(k)
при нечетных цвет красный, при четных цвет фона.
Delphi
1
2
3
4
5
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
 var k:integer; 
begin
Series1.Color:=RGB(RandomRange(0, 255), RandomRange(0, 255), RandomRange(0, 255));
end;
а с этим как быть? сделаю я например условие, четных не четных, ну статично могу сделать так

Series1.Color:=#FF0000; // ну будет просто красный, а как сделать чтоб мигал именно красный? а не перебором цветов
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2017, 17:59 13
Лучший ответ Сообщение было отмечено wolf777 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
var Form1: TForm1;
    k:integer;
..............................................
procedure TFrmToklGrafik.Timer1Timer(Sender: TObject);
begin
inc(k);
if odd(k) then Series1.Color:=clRed
else Series1.Color:=clBtnFace;
end;
1
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
28.04.2017, 23:48  [ТС] 14
все получилось, как хотел)))))
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.04.2017, 09:12 15
В Делфи 7 у Series нет свойства Color, поэтому мигающий график написал так.
Delphi
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
50
51
52
53
54
55
type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    Timer1: TTimer;
    Button1: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure grafik(c:TColor);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  k:integer;
  c:TColor;
implementation
 
{$R *.dfm}
procedure TForm1.grafik(c:TColor);
var x:real;
begin
x:=-pi;
while x<=pi do
 begin
  series1.AddXY(x,sin(x),'',c);
  x:=x+0.01;
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=false;
c:=clRed;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
grafik(c);
Timer1.Enabled:=true;
Timer1.Interval:=100;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var c:TColor;
begin
inc(k);
if odd(k) then c:=clRed else c:=clBtnFace;
series1.Clear;
grafik(c);
end;
 
end.
0
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
29.04.2017, 15:06 16
Цитата Сообщение от wolf777 Посмотреть сообщение
ведь RandomRange он перебирает диапазон
Нет. Это случайное число из диапазона. То есть здесь делается тупо случайный цвет. Неужели вы не догадались поменять это на просто нужный вам цвет?
Цитата Сообщение от Puporev Посмотреть сообщение
В Делфи 7 у Series нет свойства Color
Я же приводил в #2 код - SeriesColor. А k надо бы в приватных полях формы объявлять.

Добавлено через 5 минут
Delphi
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
...
  private
    { Private declarations }
    CntSeriesHighlight: Integer;
...
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=False;
DoubleBuffered:=True;
Chart1.DoubleBuffered:=True;
Series1.Add(0); // Chart1.Series[0].Add(0);
Series1.Add(10); // Chart1.Series[0].Add(10);
Series1.Add(4); // Chart1.Series[0].Add(4);
Series1.Add(14); // Chart1.Series[0].Add(14);
Series1.Add(-4); // Chart1.Series[0].Add(-4);
Series1.Add(0); // Chart1.Series[0].Add(0);
Timer1.Interval:=300;
Timer1.Enabled:=True;
end; 
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(CntSeriesHighlight);
if Odd(CntSeriesHighlight) then
    Series1.SeriesColor:=clRed
else
    Series1.SeriesColor:=clLime;
end;
1
29.04.2017, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2017, 15:06
Помогаю со студенческими работами здесь

TChart: нарисовать график
Помогите .пожалуйста, есть два столбца значений . Как нарисовать график? Я хочу добиться, чтобы...

Построить график tchart

Строим график в TChart
Имеется StringGrid со значениями X и F(x) . Как построить по ним график в TChart ? (Чтобы он...

Построить график в TChart
Добрый день. Как построить график в компоненте TChart для функции: y = 1,23x+53,3? Оси xi и yi.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru