Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Repetir una accion (https://www.clubdelphi.com/foros/showthread.php?t=69153)

lmpadron 29-07-2010 16:07:20

Repetir una accion
 
Hola Tengo una prequeña duda, tengo un FORM con casi 600 edit (muchos verdad!!) y necesito programar el evento OnKeyPress, el probema es que es el mismo codigo para todos estos Edits mi pregunta es Como se puede escribir este codigo una sola ves ????, hay alguna forma en que pueda asignarle esta accion a los demas edits sin necesidad de escribirlo en cada uno de ellos ??? Gracias

coso 29-07-2010 16:23:19

Hola,
600 edits es un error grave de diseño. Para lo que tu quieres, puedes hacer algo asi, por ejemplo, en el evento OnCreate

Código Delphi [-]

for i := 0 to Form1.ComponentCount - 1 do
begin
    if Form1.Components[i] is TEdit then
     (Form1.Components[i] as TEdit).OnKeyPress := MiProcedimientoOnKeyPress;
end;

de todas maneras, sigo diciendote que 600 TEdit en un form es un fallo grave que te dara mas problemas que soluciones. Un saludo.

Caro 29-07-2010 16:27:09

Hola lmpadron, puedes asignar el codigo que tienes en el OnKeyPress a todos los edit que quieras, para ello solo debes seleccionar en diseño el OnKeyPress del edit que quieras (digamos Edit1KeyPress) en el OnKeyPress de los otros edits.

Saluditos

lmpadron 29-07-2010 17:09:09

Cita:

Empezado por Caro (Mensaje 371972)
Hola lmpadron, puedes asignar el codigo que tienes en el OnKeyPress a todos los edit que quieras, para ello solo debes seleccionar en diseño el OnKeyPress del edit que quieras (digamos Edit1KeyPress) en el OnKeyPress de los otros edits.

Saluditos

Se me habia ocurrido esa idea pero me surgio la duda de si eso funcionaba para cada edit de forma individual o repetia el evento en el edit donde se escribio el codigo en particular. Por ejemplo lo que necesito es reemplazar algunos caracteres para evitar que los usuarios cometan errores, los reemplasos son los mismos en todos los edit pero al yo llamar el evento de del edit1 desde otro edit por ejemplo el 2 las acciones se realizan en el Edit1 o en el Edit2 ???????

Cita:

Empezado por coso (Mensaje 371969)
(...)sigo diciendote que 600 TEdit en un form es un fallo grave que te dara mas problemas que soluciones. Un saludo.

Que debo hacer si necesito que se introdusca la informacion en una BD con mas de 600 campos, pense en usar un TDBGrid pero creo que eso me traeria mas problemas, conoces alguna solucion mejor ??????

Gracias por su ayuda !!!!!

Caro 29-07-2010 18:08:30

Cita:

Empezado por lmpadron (Mensaje 371980)
Se me habia ocurrido esa idea pero me surgio la duda de si eso funcionaba para cada edit de forma individual o repetia el evento en el edit donde se escribio el codigo en particular. Por ejemplo lo que necesito es reemplazar algunos caracteres para evitar que los usuarios cometan errores, los reemplasos son los mismos en todos los edit pero al yo llamar el evento de del edit1 desde otro edit por ejemplo el 2 las acciones se realizan en el Edit1 o en el Edit2 ???????

Hola de nuevo, el evento OnKeyPress y la mayoría tienen un parámetro Sender con el que puedes hacer referencia al edit en el que se esta ejecutando dicho evento (haciendo un Cast).

Código Delphi [-]
  TEdit(Sender).Text := 'algo'; //eso en delphi
  //en c++ creo que es algo así:
  < TEdit > (Sender)-> ............

Yo también creo que 600 edit son muchos y si son campos de una sola tabla(algo no esta bien en tu diseño).

Saluditos

coso 29-07-2010 20:21:31

Hola,
otra vez, una bd que necesite 600 campos introducidos a mano...es que hay un problema de diseño seguro...y ya no te digo la de problemas que te provocara trabajar con algo asi...Si nos cuentas que necesitas hacer, quiza te podamos ayudar. Un saludo.

PD:
Cita:

edit por ejemplo el 2 las acciones se realizan en el Edit1 o en el Edit2
como te dice Caro, deberas usar el Sender del evento OnKeyPress para tratar directamente con el objeto que lo ha llamado.


La franja horaria es GMT +2. Ahora son las 23:40:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi