Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
1

Создание нескольких кривых одной кнопкой(при изменении параметров)

29.01.2014, 12:43. Просмотров 736. Ответов 19
Метки нет (Все метки)

Здравствуйте.
Имеется вот такое чудо:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
unit Lab6;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TeEngine, Series, jpeg, ExtCtrls, TeeProcs, Chart;
 
type
  TForm2 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    ComboBox1: TComboBox;
    Chart1: TChart;
    Image1: TImage;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Series3: TLineSeries;
    Series4: TLineSeries;
    Series5: TLineSeries;
    Series6: TLineSeries;
    Series7: TLineSeries;
    Series8: TLineSeries;
    Series9: TLineSeries;
    Series10: TLineSeries;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
 
    private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm2.Button1Click(Sender: TObject); {АЧХ}
var
A,Re1,Im1,w,wk,K,T:real;
begin
w:=StrToFloat(Edit1.Text);           //Начальная частота
K:=StrToFLoat(Edit3.Text);           // Коэффициент К
T:=StrToFloat(Edit4.Text);           //Постоянная времени Т
Chart1.LeftAxis.Title.Caption:= 'A(w)';
Chart1.BottomAxis.Title.Caption:= ' w ';
Chart1.LeftAxis.AutomaticMinimum:=true;
Chart1.LeftAxis.AutomaticMaximum:=false;
if (K<=5) and (K>=2) then
Chart1.LeftAxis.Maximum:=K+0.5;
if K>5 then   Chart1.LeftAxis.Maximum:=K+1;
if K<=1 then  Chart1.LeftAxis.Maximum:=K+0.1;
Chart1.BottomAxis.AutomaticMinimum:=true;
Chart1.BottomAxis.AutomaticMaximum:=true;
 
repeat
Re1:= K/(T*T*w*w+1);
Im1:= -K*T*w/(T*T*w*w+1);
A:=sqrt(Re1*Re1+Im1*Im1);
series1.AddXY(w,A);
w:=w+0.001;
wk:=StrToFloat(Edit2.Text);
until w>wk;         //Конечная частота
end;
 
 
procedure TForm2.Button2Click(Sender: TObject);
begin
Chart1.SeriesList[0].Clear;
end;
 
 
end.
Подскажите, пожалуйста, как сделать так, что бы при изменении начальных параметров(w, K, T) на графике строились новые кривые(желательно другого цвета) при нажатии лишь на одну кнопку(в данном случае Button1)?

Сейчас получается вот такое:

Создание нескольких кривых одной кнопкой(при изменении параметров)


Создание нескольких кривых одной кнопкой(при изменении параметров)


Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 12:43
Ответы с готовыми решениями:

