Italian community of Lazarus and Free Pascal

Programmazione => Graphics => Topic aperto da: carmelo81 - Giugno 17, 2012, 10:34:36 am

Titolo: Tchart - Auto scale
Inserito da: carmelo81 - Giugno 17, 2012, 10:34:36 am
Buona domenica!
Stavo cercando di inserire nel mio grafico fatto con componente Tchart, un autoscale che si attivi ogni volta che cambio i dati di input del grafico. Stavo seguendo il codice di esempio nella demo TAChart Axis demo - grafico lineare-  ma ci sono troppi componenti e non capisco come funziona, infatti a me non funziona!
Mi date una mano a capire quali componenti utilizzare?
Grazie mille
Carmelo
Titolo: Re:Tchart - Auto scale
Inserito da: xinyiman - Giugno 18, 2012, 09:40:05 am
Ciao Carmelo io ti consiglio di dare prima un occhiata all'esempio "basic" che è estremamente ben fatto, il grafico è quello a torta. Poi da li passi all'altro una volta capito il significato dell'oggetto.

Titolo: Re:Tchart - Auto scale
Inserito da: carmelo81 - Giugno 18, 2012, 04:23:46 pm
Grazie per la risposta.
Ho dato un occhio all'esempio che mi hai suggerito ma, sbaglio oppure la possibilità di fare l'auto scale in quell'esempio non c'è?
Titolo: Re:Tchart - Auto scale
Inserito da: xinyiman - Giugno 18, 2012, 04:35:36 pm
Sinceramente non ci ho fatto caso. Verifico appena ho tempo e ti faccio sapere!  :)
Titolo: Re:Tchart - Auto scale
Inserito da: xinyiman - Giugno 19, 2012, 09:12:29 am
Per usare l'auto scale fai cosi:

Aggiungi un oggetto TChartAxisTransformations (e lo chiami) MyAutoScale alla form. Poi doppio click su tale oggetto e clicca su "add" -> "auto scale".

Poi aggiungi una checkbox e la chiami MyCheckBox e sull'evento change aggiungi MyAutoScale.Enabled:=MyCheckBox.Checked;

In teoria così dovrebbe funzionare (ma non penso sui grafici a torta).

Spero di essere stato d'aiuto
Titolo: Re:Tchart - Auto scale
Inserito da: carmelo81 - Giugno 20, 2012, 07:24:11 pm
Purtroppo non funziona...
Allego il codice, magari sbaglio qualcosa.
Codice: [Seleziona]
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
  StdCtrls, Arrow, EditBtn, PopupNotifier, ExtCtrls, Grids, Chart, ButtonPanel,
  DBGrids, TAGraph, TASeries, TASources, TAStyles, TATransformations, TATools,
  TAMultiSeries, types, Math;

type

  { TForm1 }

  TForm1 = class(TForm)

    Button1: TButton;
    Chart1: TChart;
    ChartAxisTransformations1: TChartAxisTransformations;
    myautoscale: TAutoScaleAxisTransform;
    mycheckbox: TCheckBox;

    Memo1: TMemo;
    Series1: TLineSeries;
    GroupBox1: TGroupBox;
    PageControl1: TPageControl;
    StatusBar1: TStatusBar;
    StringGrid1: TStringGrid;
    TabSheet1: TTabSheet;
    TabSheet3: TTabSheet;

    procedure Button1Click(Sender: TObject);
    procedure mycheckboxChange(Sender: TObject);

   private
    { private declarations }

  public

    { public declarations }
  end;

var
  Form1: TForm1;

     maxx, maxy, x1, y1, x2, y2, x3, y3, x4, y4:real;
     a1, a2:real;
     Xg, Yg, Ix, Iy: real;
     lser: TLineSeries;
     x, y: integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin

  Chart1.Series.Clear;
   lser:=TLineSeries.Create(Chart1);
    for x:= 1 to 20 do
     lser.AddXY(strtofloat(stringgrid1.Cells[1,x]),strtofloat(stringgrid1.Cells[2,x]));
      chart1.AddSeries(lser);
       lser.LinePen.Width:=2;
end;

procedure TForm1.mycheckboxChange(Sender: TObject);
begin
  myautoscale.Enabled:=mycheckbox.Checked;
end;
end.

grazie ancora






Titolo: Re:Tchart - Auto scale
Inserito da: Stilgar - Giugno 22, 2012, 12:58:57 am
Fai uno zip del progetto (senza compilati) e allegalo al post.
Messo così diventa ostico capire ;) (manca tutta la parte di design :D)
Titolo: Re:Tchart - Auto scale
Inserito da: carmelo81 - Giugno 25, 2012, 04:51:51 pm
Grazie per la disponibilità.
Due archivi perchè uno era troppo grande, saluti!
Titolo: Re:Tchart - Auto scale
Inserito da: xinyiman - Giugno 26, 2012, 02:38:54 pm
Scusa carmelo è un periodo che sono pieno di lavoro. Nei prossimi giorni prometto di ritagliarmi del tempo per dargli un occhiata!

Scusa e porta pazienza
Titolo: Re:Tchart - Auto scale
Inserito da: xinyiman - Luglio 03, 2012, 08:27:51 am
Ciao Carmelo, allora questa mattina ho potuto fare delle prove. Anticipo subito che è la prima volta che gioco coi grafici di lazarus. In sostanza non sono riuscito a cavarne un ragno dal buco. Penso che conviene postare la problematica sul forum ufficiale con lo stesso esempio che hai postato qui. Di la esiste sicuramente un maggior numero di utenti e quindi è più facile che qualcuno ti sappia aiutare. Nel momento in cui trovi la risposta di la ti andrebbe di condividere con noi la soluzione?!

Grazie a presto
Titolo: Re:Tchart - Auto scale
Inserito da: Stilgar - Luglio 03, 2012, 10:23:25 am
Una curiosità... ma che cosa bisogna fare per scatenare il comportamento che vorresti?
Inserire dati a casaccio?
Facciamo un piano di test ;) Così possiamo orientarci un pochino tutti.
Cosa dobbiamo dare in pasto la programma e cosa dovrebbe uscire (comportamento grafico e simili) ;)

Titolo: Re:Tchart - Auto scale
Inserito da: Stilgar - Luglio 03, 2012, 11:17:19 am
Tanto per iniziare a dare qualche indizio;)

1)
Codice: [Seleziona]
Chart1.Extent.YMax := lser.GetYMax;              
Prova questo pezzetto di codice quando ricalcoli le serie...
 2)
Ripristina FALSE nelle properties di EChart1.Extent
Se non vuoi gestirlo tu a mano.