Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2014, 19:36   #1
ShaoKhan
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 33
По умолчанию Построение графиков на TChart. Delphi 7

Здравствуйте.
Имеется вот такое чудо в кнопке:
Код:
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;
Подскажите, пожалуйста, как сделать так, что бы при нажатии одной и той же кнопки(при изменении параметров K и T в Edit`ах) строилась новая кривая?
ShaoKhan вне форума Ответить с цитированием
Старый 03.02.2014, 19:50   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Можно, при нажатии кнопки, добавлять новую серию в TChart.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 19:55   #3
ShaoKhan
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Можно, при нажатии кнопки, добавлять новую серию в TChart.

Именно с новыми параметрами.
ShaoKhan вне форума Ответить с цитированием
Старый 03.02.2014, 20:12   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от ShaoKhan Посмотреть сообщение
Именно с новыми параметрами.
Выделите алгоритм рисования графика в отдельную процедуру, которая будет принимать нужные числовые параметры и серию в которой необходимо строить график. Впрочем, серию для графика также можно создать и внутри алгоритма.
Работа с сериями производится через свойство Series компонента TChart.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 20:50   #5
ShaoKhan
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Выделите алгоритм рисования графика в отдельную процедуру, которая будет принимать нужные числовые параметры и серию в которой необходимо строить график. Впрочем, серию для графика также можно создать и внутри алгоритма.
Работа с сериями производится через свойство Series компонента TChart.
Я дуб-дубом

Из ваших слов, я понял, что можно просто выделить кусок
Код:
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;
В отдельную процедуру.
А как с ней дальше работать я не знаю.
И внутри алгоритма тоже не знаю как действовать.

Могли бы вы накидать пару строчек примерные хотя бы для какой-нибудь простой функции?
ShaoKhan вне форума Ответить с цитированием
Старый 04.02.2014, 17:11   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
И внутри алгоритма тоже не знаю как действовать.
Простите, но Вы уже действуете внутри алгоритма.
Процедура
Код:
procedure MyGrafic(k:real;t:real;var sr:TChartSeries)
Функция
Код:
function MyGrafic(k:real;t:real):TChartSeries
Как Вы понимаете, это только объявления. Однако, даже глядя на них, на самом деле очень легко понять как осуществить реализацию. Читайте документацию по компоненту TChart и классу TChartSeries.
Streletz вне форума Ответить с цитированием
Старый 04.02.2014, 17:38   #7
ShaoKhan
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Простите, но Вы уже действуете внутри алгоритма.
Процедура
Код:
procedure MyGrafic(k:real;t:real;var sr:TChartSeries)
Функция
Код:
function MyGrafic(k:real;t:real):TChartSeries
Как Вы понимаете, это только объявления. Однако, даже глядя на них, на самом деле очень легко понять как осуществить реализацию. Читайте документацию по компоненту TChart и классу TChartSeries.

В интернете облазил этот TChart. Основы начитал, в виде Add , AddX, AddY, AddXY и прочей фигни, как редактировать сам Tchart и series.

Я не понимаю, что делать
То, что вы написали, по сути процедура и функция для одного и того же, как я понял. Можно использовать либо одно, либо другое.
А что в них писать? Весь код из моей кнопки?
И как потом вызвать в кнопке эту процедуру?
Поэтому вопрос про новые series для меня остаётся открытым
ShaoKhan вне форума Ответить с цитированием
Старый 04.02.2014, 19:37   #8
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
В интернете облазил этот TChart. Основы начитал, в виде Add , AddX, AddY, AddXY и прочей фигни, как редактировать сам Tchart и series.
Откройте для себя поиск и обработку информации на английском языке, хотя бы с помощью переводчика. Вот официальная онлайн-документация по Delphi (и не только): Embarcadero Technologies Product Documentation.
Цитата:
по сути процедура и функция для одного и того же, как я понял. Можно использовать либо одно, либо другое.
По сути да. В результате работы и процедуры и функции Вы получите TChartSeries с Вашим графиком, при условии правильной реализации.
Тот фрагмент, который Вы выделили в Вашем посте #5, может стать основой и для 1го и для 2го варианта. Только для того, чтобы он действительно стал процедурой или функцией его нужно доработать соответствующим образом.
Цитата:
И как потом вызвать в кнопке эту процедуру?
Как вызывать процедуру или функцию, по сути, определяется в её объявлении.
Цитата:
А что в них писать?
Простите, но это уже целиком на Ваше усмотрение.
Streletz вне форума Ответить с цитированием
Старый 04.02.2014, 20:43   #9
ShaoKhan
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 33
По умолчанию

Будем думать.

И всё-таки поясните, пожалуйста, про вызов какой-либо процедуры кнопкой.
ShaoKhan вне форума Ответить с цитированием
Старый 04.02.2014, 21:13   #10
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от ShaoKhan Посмотреть сообщение
И всё-таки поясните, пожалуйста, про вызов какой-либо процедуры кнопкой.
Здесь нет ничего сложного. Самый простейший способ - просто вызвать её в обработчике кнопки.
Приведу пример на основе моего же примера объявления процедуры, который я привёл в посте #6. Пожалуйста, простите меня за тавтологию.
Код:
procedure TForm2.Button21Click(Sender: TObject); 
begin
  MyGrafic(StrToFloat(Edit3.Text), StrToFloat(Edit4.Text);chart1.Series[1]);
end
Как Вы наверное догадались, в моём примере процедура принимает параметр типа TChartSeries по ссылке. Разумеется, что серия которая будет передаваться в процедуру должна быть предварительно создана.
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TChart, построение графиков, когда y=0 Вернер Помощь студентам 2 10.05.2012 09:34
Построение графиков в Delphi 7 Verusen1ka Помощь студентам 2 23.01.2012 08:50
Построение графиков в Tchart MadZeliboba Помощь студентам 2 20.12.2011 20:07
Построение графиков в TChart _-Re@l-_ Общие вопросы Delphi 3 12.05.2011 15:05