Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2006
Rogersito Plus Rogersito Plus is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
Rogersito Plus Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 01-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 04-09-2006
Rogersito Plus Rogersito Plus is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
Rogersito Plus Va por buen camino
Ok...

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

Saludos...
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
Validar un Dbedit? kman Varios 10 13-03-2007 04:07:11
Dbedit linnk Tablas planas 6 27-06-2006 21:47:51
DBEdit con SQL Juanito-Kun SQL 6 24-04-2005 15:19:01
Componente DBEdit con formato k2k2k2 Varios 2 16-05-2004 22:03:16
Componente derivado de DBEdit que active un hint con un dato específico HombreSigma OOP 4 15-07-2003 11:42:07


La franja horaria es GMT +2. Ahora son las 13:45:06.


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