Cambiar color de los DBEdit al entrar en ellos
Buenos días,
con ánimo de mejorar el aspecto de un formulario que tiene muchos campos me gustaría que al entrar en los DBEdit en modo edición cambiara el color de fondo para que el usuario sepa donde está el foco en ese momento. Entiendo que con los eventos OnEnter y OnExit podría controlarlo de manera individual pero en este caso hay bastantes y me preguntaba si existe una forma más sencilla de hacerlo de manera general para todos los DBEdit sin tener que ir de uno en uno. Muchas Gracias |
Hola.
A mi se me ocurren dos opciones. La primera es que crees un componente nuevo heredado del DBEdit y que lo personalices a tu gusto, esa es la opción más "elegante" pero también la más complicada. Otra es que pongas el código que quieras en el OnEnter y OnExit de uno de ellos y que los demás DbEdits apunten al OnEnter y OnExit que hayas creado para el primero para no poner en cada uno de los demás el mismo código. Saludos |
Cita:
Para ello tendrás que utilizar RTTI. Como han dicho, esta segunda solución no es la más elegante, pero haciendolo así no sólo tendrás que añadir una línea a tus formualrios para que funcione. |
Muchas gracias a los dos por vuestra ayuda.
Creo que voy a optar por la vía simple, la de asignar al evento OnEnter y OnExit lo correspondiente. Lo demás suena bien pero creo que no está a mi alcance:( Estoy haciendo pruebas para ver qué color encajaría mejor y me da la sensación que estoy pasando algo básico por alto, no soy capaz de hacer que el fondo cambie de color nunca. Este es el código que estoy probando:
Pero cuando entro en modo Edit en ese DBEdit ni se inmuta, el color sigue siendo el que viene por defecto. ¿Debo activar alguna propiedad o hacer algo especial a parte de insertar el código? |
Hola Delphitest.
Otra opción para detectar el cambio de foco, es usar el evento OnActiveControlChange : De este modo cambiará el color del control focalizado (siempre que poseea la propiedad Color) Saludos :) |
Disculparme por no haber vuelto a decir nada de este tema pero estoy probando con el código que proporciona ecfisa y no salgo de ahí, me da un error de "Access Violation..." y por muchas vueltas que le estoy dando no hay manera...
Lo que me preocupa es que ni siquiera soy capaz de cambiar el color en un DBEdit, no hace caso ni al cambio de propiedad directamente desde el objeto ni si lo meto en el código en el evento OnEnter, algo debo estar pasando por alto |
1 Archivos Adjunto(s)
Hola Delphitest.
Lamento la demora en la respuesta, pero he estado afuera unos días. No sé que pueda estar sucediendo ya que no puedo ver tu código, pero te adjunto los fuentes de uno funcional para que lo revises con tranquilidad. Realizado en Delphi 7, S.O. Windows 7 (32bit) Saludos :) |
Muchas gracias ecfisa,
con tu ejemplo he conseguido adaptarlo a mi código y funciona como quería Buen fin de semana y gracias de nuevo |
La franja horaria es GMT +2. Ahora son las 08:34:25. |
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