![]() |
Declarar un nombre a un edit creado en tiempo de ejecucion
Hola a todos...
lo que pasa es que quiero declararle un nombre a un TEdit que estoy creando en tiempo de ejcucion pero el problema es que los estoy creando con una matriz y no se como hacer para declararle todos los nombres a todos los TEdit... les agradesco su ayuda. :) Este es el codigo.
|
¿Para qué quieres ponerle un nombre? Normalmente, el nombre de un control se utiliza sólamente para referirnos a él en código, pero, dado que lo creas en tiempo de ejecución, no hace mucho sentido.
// Saludos |
roman lo que pasa es que después necesito llamar a todos los Edit creados para así llenarlos con una matriz y la única forma que se me ocurría era llamarlos por el nombre.
|
Hola,
Probaste hacer esto: Código:
for f := 1 to NEdits do |
El problema es que, para encontrar un control por su nombre utilizas FindComponent. Pero este método, a su vez, es un ciclo que recorre todos los componentes del formulario para encontrar una coincidencia de nombre. Entonces, si tu rejilla es, digamos, de 10x10, estarías recorriendo el formulario 100 veces.
Dado que estás creando los controles por código, fácilmente puedes declarar una matriz de Edits:
y llenarla con los controles que creas. Posteriormente será mucho más fácil utilizarlos por sus coordenadas:
// Saludos |
Si ramon yo lo declaro así solo que es dinámico y defino la matriz a través de un TEdit y como es una matriz cuadrada no hay problema,
Declaro la matriz asi:
y defino el valor asi:
|
Si ramon yo lo declaro así solo que es dinámico y defino la matriz a través de un TEdit y como es una matriz cuadrada no hay problema,
Declaro la matriz asi:
y defino el valor asi:
|
juniorSoft si claro ya lo intente
|
Amigo muchas gracias por su ayuda ya busque y pude solucionar mi error
les dejo mi solucion y me dicen que les parece
|
Puedes probar algo como esto para no utilizar el método FindComponent
|
Tal como propone juniorSoft es lo más adecuado en mi opinión. No hay necesdad de utilizar el nombre de un componente cuando nosotros mismos lo creamos.
// Saludos |
juniorSoft esta muy buena esa idea pero yo quiero utilizar una matriz dinamica y como veo en tu ejemplo es estatica ya que tu le pones el valor en max, como hago para que esa variable const no sea constante si no que el usuario la defina por medio de un edit.
no se si me hice entender. gracias por vuestra ayuda. |
No hay gran problema con eso, con que sea estática, pues tú mismo fijaste un límite máximo. Puedes declarar la matriz con las dimensionaes máximas y cuando el usuario escoja el número de celdas (que deberá ser menor que el máximo) sólo creas ese número de componentes quedando el resto de entradas en nil.
De todas formas, si quieres que sea diinámica, tampoco hay problema. Declara un tipo de datos:
y usas SetLength para definir las dimensiones según la elección del usuario. // Saludos |
Hola TavoBran,,
podrías hacer varios cambios Código:
type Un detalle que falto en el anterior ejemplo es que los parámetros debes declararlos por referencia. Otra observación: los Arrays dinámicos empiezan en cero(0). Saludos, |
También como dice Roman puedes establecer la constante a una cantidad limite
y pedirle al usuario que introduzca la cantidad que desea que no exceda la cantidad limite de edits. |
roman si eso yo lo defino como me dices solo que tengo otra duda
este es mi codigo
pero me genera dos errores que son al momento de crear los edit
lo tengo asi pero me genera error en esas dos lineas de codigo |
Cita:
|
Eso es porque LlenarEdits y Crear Edits están declarados como procedimientos independientes. Debes declararlos como métodos del formulario:
y al momento de implementarlos, anteponer el prefijo TfrmEjecucion. al nombre del procedimiento. // Saludos |
Disculpas porque el código lo hice directamente en el editor del foro por no tener delphi instalado en la pc que estoy utilizando.
|
JuniorSoft como asi estoy perdido.
es que no llevo mucho tiempo programando y aun hay cosas que no tengo claras si me puedes explicar te agradecería mucho. |
La franja horaria es GMT +2. Ahora son las 05:51:56. |
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