Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #10  
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
 



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 00:50:19.


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