Выборка из двух таблиц, при совпадении нескольких параметров в одной колонке
делаю запрос: SELECT tab1.id FROM tab1,tab2 WHERE tab2.tab1_id = tab1.id AND (...

Построение нескольких кривых одной функцией plot
Играюсь с одной анимацией в которой из-за большого количества обьектов начинает подтормаживать. В...

Обработка нескольких форм, одной кнопкой
Здравствуйте подскажите плиз. У меня есть БД в ней хранятся вопросы, к каждому вопросу нужно...

Как одной кнопкой проверить результат нескольких ответов
Доброе время суток! На форме имеется несколько заданий, как одной кнопкой проверить...

Сохранение параметров полей при их изменении
Добрый вечер. Сделал шаблон для распечатки бланков (с отчёта). Предусмотрена корректировка...

19
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
29.01.2014, 15:37 2
В обработчиках OnChange Edit1..Edit3 вызывается Button1Click(NIL);
0
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
29.01.2014, 16:29  [ТС] 3
Цитата Сообщение от angstrom Посмотреть сообщение
В обработчиках OnChange Edit1..Edit3 вызывается Button1Click(NIL);
Вы имели в виду вот так?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm2.Edit1Change(Sender: TObject);
begin
Button1.Click(NIL);
end;
 
procedure TForm2.Edit2Change(Sender: TObject);
begin
 Button1.Click(NIL);
end;
 
procedure TForm2.Edit3Change(Sender: TObject);
begin
Button1.Click(NIL);
end;
 
procedure TForm2.Edit4Change(Sender: TObject);
begin
Button1.Click(NIL);
end;
Если я правильно понял конечно.

После этого на каждый из этих NIL`ов ссылается ошибка: "Too many actual parameters"
0
northener
пофигист широкого профиля
3455 / 2350 / 638
Регистрация: 15.07.2013
Сообщений: 14,021
29.01.2014, 16:52 4
Цитата Сообщение от ShaoKhan Посмотреть сообщение
После этого на каждый из этих NIL`ов ссылается ошибка: "Too many actual parameters"
Правильно ссылается. TButton.Click это метод класса TButton и у него нет параметров. Ты спутал с TButton.OnClick
0
29.01.2014, 16:52
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
29.01.2014, 17:18  [ТС] 5
Цитата Сообщение от northener Посмотреть сообщение
Правильно ссылается. TButton.Click это метод класса TButton и у него нет параметров. Ты спутал с TButton.OnClick
Исправил на это
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm2.Edit1Change(Sender: TObject);
begin
Button1.OnClick(NIL);
end;
 
procedure TForm2.Edit2Change(Sender: TObject);
begin
Button1.OnClick(NIL);
end;
 
procedure TForm2.Edit3Change(Sender: TObject);
begin
Button1.OnClick(NIL);
end;
 
procedure TForm2.Edit4Change(Sender: TObject);
begin
Button1.OnClick(NIL);
end;

В итоге при вводе чисел в Edit`ы получаю каждый раз ошибки
Создание нескольких кривых одной кнопкой(при изменении параметров)


и

Создание нескольких кривых одной кнопкой(при изменении параметров)


Пройдя эти 4 "кольца ада" график строится сам(без нажатия на кнопку).
Но при изменении параметров строит такую же хрень, как в первом посте.
0
northener
пофигист широкого профиля
3455 / 2350 / 638
Регистрация: 15.07.2013
Сообщений: 14,021
29.01.2014, 19:33 6
Цитата Сообщение от ShaoKhan Посмотреть сообщение
Но при изменении параметров строит такую же хрень, как в первом посте.
Так надо было сразу сказать что код в первом посте не устраивает тем-то и тем-то.
P.S.
Хотя это было бы равнозначно просьбе написать ещё одно чудо.
0
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
29.01.2014, 19:42  [ТС] 7
Цитата Сообщение от northener Посмотреть сообщение
Так надо было сразу сказать что код в первом посте не устраивает тем-то и тем-то.
P.S.
Хотя это было бы равнозначно просьбе написать ещё одно чудо.
Так-то мой код, который в первом посте строит всё правильно.
Но только по 1 графику.
То есть построил, стёр, построил с новыми значениями, стёр.
А хотелось бы построить 2-3 кривых, что бы была видна закономерность, как зависит кривая от того или иного параметра.
0
northener
пофигист широкого профиля
3455 / 2350 / 638
Регистрация: 15.07.2013
Сообщений: 14,021
29.01.2014, 19:51 8
Цитата Сообщение от ShaoKhan Посмотреть сообщение
Так-то мой код, который в первом посте строит всё правильно.
А он (код) действительно твой?
0
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
29.01.2014, 19:58  [ТС] 9
Цитата Сообщение от northener Посмотреть сообщение
А он (код) действительно твой?
Да, скрины-то формы мои
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
29.01.2014, 22:52 10
Я ясно написал, вызывать Button1Click(NIL).
0
northener
пофигист широкого профиля
3455 / 2350 / 638
Регистрация: 15.07.2013
Сообщений: 14,021
29.01.2014, 22:55 11
Цитата Сообщение от angstrom Посмотреть сообщение
Я ясно написал, вызывать Button1Click(NIL).
Некошерно при наличии метода Click.
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
29.01.2014, 22:58 12
Кошерно, кошерно.
0
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
30.01.2014, 12:47  [ТС] 13
Написал:

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm2.Edit3Change(Sender: TObject);
begin
Button1Click(NIL)
end;
 
procedure TForm2.Edit4Change(Sender: TObject);
begin
Button1Click(NIL)
end;
Всё равно прога сама продолжает строить графики не нажимая на кнопку и также успевает выкинуть ошибку про пустое поле в Edit`е, отвечающий за параметр Т.
Как и в прошлых постах.
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
30.01.2014, 13:19 14
Проверять кто будет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.Edit3Change(Sender: TObject);
var
  r : Real;
begin
  if TryStrToFloat(Edit3.Text, r) then
    Button1Click(NIL);
end;
 
procedure TForm2.Edit4Change(Sender: TObject);
var
  r : Real;
begin
  if TryStrToFloat(Edit4.Text, r) then
    Button1Click(NIL);
end;
1
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
30.01.2014, 16:00  [ТС] 15
Цитата Сообщение от angstrom Посмотреть сообщение
Проверять кто будет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.Edit3Change(Sender: TObject);
var
  r : Real;
begin
  if TryStrToFloat(Edit3.Text, r) then
    Button1Click(NIL);
end;
 
procedure TForm2.Edit4Change(Sender: TObject);
var
  r : Real;
begin
  if TryStrToFloat(Edit4.Text, r) then
    Button1Click(NIL);
end;
Вот, что я получаю в ответ на строчку:

Delphi
1
if TryStrToFloat(Edit3.Text, r) then
There is no overload version of <TryStrToFloat> that can be called with these arguments.
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
30.01.2014, 16:34 16
function TryStrToFloat(const S: string; out Value: Extended): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Double): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Single): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Extended; const FormatSettings: TFormatSettings): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Double; const FormatSettings: TFormatSettings): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Single; const FormatSettings: TFormatSettings): Boolean; overload;
Попробуй вместо Real использовать Single.

