Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Evitar que se "repinte" un componente

Mi Pregunta es si es posible evitar que un elemento "refresque" su imagen (Supongo que sera evitar que se ejecute el evento Paint)
Por ejemplo creo que al salir del evento KeyDown se repinta la Imagen del componente y me gustaria evitarlo.

Gracias.
Responder Con Cita
  #2  
Antiguo 13-11-2008
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: 18.285
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
Puedes derivar el componente y sobreescribir el método Paint o capturar el mensaje WMPaint; En ambos casos si eliminas el inherited, posiblemente evites el repintado, aunque no se si los resultados van a ser los deseados.

¿Puedes explicar exactamente para qué necesitas esto?
__________________
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
  #3  
Antiguo 13-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
En primer lugar gracias por contestarme..

Respecto a tu respuesta hay conceptos que aun no conozco como el inherited.

Te explico lo que pretendo:

Tengo un ListBox en el que hay una serie de componentes que pueden estar ya elegidos (incluidos en un Stringlist) , el caso es que los Elementos ya elegidos se muestran en el listbox de diferente color a los no elegidos.Los elementos estan ordenados alfabeticamente.
Supongamos que pulsamos la tecla c (Cuando el foco lo tiene el ListBox) , el foco lo tendra que recibir el primer item del ListBox que empieze por la tecla c Y NO ESTE AUN SELECCIONADO.
Para ello capturo en el evento KeyDow del Listbox la tecla pulsada, realizo las operaciones necesaria para saber cual es el item que debe tener el foco y lo selecciono

Código Delphi [-]ListHistEquip->ItemIndex = Posicion;

Hasta Aqui to correcto el problema es que al salir del evento KeyDow el ListBox se repinta y el elemento que recibe el foco es siempre el primer item que comienze por C (este elegido o no).

Nota:una solucion seria realizar las operaciones para seleccionar el item en el evento KeyUp, pero el resultado no me convence por que en primer lugar recibe el foco el primer item que comienza por C (Evento KeyDow) y despues salta al item correcto (KeyUp) pero visualmente parece una chapuza.

Gracias
Responder Con Cita
  #4  
Antiguo 13-11-2008
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: 18.285
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
En ese caso te puedo decir (asegurar) que lo que capturar/anular el repintado no te va a servir.
__________________
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
  #5  
Antiguo 13-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Alguna idea???
Responder Con Cita
  #6  
Antiguo 13-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Por si sive de ayuda el evento que no quieroque se realize es el
DrawItem
Responder Con Cita
  #7  
Antiguo 13-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿ y si pones todo el código en el KeyUp?

dejando vacío el Keydown.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 13-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Lepe parece una respuesta totalmente logica pero nada, hace exactamente lo mismo..

El problema radica en que en un ListBox con una lista de items si se pulsa una tecla el item seleccionado es el primero que comienza por esa tecla.

Mi problema es que no quiero que el listbox opere de esa manera si no ser yo el que manualmente seleccione el item..

Y veo la solucion imposible...

Gracias por contestarme.
Responder Con Cita
  #9  
Antiguo 13-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En el listbox:
- extendedselect := false;
- autocomplete := false
- multiselect a true

y en el evento onKeyPress:
Código Delphi [-]
procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
    if Key = 'a' then
  begin
    ListBox1.itemindex := 3;
    ListBox1.Selected[3] := True;
    Key := #0;
  end;
end;
los items que tengo en la lista son:
Código:
aaaas
aaas
aass
ass
bbb
cccc
El foco lo tiene el elemento 0 de la lista. Al pulsar la tecla 'a', se selecciona el 4º elemento, cuando en realidad, no se debería mover del primero según tus pruebas.

¿es eso lo que deseas?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 14-11-2008 a las 00:04:20.
Responder Con Cita
  #10  
Antiguo 14-11-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
!!! Perfecto !!!

Muchas Gracias.
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
Como evitar que mis aplicaciones se "cuelguen" Gaim2205 Varios 6 21-05-2008 16:21:30
Al evitar que cierren Windows, me sale la ventana de error "Finalizar Tarea" :( Wonni API de Windows 1 20-08-2007 16:02:21
Evitar el "Refresh" del ClientDataSet leanfreue SQL 2 14-04-2007 23:41:38
Cinco normas para evitar el "phishing" marcoszorrilla Noticias 56 02-05-2006 21:07:55
Evitar navegar desde barra "Dirección" de MI PC Luis F. Orjuela API de Windows 1 10-02-2006 19:56:16


La franja horaria es GMT +2. Ahora son las 15:44:58.


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