Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Componente DBEdit (https://www.clubdelphi.com/foros/showthread.php?t=35122)

Rogersito Plus 01-09-2006 04:38:54

Componente DBEdit
 
Estimados Foristas... gracias por sus Ayudas, siempre son muy buenas;
Mi inconformidad con DBEDIT; porque?... bueno soy novato;
Mi consulta: Como hago para crear un componente a partir de DBEdit que me permita pasar automaticamente al siguiente control una vez ingresado la cantidad de caracteres definidos en MaxLength?

roman 01-09-2006 05:36:16

Yo empezaría preguntándome cómo hacerlo primero sin crear nuevas componentes. Sólo veo un punto adecuado, el evento OnChange del DBEdit. Ahí comparas la longitud del contenido del control con la de su propiedad MaxLength. Si coinciden, pasas el foco al siguiente control. ¿Cómo haces esto? Con el método SelectNext del formulario donde esté el DBEdit.

Una vez que tienes claro esto puedes comenzar a pasarlo a una nueva componente. El primer punto a notar es que en una gran cantidad de casos, los eventos corresponden a métodos protegidos que son los que lanzan el evento y normalmente lo que se hace entonces es redefinir el método en la nueva componente. En este caso el DBEdit tiene el método Change. Lo usual es que el método redefinido comience llamando al ancestro con inherited y después haga lo que tenga que hacer. Esto último ya lo sabes: comparar longitudes y pasar en dado caso el foco al siguiente control del formulario.

Cuando trabajas con el evento OnChange sabes de qué formulario se trata pero en el caso de una componente no sabes de antemano en qué formulario se va a poner. Pero la VCL dispone de la función GetParentForm que te dice precisamente en qué formulario está un control.

La componente yo la completaría con una propiedad booleana, digamos AutoNext que permita especificar si queremos que el DBEdt se comporte así (paso en automático al siguiente control) o no. Tu método Change simplemente tiene que verificar el valor de esa propiedad.

// Saludos

Rogersito Plus 04-09-2006 21:08:36

Ok...
 
Gracias ROMAN... por la ayuda con el metodo SelectNext en el evento CHANGE funciona...

Saludos...


La franja horaria es GMT +2. Ahora son las 17:25:45.

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