Seleccionar edits através de un rango (duda)

Marc
15 de Octubre del 2003
Por el título no se entiende mucho, pero tengo un pequeño problemilla. Hace algun tiempo que programo en Delphi y nunca es sabido seleccionar un objeto cuando me pasan un rango. Me explico mejor.
Tengo 400 Edits. Para selecionar uno hago (ejemplo) Form1.Edit1.Text:='Ejemplo';
pero si me dicen: pon ejemplo en los edits entre 200 y 350. No puedo hacer un:
for i:=200 to 350 do
Form1.i.Text:='Ejemplo';

No se como seleccionar esos edits. De la unica manera que se, tendria que hacer condicionales de los 400 edits para ver si he de poner 'Ejemplo' uno por uno. Y no creo que esa sea la manera.
Si alguna alma caritatiba me lo puediera explicar. Gracias

Carlos Luna
15 de Octubre del 2003
Hola, la verdad tengo pocos conocimientos de Delphi pero creo que esto te podria ayudar un poco a tener una idea (por lo menos):
Si creas un arreglo de punteros de tipo Edit y a cada posicion le asignas el manejador (handle) de esos Edit's que ya tienes creados de manera estatica, y luego te refieres a ellos por el nombre de ese vector y su respectivo indice. Aqui te doy el codigo de como lo se hacer en C++Builder que creo que se parece un poco a Delphi:
//******************************************//
//Declaracion del arreglo de tipo Edit
TEdit *arreglo[400];
//ahora lo tedioso aqui es que tienes que asignar
//a ese vector los 400 Edit's que estan en tu
//forma. Yo voy a hacer unos pocos
//para el primero
arreglo[0]=Form1->Edit1;
arreglo[1]=Form1->Edit2;
arreglo[2]=Form1->Edit3;
//y asi sucesivamente

//ahora para seleccionar el rango
for(i=199;i<350;i++)
arreglo[i]->Text="Ejemplo";
//y asi el rango que tu quieras

Bueno la verdad espero que te pueda servir de algo este codigo en C++ Builder si puedes hacer la equivalencia a Delphi.


Victor Ya?
15 de Octubre del 2003
Busca en la ayuda la funcion FindComponet eso es lo que buscas....
Suerte!!

Marc
15 de Octubre del 2003
Teneis razón. Se puede hacer de las dos maneras. Pero la mejor es con el FindComponent.Lo explico que ya lo he encontrado.

for i:=1 to 5 do
(FindComponent('Edit'+IntToStr(i)) as TEdit).Text:='Ejemplo';

Para quien tenga la misma duda, aquí esta la solución.
Gracias por la ayuda

Iker
15 de Octubre del 2003
este findcomponent funciona con edits creados en diseño pero que puedo hacer si los edit se crean dinamicamente ( edit1 := Tedit.create(self) ) la funcion Findcomponent no me buscar estos componentes

gracias