Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2014
lpedrazzi lpedrazzi is offline
Miembro
 
Registrado: sep 2005
Posts: 33
Poder: 0
lpedrazzi Va por buen camino
Tchart Valores String en los ejes X o Y

Buenos dias estimados, estoy realizando un simple grafico de barras con los resultados de una query, el problema que se me presenta es que no se como puedo poner valores tipo string en el eje "y" por ejemplo los nombres de los meses, ya que la funcion AddXY solo me toma valores de tipo double o integer, desde ya agradezco cualquier orientacion que me puedan brindar, saludos cordiales.-
Código Delphi [-]
  for x:=0 to chart1.SeriesCount-1 do Chart1.Series[x].Clear;
  i:=0;
  while not Query1.Eof  do begin
  inc(i);
    With Chart1.Series[0] Do Begin
      AddXY(i, Query1.FieldByName('cantidad').AsInteger, '', clTeeColor);
    End;
    With Chart1.Series[1] Do Begin
      AddXY(i, Query1.FieldByName('cantidad').AsInteger, '', clTeeColor);
    End;

    Query1.Next;
  end;

Última edición por nlsgarcia fecha: 08-12-2014 a las 20:11:43. Razón: Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 15-12-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
lpedrazzi,

Cita:
Empezado por lpedrazzi
...estoy realizando un simple gráfico de barras con los resultados de una query, el problema que se me presenta es que no se como puedo poner valores tipo string en el eje "y" por ejemplo los nombres de los meses...
Los valores tipo String solo se pueden colocar en el eje X, el eje Y requiere de valores numéricos para poder graficar

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, TeeProcs, TeEngine, Chart, DB, DBClient,
  Series;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Series1: TBarSeries;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  GColor : Array[1..12] of TColor = (clGreen, clOlive, clNavy, clPurple, clTeal,
                                     clGray, clSilver, clRed, clLime, clYellow,
                                     clBlue, clFuchsia);

var
  Form1: TForm1;
  Table : TClientDataset;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Randomize;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i : Integer;

begin

   if Assigned(Table) then FreeAndNil(Table);

   Table := TClientDataset.Create(Application);
   Table.FieldDefs.Add('CodProd', ftString, 10, False);
   Table.FieldDefs.Add('Cantidad', ftInteger,0, False);
   Table.FieldDefs.Add('Date', ftDate, 0, False);
   Table.FieldDefs.Add('Status', ftBoolean, 0, False);
   Table.CreateDataset;
   Table.Open;

   for i := 1 to 12 do
   begin
      Table.Append;
      Table.FieldByName('CodProd').AsString := Format('PRD%.3d',[i]);
      Table.FieldByName('Cantidad').AsInteger := Random(1000);
      Table.FieldByName('Date').AsDateTime := Now;
      Table.FieldByName('Status').AsBoolean := True;
      Table.Post;
   end;

   Table.Close;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
   CodProd : String;
   Cantidad : Integer;
   i : Integer;

begin

   if Assigned(Table) then
   begin

      i := 1;

      with Chart1 do
      begin
         Title.Text.Clear;
         Title.Text.Add('Gráfico de Productos vs Cantidad');
         Legend.Visible := False;
         LeftAxis.Title.Caption := 'Cantidad';
         LeftAxis.Title.Font.Color := clBlue;
         BottomAxis.Title.Caption := 'Productos';
         BottomAxis.Title.Font.Color := clBlue;
      end;

      with Series1 do
      begin

         Clear;

         Marks.Style := smsPercent;

         with Table do
         begin
            Open;
            while not eof do
            begin
               CodProd := Table.FieldByName('CodProd').AsString;
               Cantidad := Table.FieldByName('Cantidad').AsInteger;
               Add(Cantidad, CodProd, GColor[i]);
               inc(i);
               Next;
            end;
            Close;
         end;

      end;

   end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   FreeAndNil(Table);
   Action := caFree;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, crea una tabla en memoria y su gráfico de barras asociado, como se puede ver en la siguiente imagen:



Espero sea útil

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ordenar Campos String con valores koalasoft SQL 6 30-08-2013 18:56:13
Como se pasan los valores en un array de tipo string en c# uper .NET 1 13-06-2013 17:35:00
Pasar valores a variable String separados por coma Dclase SQL 7 04-11-2008 17:55:01
Tchart y cálculo de valores en coordenadas del ratón (mouse) fonx Gráficos 9 18-07-2008 00:26:27
comparar un string con un rango de valores locorez Varios 2 09-01-2006 15:54:43


La franja horaria es GMT +2. Ahora son las 08:52:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi