Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 03-04-2019
MartinHV MartinHV is offline
Registrado
 
Registrado: jun 2016
Posts: 6
Poder: 0
MartinHV Va por buen camino
Cita:
Empezado por el-mono Ver Mensaje
La solucion profesional y mas adecuada para estos casos es implementar Hilos. aunque no comentas como lo estas haciendo ni de que manera.
Gracias por contestar "el-mono", aquí una descripción del problema.

Realizo el proceso en un timer que se ejecuta cada Segundo.
Se carga una consulta con N Cantidad de registros, los cuales son
acomodados en los 30 ListBox ( cada ListBox esta contenido dentro de un Panel, tanto como los ListBox y los Panel forman
parte de un arreglo)
Al finalizar el acomodo, habilito el "EndUpdate de los listBox afectados."

Bosquejo del Código
Código:
procedure TFExpo.Timer1Timer(Sender: TObject);
var
Tiempo:Double;
begin
  try
    Timer1.Enabled:=False;
     //Query donde se obtienen los registro para llenar los ListBox
    qExpo.Close;
    qExpo.Params.ParamByName('FECHA').AsInteger:=gFecha;
    qExpo.Params.ParamByName('IDLOCAL').AsInteger:=gIdlocal;
    qExpo.Params.ParamByName('IDEXPO').AsInteger:=1;
    qExpo.Open();

    Gen.LockControl(Self,True);
    Gen.BeginUpdate;
    while not qExpo.Eof do
    begin
       //Código donde se llenan los ListBox
	end;
   
  finally
    Gen.EndUpdate;
    Gen.LockControl(Self,False);
    Timer1.Enabled:=True;
  end;
 end;
//Clase donde se anexan rutinas
procedure TGenerico.LockControl(c: TWinControl; lock: boolean);
begin
  if (c=nil) or (c.Handle=0) then exit;
  if lock then
    SendMessage(c.Handle,WM_SETREDRAW,0,0)
  else
  begin
    SendMessage(c.Handle,WM_SETREDRAW,1,0);
    RedrawWindow(c.Handle,nil,0,RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
  end;
end;

procedure TGenerico.EndUpdate;
var M:Integer;
begin
  for M := 1 to Limite-1 do
  begin
     LOrdenes[M].Items.EndUpdate;
     LockControl(aPanel[M],False);
  end;
end;

procedure TGenerico.BeginUpdate;
var M:Integer;
begin
  for M := 1 to Limite-1 do
  begin
    LockControl(LOrdenes[M],True);
    LockControl(aPanel[M],True);
    LOrdenes[M].Items.BeginUpdate;
  end;
end;
Responder Con Cita
 


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
llenado de formularios automaticamente ebanibaldo PHP 1 12-04-2013 17:07:04
Llenado de reporte en pdf axel77t Impresión 8 04-04-2011 08:08:02
Problema con el llenado de un dbgrid XaSu Varios 9 11-01-2008 22:02:41
dbgrid llenado de datos emenchi34 Conexión con bases de datos 14 16-11-2006 11:34:44
Llenado de formulario rastafarey Varios 4 12-03-2005 01:46:47


La franja horaria es GMT +2. Ahora son las 11:25:22.


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