Добавлено через 5 минут
Проще будет, если "скинешь" проект.
0
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
30.01.2014, 17:35  [ТС] 17
Цитата Сообщение от angstrom Посмотреть сообщение
Попробуй вместо Real использовать Single.

Добавлено через 5 минут
Проще будет, если "скинешь" проект.
С Single та же фигня.


Прикрепил архив.
Лабораторные 6-15.rar
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
30.01.2014, 17:43 18

Не по теме:

Архив забрал, смотреть буду уже ночью, часа через 4.



Добавлено через 5 минут
Наскоро проверил
Delphi
1
2
3
4
5
6
7
procedure TForm2.Edit1Change(Sender: TObject);
var
  r : Single;
begin
  if TryStrToFloat((Sender as TEdit).Text, r) then
    Button1Click(NIL);
end;
нормально компилируется.
0
angstrom
2473 / 1849 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
30.01.2014, 17:54 19
Подправил.
1
Вложения
Тип файла: rar ShaoKhan.rar (9.3 Кб, 7 просмотров)
ShaoKhan
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 13
30.01.2014, 18:15  [ТС] 20
Спасибо, буду знать теперь как с этим бороться.

1)Правда меня до сих пор не устраивает, что теперь он строит автоматически, при введении новых параметров, а не по кнопке.

2) Есть какие-нибудь мысли как сделать так, что бы строились новые графики(другого цвета) этой же кнопкой?
Может цикл какой?
0
30.01.2014, 18:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 18:15

Изменение стиля страницы при изменении get параметров
Всем доброго времени суток. Идея такова: хочу получать адресную строку и проверять ее на наличие...

Динамическое изменение объекта при изменении параметров
Есть линия - тег &lt;hr&gt;, есть параметры, организованные через теги &lt;input&gt; и &lt;select&gt;, при помощи...

Окно не меняет цвет при изменении параметров в glClearColor
Здравствуйте! Я пытаюсь разобраться с OpenGL. Поставила дополнительную библиотеку glut. Окно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru