Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2011
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Hay alternativa a DoubleBuffered?

Hola amigos, he utilizado bastante DoubleBuffered en mis apps debido a que utilizo imágenes que se cargan o cambian en tiempo de ejecución.

El parpadeo desaparece o por lo menos es mucho menor, pero la interfaz cambia mucho, los panels pasan a blanco y no toman el color del form, los botones tienen un borde no muy estetico, fallan los labels que muestran distinta informacion segun las variables del momento etc etc.

Si no lo uso, tengo el parpadeo

Bien y entonces ?

Hay alguna alternativa? o es eso o nada? (Uso Delphi 7 y Win7)

Un abrazo.

Javier
Responder Con Cita
  #2  
Antiguo 05-08-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Solo úsala en los componentes donde en realidad se necesite evitar el parpadeo. La mayoría de los controles funcionan de forma correcta con DoubleBuffered desactivado.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 05-08-2011
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Pero no se usarlo por componente

Podrias ayudarme?

En el form lo activo desde el Create.

Pero en un TIMage no me aparece como una opcion o propiedad.

Gracias

Javier
Responder Con Cita
  #4  
Antiguo 05-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Panasys.

Algo que te va a aligerar la carga de imágenes desde disco (LoadFromFile) es hacer una carga previa en un TList de las imágenes que vayas a utilizar.

Te hice un ejemplo general, pero lo podés modificar sin mucho problema para adaptarlo a tu necesidad.
Código Delphi [-]
...
uses Jpeg;

procedure CargarImagenes(Ruta, Ext: string; Lst: TList; SLst: TStrings);
var
  P: TPicture;
  B: TBitMap;
  SR: TSearchRec;
begin
  Lst.Clear;
  P:= TPicture.Create;
  try
    Ruta:= IncludeTrailingPathDelimiter(Ruta);
    if FindFirst(Ruta+Ext, faArchive, SR) = 0 then
    begin
      repeat
        P.LoadFromFile(Ruta+SR.Name);
        B:= TBitMap.Create;
        B.Height:= P.Graphic.Height;
        B.Width := P.Graphic.Width;
        B.Canvas.Draw(0,0,P.Graphic);
        Lst.Add(B);
        SLst.Add(SR.Name);
      until FindNext(SR) <> 0;
      FindClose(SR);
    end;
  finally
    P.Free;
  end;
end;

Un ejemplo de llamada:
Código Delphi [-]
procedure TForm1.btnCargarClick(Sender: TObject);
var
  i: Integer;
  LstImg: TList;
  TS: TStrings;
begin
  LstImg:= TList.Create;
  TS:= TStringList.Create;
  try
    CargarImagenes('C:\TEMP', '*.JPG', LstImg, TS);
    for i:= 0 to LstImg.Count -1 do
    begin
      Image1.Picture.Bitmap:= LstImg[i];
      ShowMessage(TS[i]);
    end;
  finally
    LstImg.Free;
    TS.Free;
  end;
end;
Claro que en el momento de la carga se produce una demora, pero es una sola vez, además si hay que mostrar otra vez una imágen,
no hay que ir al disco a buscarla...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-08-2011 a las 23:38:11. Razón: Agregar dato
Responder Con Cita
  #5  
Antiguo 06-08-2011
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Me parece una excelente idea y el codigo buenisimo, lo voy a probar, esto funcionaria para PNG?

Ya tengo el componente PNG en mi D7 instalado, ya que creo iconos que el usuario cambia en una pantalla y tienen transparencias.

Despues estas imagenes tendran las propiedades Drag and Drop para que el usuario las acomode donde le queden bien.

Lo voy a probar y mil gracias. Igual sigo sin saber como usar DoubleBuffered en cada componente sin agregarlo directamente al form.

Sera que no lo trae el D7?

Un abrazo y gracias como siempre.

Javier
Responder Con Cita
  #6  
Antiguo 06-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Panasys.

Cita:
Ya tengo el componente PNG en mi D7 instalado, ya que creo iconos que el usuario cambia en una pantalla y tienen transparencias.
Realmente no lo sé, también uso D7 pero no tengo ese componente , vas a tener que probar...

Cita:
Igual sigo sin saber como usar DoubleBuffered en cada componente sin agregarlo directamente al form.
Si al inicio del form haces:
Código Delphi [-]
begin
  DoubleBuffered:= True
end;
La propiedad será aplicada a todos los componentes que desciendan de TWinControl y pertezcan a dicho form, es decir que si no lo hacés el valor por defecto será False. Luego podrás poner la propiedad DoubleBuffered en True en cada componente, siempre que descienda de la clase TWinControl por supuesto.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 06-08-2011
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Gracias !

Mas claro imposible !

Ahora me pondre a trabajar.

El componente es el MPNG, lo unico que hace es que el TImage te acepte PNG.

No te agrega nada a la paleta, anda bien.

Saludos y gracias nuevamente.

Javier
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
Uso de DBE Alternativa? thelibmx Varios 3 08-10-2010 20:28:06
cuando usar la opcion DoubleBuffered que veo en muchos componentes? cocute Varios 3 15-12-2009 17:49:42
Alternativa SQL*Plus Alfonsoft Oracle 4 07-10-2007 17:31:14
Alternativa a DbGrid JULIOCTORRESG Varios 2 12-03-2007 15:24:47
DoubleBuffered modulay Gráficos 1 09-02-2006 11:20:59


La franja horaria es GMT +2. Ahora son las 18: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