![]() |
Nombre de Tedits creados en ejecución
Hola a todos.
Con el siguiente código creo TEdits en tiempo de ejecución, pero ¿cómo puedo saber el nombre de cada edit para trabajar con ellos? He probado con MiEdit1, MiEdit2... ya que se supone que tiene que ser TEdit más el valor de N pero no funciona. Gracias por la ayuda. |
olvido
Perdón me había olvidado de mandar el código:
|
Mira este ejemplo:
Un Saludo. |
TEdits en t.de ejecución
Gracias Marcos, pero mira hay un error.
Con el código que mandas se crean TEdits con el texto escrito por defecto: Miedit1, Miedit2.... pero estos tedits no responden a ese nombre, por ejemplo, si añado un botón con el código: Miedit2.text:= 'Hola'; verás que te da error. Gracias por tu respuesta |
Te dará error por que el nombre del control no existe hasta haber ejecutado el código. Si en vez de lo que propones, escribes el siguiente código, veras que no da error:
(FindComponent('MiEdit2') as tEdit).text := 'Hola'; Salu2. |
No existe MiEdit2
Hola edusus, claro que al tratar de asignale 'Hola' a la propiedad text te indica error puesto que la componente, al querer ejecutar el procedimiento con el botón dos, no existe. MiEdit2 solo existe después que has ejecutado el procediento con el botón uno y entonces tienes que buscar la componente para poder asignarle el texto o leer el que tenga escrito.
Prueba el siguiente código, tienes que incluir dentro del bucle del botón uno una asignación de un valor a la propiedad Tag, en este caso lo mejor es el mismo valor de la variable N, de Tag, sería agregar en el ejemplo de marcoszorrilla.
Ahora coloca dentro de del botón 2 lo siguiente Al ejucutarlo se logra asignar texto a cada uno de los edit creados, en lugar del Case se pudiera utilizar If..Then y tambien crear una función a la que llamar para leer o escribir en un edit en específico a partir del Tag asignado. Esto puede ser una solución, esta fue la que se me ocurrió de seguro deben haber otras. El inveniente de esta es que hay que recorrer las componentes del formulario, que si tiene muchas retarda en algo la respuesta. Espero te sirva para ilustrar el caso y lo aprovecho para mandar un saludo a un amigo. Saludos |
Tú mismo tienes la solución a tu problema. Si ya has visto que puedes manipular los controles creados mediante el arreglo MiEdit no veo para qué insistir en asignarles un nombre. A fin de cuentas, no hay gran diferencia entre escribir MiEdit2 y MiEdit[2].
El nombre de un control realmente sólo tiene sentido cuando se añade directamente al formulario durante el diseño. Lo único que necesitas es "promover" la variable local MiEdit: array[1..10] of TEdit; a nivel del formulario:
Así, aún después de creados los controles, podrás acceder a ellos con el arreglo. // Saludos |
La franja horaria es GMT +2. Ahora son las 06:19:42. |
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