Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Password en un TValueListEditor??? (https://www.clubdelphi.com/foros/showthread.php?t=86369)

ungrande87 27-07-2014 17:18:01

Password en un TValueListEditor???
 
Hola, les comento un poco lo que hace mi programa y lo que estoy intentando realizar:

Cargo datos desde una base de datos a un componente TValueListEditor y resulta que en uno de los datos que cargo es un Password, lo que quiero hacer es ese campo se vea todo con asteriscos (******) y que a la hora de modificar el campo, lo que ingrese también se vea con asteriscos y que luego guarde correctamente los datos. Al que me pueda brindar alguna ayuda o alguna orientación se le va a agradecer mucho.

Gracias

PD: Estoy trabajando en Delphi XE.

Neftali [Germán.Estévez] 28-07-2014 11:03:57

Cita:

Empezado por ungrande87 (Mensaje 479416)
* Cargo datos desde una base de datos a un componente TValueListEditor
* uno de los datos que cargo es un Password

=> lo que quiero hacer es ese campo se vea todo con asteriscos (******)
=> y que a la hora de modificar el campo, lo que ingrese también se vea con asteriscos
=> y que luego guarde correctamente los datos.

Entiendo que quieres que la celda del TValueListEditor se comporte como un Edit/DbEdit (que poseen la propiedad PasswordChar).

Tal vez la visualización se podría corregir con el evento OnDrawcell, pero creo que el tema de la edición te va a dar muchos problemas. El intentar realizar sobre el mismo grid (TValueListEditor) creo que te va a dar bastante trabajo.

Pregunta: ¿Seria mucho inconveniente, por ejemplo, que al editar el password pudieras hacerlo en otra ventana? A veces un cambio de enfoque resuelve muchas cosas.
Estoy pensando en una ventana modal, que te preguntara sólo el password. En esa ventana podrías usar TEdit/TDBEdit normales con lo que tendrías el problema solucionado. En ese caso matas 2 pájaros de un tiro, porque podrías usar 2 componentes en lugar de uno, para preguntar el password por duplicado, cosa que se suele hacer cuando el usuario no ve lo que escribe (luego tú comparas ambos valores por si se ha equivocado).

ungrande87 28-07-2014 21:07:18

Cita:

Empezado por Neftali (Mensaje 479427)
Entiendo que quieres que la celda del TValueListEditor se comporte como un Edit/DbEdit (que poseen la propiedad PasswordChar).

Tal vez la visualización se podría corregir con el evento OnDrawcell, pero creo que el tema de la edición te va a dar muchos problemas. El intentar realizar sobre el mismo grid (TValueListEditor) creo que te va a dar bastante trabajo.

Pregunta: ¿Seria mucho inconveniente, por ejemplo, que al editar el password pudieras hacerlo en otra ventana? A veces un cambio de enfoque resuelve muchas cosas.
Estoy pensando en una ventana modal, que te preguntara sólo el password. En esa ventana podrías usar TEdit/TDBEdit normales con lo que tendrías el problema solucionado. En ese caso matas 2 pájaros de un tiro, porque podrías usar 2 componentes en lugar de uno, para preguntar el password por duplicado, cosa que se suele hacer cuando el usuario no ve lo que escribe (luego tú comparas ambos valores por si se ha equivocado).

Entonces a renegar un poco. Porque la idea es usar solo el Tvaluelisteditor. Gracias de todas formas Neftali

Neftali [Germán.Estévez] 29-07-2014 10:24:24

Cita:

Empezado por ungrande87 (Mensaje 479463)
Entonces a renegar un poco. Porque la idea es usar solo el Tvaluelisteditor.

No digo que no se pueda hacer; Si es condición indispensable pues puedes hacer algunas pruebas, pero que te va a dar trabajo.
Tal vez podrías usar un segundo componente TEdit e incrustarlo en la celda del ValueListEditor... Tal vez capturar las teclas y quedártelas mientras picas * (pero eso te dará otras complicaciones -borrado, backspace, pegar,...)

Como ves la cosa no es trivial... Habría que ir probando alternativas.

roman 29-07-2014 17:52:53

El TValueListEditor utiliza un derivado de TEdit interno, al igual que un Grid. Podrías crear una clase derivada de TValueListEditor para tener acceso al TEdit (por ejemplo, redefiniendo el método protegido CreateEditor) y usar su propiedad PasswordChar. Aún así, como dice Neftalí, no será algo sencillo, pues el mismo TEdit es el que se usa para todas las celdas, así que tendrías que detectar cuándo está en la celda que te interesa y activar el PasswordChar sólo en ese momento.

// Saludos

ungrande87 29-07-2014 21:31:11

Cita:

Empezado por roman (Mensaje 479485)
El TValueListEditor utiliza un derivado de TEdit interno, al igual que un Grid. Podrías crear una clase derivada de TValueListEditor para tener acceso al TEdit (por ejemplo, redefiniendo el método protegido CreateEditor) y usar su propiedad PasswordChar. Aún así, como dice Neftalí, no será algo sencillo, pues el mismo TEdit es el que se usa para todas las celdas, así que tendrías que detectar cuándo está en la celda que te interesa y activar el PasswordChar sólo en ese momento.

// Saludos

No entiendo bien a lo que te refieres.

Ahora logre avanzar un poco, ya pude cargar todas las contraseñas mediante ********* teniendo en cuenta la longitud. Ahora en lo que estoy renegando es en el evento Keypress de dicho control, xq tengo que ingresar asteriscos solo cuando esta modificando el campo contraseña y no para el resto de los datos, nose si me entienden.

Saludos y gracias por la ayuda.

Al González 29-07-2014 23:07:59

Cita:

Empezado por ungrande87 (Mensaje 479505)
No entiendo bien a lo que te refieres.
[...] no sé si me entienden.

Se te entiende bien, y precisamente eso advertían ya los compañeros Neftali y roman en sus anteriores mensajes.

¿Qué palabra o parte del mensaje de Román fue la que no comprendiste?

Saludos cordiales. :)

ungrande87 31-07-2014 14:12:27

Cita:

Empezado por Al González (Mensaje 479512)
Se te entiende bien, y precisamente eso advertían ya los compañeros Neftali y roman en sus anteriores mensajes.

¿Qué palabra o parte del mensaje de Román fue la que no comprendiste?

Saludos cordiales. :)

Esta parte "Podrías crear una clase derivada de TValueListEditor para tener acceso al TEdit (por ejemplo, redefiniendo el método protegido CreateEditor) y usar su propiedad PasswordChar.". Como hago eso?? disculpen mi ignorancia.


La franja horaria es GMT +2. Ahora son las 10:59:39.

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