Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2012
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
Vaya Neftali te me has adelantado

Muchas gracias por la respuesta.

Es muy similar lo que prentedo realizar a las imagenes que tu pones. Mirare este componente que comentas parece bastante potente. es freeware verdad?
__________________
Saludos,

Bitman
Responder Con Cita
  #2  
Antiguo 16-05-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Deberías mirar antes que nada si el problema está en crear los paneles o en calcular la gráfica que va dentro del panel.
Haz la prueba de comentar la operación que haces con el DataSet y mira cuanto tarda.
Responder Con Cita
  #3  
Antiguo 17-05-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Toni Ver Mensaje
Es muy similar lo que prentedo realizar a las imagenes que tu pones. Mirare este componente que comentas parece bastante potente. es freeware verdad?
El componente es gratuíto, con código fuente y realmente muy bueno.
Todos los demás detalles en DelphiArea.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 21-05-2012
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
duilioisola:

No hay ningun tiempo de calculo, es solo en crear los miles de objectos en los que tarda en crearlo. La grafica en si son los tpanel de tamaño muy pequeño. algo parecido a la imagen que puso Neftali. Gracias igualmente.

Neftali:

Muchas gracias por la respuesta. Tengo que probar a deribar mi clase de la TSimpleGraph.

Saludos,
__________________
Saludos,

Bitman
Responder Con Cita
  #5  
Antiguo 21-05-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
He hecho una pequeña prueba:
  • He puesto un panel y dentro de ese panel creo 2000 paneles pequeños de 9x9.
  • Esto tarda unos 20 segundos.
Luego he hecho otra prueba:
  • He puesto invisible el panel, he creado los 2000 paneles de 9x9 y lo he vuelto a hacer visible.
  • Ha tardado solo 2 o 3 segundos.
Quizás esta pseudosolución pueda ayudarte para que no tengas que rehacer tu clase.
Luego con más tiempo podrás buscar una mejor solución.
Responder Con Cita
  #6  
Antiguo 24-05-2012
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 24
Toni Va por buen camino
duilioisola:

Muchas gracias por tu aporte, si con esto lo soluciono me iria perfecto ya que no tengo el tiempo para dedicarle a reestructurarlo. Aunque creo recordar que esto ya lo hacia lo de poner en invible el TGroupBox sobre el que creaba los TPanel y una vez creados lo ponia visible. Voy a revisarlo!! Gracias de nuevo!
__________________
Saludos,

Bitman
Responder Con Cita
  #7  
Antiguo 24-05-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
He limpiado la prueba que hice y te la envío para que puedas hacer tus pruebas.
Con 2000 paneles tarda unos 3 segundos.
Con 5000 paneles tarda unos 8 segundos.

Código Delphi [-]
unit UPruebaPanel;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls;

type
   TForm1 = class(TForm)
      PNLMain: TPanel;
      PNLContenedor: TPanel;
      BCrear: TButton;
      BLiberar: TButton;
      EColumnas: TEdit;
      ELineas: TEdit;
      LCantidad: TLabel;
      procedure EColumnasChange(Sender: TObject);
      procedure BCrearClick(Sender: TObject);
      procedure BLiberarClick(Sender: TObject);
   private
      { Private declarations }
   public
      { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BCrearClick(Sender: TObject);
var
   c, l: integer;
   maxc, maxl: integer;
   p: TPanel;
begin
   maxc := StrToIntDef(EColumnas.Text, 0);
   maxl := StrToIntDef(ELineas.Text, 0);

   // Agrando el Form para que entren todos los Paneles
   Self.Width := maxc * 9 + 20;
   Self.Height := PNLMain.Height + maxl * 9 + 50;

   // Escondo el panel contenedor para acelerar el proceso
   PNLContenedor.Visible := False;

   c := 0;
   while (c < maxc) do
   begin
      l := 0;
      while (l < maxl) do
      begin
         p := TPanel.Create(PNLContenedor);
         with p do
         begin
            Name := Format('Panel_%d_%d', [c, l]);
            Parent := PNLContenedor;
            BevelInner := bvNone;
            BevelOuter := bvNone;
            Caption := '';
            Top := l * 9;
            Left := c * 9;
            Height := 9;
            Width := 9;
            // Algo para diferenciar un panel de otro
            Color := ((c + l) * $0F0F);
         end;
         LCantidad.Caption := IntToStr(maxl * c + l);
         inc(l);
      end;
      inc(c);

      // Solo refresco la pantalla por cada columna
      Application.ProcessMessages;
   end;

   // Muestro el panel contenedor
   PNLContenedor.Visible := True;
end;

procedure TForm1.BLiberarClick(Sender: TObject);
var
   i: integer;
begin
   // Escondo el panel contenedor para acelerar el proceso
   PNLContenedor.Visible := False;

   for i := PNLContenedor.ComponentCount - 1 downto 0 do
      if (PNLContenedor.Components[i] is TPanel) then
         TPanel(PNLContenedor.Components[i]).Free;

   // Muestro el panel contenedor
   PNLContenedor.Visible := True;
end;

procedure TForm1.EColumnasChange(Sender: TObject);
begin
   LCantidad.Caption := IntToStr(StrToIntDef(EColumnas.Text, 0) * StrToIntDef(ELineas.Text, 0));
end;

end.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Crear instancias de objetos creados con TPanel Kandorf OOP 8 02-03-2010 08:43:56
LLamar procedimiento de creación de Objetos. Robin1 Varios 3 30-11-2009 14:04:54
creacion objetos MOCOSO07 Varios 4 04-04-2008 22:35:04
Optimizar velocidad delphi con access diego torres Conexión con bases de datos 2 10-10-2005 16:13:00
optimizar velocidad de SQL's wonder boy Conexión con bases de datos 0 13-09-2005 16:09:36


La franja horaria es GMT +2. Ahora son las 01:37:35.


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