Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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
  #2  
Antiguo 09-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 24
andres1569 Va por buen camino
Hola:

En tu nuevo componente deberías interceptar cuándo se han añadido, borrado o cambiado elementos de la propiedad Items. Es preferible que esto lo controle el componente, y no hacerlo "manualmente" desde tu programa, llamando a Repaint (este método no es el mejor para esto, puesto que se llama cada vez que se redibuja el control, aunque no esté desplegado).

Puesto que estás de practicas no te voy a ofrecer una solución completa, sólo algunas pistas. La propiedad Items de un Combo es del tipo TComboBoxStrings (todo esto lo puedes ver en la VCL). Cuando se inserta, elimina o cambia un Item, Items envía mensajes del tipo CB_ADDSTRING, CB_DELETESTRING ... etc al ComboBox asociado. Si el ComboBox intercepta estos mensajes, puedes poner a TRUE una variable booleana, llamémosla FItemsChanged, que indique que ha algo cambiado. Luego sobrescribes el método DropDown y ahí recalculas todo si ha habido cambios.

Otra cosa, he visto el codigo del componente. En el método Set de la propiedad Autowidth podrías comprobar en primer lugar que el valor pasado es diferente al valor de la propiedad, para evitar operaciones innecesarias.

Si finalmente lo implementas como he explicado arriba, podrías simplificar ese método Set de forma que pusiera la variable FItemsChanged a TRUE, sin recalcular el ancho de los Items. Esta operación sólo se realizaría en el DropDown, si hace falta.
__________________
Guía de Estilo
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


La franja horaria es GMT +2. Ahora son las 14:38:25.


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