Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизГрафик. Найти похожие ветки
← →
dimonf (2002-01-15 14:40) [0]Народ, какой компанент мне лудьше использовать, чтобы выводить график? Мне его нужно маштабировать и просматривать с помощю ScrolBar-ов. Как мне это сделать? Пробовал Chart, но ничего не получилось. :(
← →
MBo (2002-01-15 14:44) [1]что именно не получилось?
его и без скроллбаров можно прокручивать и масштабировать
← →
Digitman (2002-01-15 15:25) [2]TChart прекрасно масштабирует изображение. Внимательно читай описание к его методам
← →
dimonf (2002-01-15 15:51) [3]Вот что я делал:
procedure TMDIChild.ScrollBar2Change(Sender: TObject);
var Difer:Double;
begin
With Chart1.BottomAxis do
Begin
Difer:=Maximum-Minimum;
Maximum:=Chart1.MaxXValue(Chart1.BottomAxis)-ScrollBar2.Position;
Minimum:=Maximum-Difer;
end;
end;
procedure TMDIChild.ScrollBar1Change(Sender: TObject);
var Difer:Double;
begin
Chart1.BottomAxis.SetMinMax(ScrollBar1.Position,10);
ScrollBar2.PageSize:=Trunc((ScrollBar1.Position/935)*ScrollBar2.Max);
end;
Но все время выскакивает ошибка Maximum>=Minimum. В чем проблема?
← →
EAlexander (2002-01-15 16:03) [4]в том, что Maximun получаемся меньше Minimum :)
← →
dimonf (2002-01-15 17:19) [5]Дак как же мне быть? Может кто делал что-нибуть подобное? Подскажите!!!
← →
MBo (2002-01-16 08:28) [6]>Chart1.BottomAxis.SetMinMax(ScrollBar1.Position,10);
очевидно ScrollBar1.Position>10
← →
Boris (2002-01-16 12:04) [7]TParser version 10.1
На Torry есть вроде бы. Если нет, пиши, вышлю мылом
← →
Boris (2002-01-16 12:07) [8]http://www.fi.muni.cz/~xkovalc/czindex.htm
← →
Sleepyhead (2002-01-16 16:14) [9]RTFM.
TChartAxis.SetMinMax
procedure SetMinMax(AMin, AMax: Double);
Unit
TeEngine
Description
The SetMinMax method changes the current Axis Minimum and Maximum scales. The TChartAxis.Automatic property is set to False.
← →
Sleepyhead (2002-01-16 16:23) [10]Вообще-то, странноватое использование TScrollBar....
В TeeChart есть специальный компонент для прокручивания графиков, называется TChartScrollBar. Они именно для этого и предназначен!
Вот пример использования TChartScrollBar (недостающее легко восстанавливается).
{$I TeeDefs.inc}
unit Chart_ScrollBar;
interface
uses
{$IFNDEF LINUX}
Windows, Messages,
{$ENDIF}
SysUtils, Classes,
{$IFDEF CLX}
QGraphics, QControls, QForms, QDialogs, QExtCtrls, QStdCtrls, QComCtrls,
{$ELSE}
Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls,
{$ENDIF}
Base, TeEngine, Series, TeeScroB, TeeProcs, Chart;
type
TChartScrollBarForm = class(TBaseForm)
ChartScrollBar1: TChartScrollBar;
Series1: TFastLineSeries;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ChartScrollBar1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}
procedure TChartScrollBarForm.FormCreate(Sender: TObject);
begin
inherited;
Series1.FillSampleValues(1000);
{ show the first 100 points... }
Chart1.BottomAxis.SetMinMax(0,99);
{ adjust the ScrollBar }
ChartScrollBar1.RecalcPosition;
end;
procedure TChartScrollBarForm.Button1Click(Sender: TObject);
begin
ChartScrollBar1.Position:=ChartScrollBar1.Max; { go to end }
end;
procedure TChartScrollBarForm.Button2Click(Sender: TObject);
begin
ChartScrollBar1.Position:=ChartScrollBar1.Min; { go to begin }
end;
procedure TChartScrollBarForm.ChartScrollBar1Change(Sender: TObject);
begin
{ enable / disable the "go to begin" and "go to end" buttons... }
Button1.Enabled:=ChartScrollBar1.Position < ChartScrollBar1.Max;
Button2.Enabled:=ChartScrollBar1.Position > ChartScrollBar1.Min;
end;
initialization
RegisterClass(TChartScrollBarForm);
end.
← →
dimonf (2002-01-16 20:38) [11]Ребята, я не очень понял, что такое TChartScrollBar?
Это клас или какой-то визуальный компанент?
Я работаю на Delphi5 под Win2000. Может под D5 такого нет?
Если нет, то где можно достать? В Справке про этот компанент ничего нет. На torry - тоже. Как быть???
← →
dimonf (2002-01-16 22:22) [12]Кстати, DBChart чем нибуть отличаеться от Chart? Я имею введу кроме того, что DBChart работает с данными из база а Chart с любыми другими данными.
← →
MBo (2002-01-17 07:55) [13]может, объяснишь, что точно тебе требуется и почему не подходит
штатная прокрутка правой кнопкой и zoom левой?
← →
Andrey3 (2002-01-17 08:39) [14]2 dimonf
Перед тем, как устанавливать значение для
Chart1.BottomAxis.Maximum
надо убедиться, что будет выполнено условие
Maximum > Minimum,
например, сделать так:
Minimum := -(очень большое число)
← →
dimonf (2002-01-17 09:00) [15]У моего начальства есть программа, где манипуляции с графиком осуществляют два ScrollBar-а. Один с права(вертикальный)-масштабирует график, другой внизу(горизонтальный)-передвигает влево, право - масштабируемый график. Эта программа написана под DOS.
Меня попросили переделать под Win и сделать тоже самое. Вот я и гумлюсь над данной проблемой :(
Но стандартные методы их не устраивают. Я предлагал сделать три кнопки - одна передвигает график влево, вторая масштабирует, третья передвигает вправо. Не нравиться. :(((
Вот и маюсь :(
← →
MBo (2002-01-17 09:59) [16]
var i:integer;
delta:double;
cmin,cmax,koef:double;
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=1 to 100 do series1.addxy(i,sin(0.1*i));
chart1.bottomaxis.SetMinMax(30,60);
cmin:=series1.MinXValue;
cmax:=series1.MaxXValue;
end;
procedure TForm1.ScrollBar2Change(Sender: TObject);
var amin,amax:double;
begin
delta:=chart1.BottomAxis.Maximum-chart1.BottomAxis.Minimum;
koef:=(1-cmin/(cmax-delta))/(scrollbar2.max-scrollbar2.min);
amin:=cmin+scrollbar2.position*koef*(cmax-delta);
amax:=amin+delta;
chart1.bottomaxis.SetMinMax(amin,amax);
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
var c,zoom,d:double;
begin
zoom:=scrollbar1.position*0.1;
label1.caption:=floattostr(zoom);
delta:=chart1.BottomAxis.Maximum-chart1.BottomAxis.Minimum;
c:=chart1.BottomAxis.Minimum+delta/2;
chart1.bottomaxis.SetMinMax(c-zoom*(cmax-cmin)/2,c+zoom*(cmax-cmin)/2);
end;
← →
MBo (2002-01-17 10:00) [17]и все-таки потыкай левой и правой кнопкой в график
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c