![]() |
nuevo componente dbedit y datetimepicker
Cordial Saludo,
Nunca he hecho un componente y quisiera, para empezar, hacer un componente que me permita mostrar una fecha, opcional con hora, que se guarde en la BD. Sé que existen varios componentes free, pero lo que quiero es entender cómo se hace. Agradezco de antemano cualquier colaboración. |
|
Bueno, empezar con un componente de Base de datos (sin haber hecho ningun otro antes) tal vez no sea la mejor manera de entrar en el tema, pero bueno...
Empieza por pensar, cual es el componente que te iría bien, para poder usar como "ancestro" del que vas a hacer. Piensa bien qué propiedades vas a necesitar en tu componente. A partir de ahí genera un componente "vacío", derivando simplemente y comienza a añadirle código, para obtener el comportamiento que necesitas. Es bueno, que tal vez sigas algún manual de los existentes por internet (revisa el FTP del club, porque creo recordar que hay alguno también). Sobre todo si no estás familiarizado con el tema de mensajes y con los diferentes ámbistos de propiedades/métodos y la sintaxis de estos (override, published, protected, private,...). |
Para iniciarse, aqui hay dos buenos tutoriales:
Curso de creación de componentes, de Luis Roche - En castellano Introduction to component building, de Ray Konopka - En perfecto inglés El problema es que son un poco antiguos, pero para aprendizaje de la base, estan bastante bien. Un saludo |
Cordial Saludo,
De pronto tienen mucha razón en que debo iniciar con algo más sencillo, pero... me gustan los retos (aunque me estrelle en el intento). :D Estoy revisando todos los enlaces que me enviaron para aprender e intentar desarrollarlo. Cualquier cosita que logre sacar, la comparto con los amigos del foro. ^\||/ Muchísimas gracias. |
Cordial Saludo,
Como mencioné anteriormente... me estrellé, pero así voy aprendiendo. Ya he avanzado un poco en el componente, pero intento agregarle un tdbedit y no he podido... "Error catastrófico". La idea es que el componente se base en un TDateTimePicker y que tenga dentro de sus propiedades un TDBEdit. Le agrego al nuevo componente dos pripiedades: DataField y DataSource, las cuales se asignan a las mismas del TDBEdit y hago que cuando cambie la propiedad Date de mi nuevo componente, se la asigne a la propiedad Text del TDBEdit, lo que no sé cómo hacer es cuando el dato cambie al cambiar de registro, se actualice la propiedad date de mi componente. Alguien me puede decir qué puedo estar haciendo mal? Código:
unit DBDateTimePicker; |
Cita:
Según lo que comentas, quieres hacer un componente que haga lo siguiente: "...hacer un componente que me permita mostrar una fecha, opcional con hora, que se guarde en la BD". Eso es casi exactamente lo que hace un DBdateTimePicker, salvo que este muestra o la fecha o la hora, pero no ambas (imagino que ahí está el problema). ¿Es por esto último que quieres crear un componente nuevo? ¿Porqué quieres añadir un DBEdit dentro del DBDateTimePicker? ¿Porqué no intentas variar el componente TDBDateTimePicker para que haga lo que necesitas? |
Cordial Saludo,
Como tú dices: "Eso es casi exactamente lo que hace un DBdateTimePicker, salvo que este muestra o la fecha o la hora, pero no ambas (imagino que ahí está el problema)." Ese es el detalle. "¿Porqué no intentas variar el componente TDBDateTimePicker para que haga lo que necesitas?" No tengo idea de cómo hacerlo. (De pronto colocando objetos datasource y datafield?) Algún consejo? |
Si ya tienes un componente que muestra la fecha o la hora, es bastante probable que derivando del componente y "modificando" el comportamiento puedas conseguir que pinte fecha y hora, si es lo que necesitas.
Si te fijas en la propiedad Kind que "manda lo que se pinta" en el componente, verás que esta se encuentra directamente en TDateTimePicker. Si miras el código verás esto:
Por lo tanto si vas al código del procedimiento de la clase TDateTimePicker, que se encarga de la creación, verás que ahí está lo necesario para que se "pinte" una cosa u otra.
Ese procedimiento tiene un override, por lo tanto puedes sobreescribirlo en tu componente y decidir qué se debe pintar y en qué formato. |
Cordial Saludo,
Muchas Gracias, revisando y aprendiendo... :) |
Cita:
// Saludos |
|
| La franja horaria es GMT +2. Ahora son las 11:24:33. |
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