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 22-06-2004
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 238
Poder: 24
ebeltete Va por buen camino
El codigo es algo como esto:

private
{ Private declarations }
UnColor:TColor;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataCol=0 then
if Table1Size.AsInteger>10
then UnColor:=clRed
else UnColor:=clBlack;

with (Sender As TDBGrid).Canvas do
begin
Font.Color:=UnColor;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
end;
end;
Responder Con Cita
  #2  
Antiguo 22-06-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 24
andres1569 Va por buen camino
Hola:

En el código que mencionas, resulta evidente que no puede haber una pérdida de memoria/recursos. Mira si utilizas componentes de terceros que pudieran causar dicho consumo exagerado y ten en cuenta que no tiene por qué haber un fallo de programación (el no liberar los recursos u objetos que los consuman) para que los recursos caigan tan bajo, eso sería si al cerrar la aplicación no se restituyeran, simplemente si tu aplicación hace un uso intensivo de los mismos, ya puede ser causa de el error que te sucede.

La filosofía del programa también influye, no es lo mismo que muestres formularios bajo demanda y los destruyas cuando ya no hacen falta, que por ejemplo muestres un form principal con tropecientos controles, por ejemplo divididos en un TabbedBook. Mira también de utilizar TImagesList para concentrar las imágenes en un sólo sitio, en vez de asignar Glyphs a diestro y siniestro (cada uno es un Bitmap diferente) si te es posible.

Bueno, son algunas ideas ...

Saludos
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 16-06-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 238
Poder: 24
ebeltete Va por buen camino
Sigo en esto , encontre un comentario en otro foro (http://www.softwaremix.net/viewtopic-394770.html) que habla de este tema, veo que estoy mal al autocrear los form de mi aplicacion, pense que delphi solucionaba esto, pero no basta con mostrarlos (form1.show) sino que me conviene crearlos y en el evento onclose destruirlo, esa puede ser un solucion?
Salu2
Responder Con Cita
  #4  
Antiguo 17-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Oooorale! Revives este hilo cada año

Y ¿no será culpa del Kazaa?

// Saludos
Responder Con Cita
  #5  
Antiguo 17-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Oye, leyendo el enlace que pusiste me surge la pregunta: ¿El error te aparece apenas corres la aplicación o es como describen ahí, que ocurre después de un rato de estar usándola? Porque de ser así, muy probablemente se trate de una fuga de memoria, objetos que no se destruyen correctamente dejando pedazos de memoria inutilizables. Para estas cosas a mi me ha servido mucho programas como MemProof que lo corres junto a tu aplicación y te dice en qué partes hay recursos que no se liberan.

// Saludos
Responder Con Cita
  #6  
Antiguo 17-06-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 238
Poder: 24
ebeltete Va por buen camino
Gracias Roman, el error no me aparece siempre, pero cuando lo hace es al abrir mi aplicacion, y cuando tengo muchos programas abiertos, creo sea porque las ventanas se crean al iniciar la aplicacion, ahora estoy probando en crear los forms a medida que los voy utilizando, pero se me ha complicado porque tenia referencias de unos forms a otros, tambien voy a probar con memproof, gracias y seguire investigando.
Responder Con Cita
  #7  
Antiguo 19-06-2005
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 22
<Sergio> Va por buen camino
Cita:
Empezado por roman
Oooorale! Revives este hilo cada año

Y ¿no será culpa del Kazaa?

// Saludos
Pues yo creo que si. A mi también me dio problemas. (Otro "tragón" de recursos es el messenger.)

Bueno, buscando en los enlaces posteados, di con:

Código Delphi [-]
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);

( Codigo que sirve para ceder cordialmente la RAM que no estás utilizando (lo que no hace el Kazaa) y cambiarla por virtual )

Si buscan en la ayuda:

SetProcessWorkingSetSize();

Verán que utilizar este comando en forma grosera es la causa que una aplicación luego no tenga suficiente espacio para trabajar y seguramente que asi lo hacen programas como el Kazaa.

También puede ayudar utilizar "Tbitmap.Dormant" para usar memoria del sistema en lugar de recursos de GDI y también indicar que queremos el bitmap como "device independer bitmap" "HandleType:=bmDIB".

P.D.

Uso el emule.

Última edición por <Sergio> fecha: 19-06-2005 a las 22:53:00.
Responder Con Cita
  #8  
Antiguo 20-06-2005
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 238
Poder: 24
ebeltete Va por buen camino
como es la historia de imagelist?
Mi aplicacion no tiene muchas imagenes, solo algunos timage y algunos tspeedbuttons con sus glyph, es lo mismo asignarle los bitmap directamente en la propiedad glyph de los speedbutons y en la propiedad picture del timage , o es mejor poner todos los bitmap en un imagelist y "sacarlos" del imagelist para ponerlos en los speedbuttons? si es asi como se hace, no lo tengo muy claro, gracias.
Responder Con Cita
  #9  
Antiguo 21-06-2005
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 22
<Sergio> Va por buen camino
El Timagelist utilizalo si tienes imágenes repetidas en tus botones. Ej 10 ventanas todas con 2 botones con los mismos gráficos, en cada ventana. Con esto se reducen los "handles" necesarios en el ejemplo de 20 a 2.

Una pregunta

¿Cuanto ocupa tu .exe? (Como esos bitmaps son incluidos dentro del .exe es para tener una idea de cuanto espacio están ocupando tus bitmaps)
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


La franja horaria es GMT +2. Ahora son las 12:24:48.


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