Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.005 c
14-8999
zero
2001-12-12 18:04
2002.02.04
Merlin и модераторы отзовитесь, объясните что случилось


1-8925
Dmitriy_R
2002-01-15 10:49
2002.02.04
Создание файла?


4-9020
sanyaMM
2001-12-04 16:39
2002.02.04
Как перехватить Ctrl+Alt+Del?


1-8932
Станислав
2002-01-16 15:36
2002.02.04
Большие числа


3-8772
Andr
2002-01-05 19:06
2002.02.04
DBImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский