Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como moverse por un conjunto de edits (https://www.clubdelphi.com/foros/showthread.php?t=27215)

miguelml 15-11-2005 16:16:45

Como moverse por un conjunto de edits
 
Hola, necesito ayuda, tengo un grupo de edits que llegan desde edit1 a edit16, i necesito recorrer edit por edit para meter su valor en un tabla.

Código Delphi [-]
  for i:=1 to 16 do
 begin
   table1.edit;
   table1.Fields[i+2].value:=edit+'i'+.text;
   table1.post;
 end;
no se si se puede hacer algo similar a esto, si alguien me sugiere algo, o me corrige en que fallo...

muchas gracias!

yusnerqui 15-11-2005 16:54:02

Bueno una solución puede ser usar el método FindComponent del Form que los contiene.

Así puedes decir:
Código Delphi [-]
 for i:=1 to 16 do
 begin
   table1.edit;
   table1.Fields[i+2].value:=TEdit(FindComponent('Edit'+IntToStr(i)).text;
   table1.post;
 end;

También recomendarte que uses etiquetas VB para la mejor visualización de tu código

Saludos Yusnerqui.

ilichhernandez 15-11-2005 17:18:41

Prueba con esto ....

Código Delphi [-]
for n:=(Form1.ComponentCount -1) downto 0 do
    begin
       if ((Components[n] is TEdit) and (Components[n].tag = 1)) then
         begin
           tabla[n] := TEdit(Components[n]).text;
         end;
    end;


saludos...

miguelml 15-11-2005 17:22:28

Muchisimas gracias!! funciona de perlas, el codigo es:
Código:

showmessage(TEdit(FindComponent('Edit'+IntToStr(i))).Text);
faltava un ")", aun asi gracias, adios.

ilichhernandez 15-11-2005 17:40:22

Me falto algo , primero pasa los valores de los edit a su tag asi...

Código Delphi [-]
edit1.tag := edit1.text;

de esa manera tandras el valor...

luego
Código Delphi [-]
for n:=(Form1.ComponentCount -1) downto 0 do
    begin
       if ((Components[n] is TEdit) and (Components[n].tag <> 0')) then
         begin
           lista[n] := TEdit(Components[n]).tag;
         end;
    end;

No es la mejor programacion pero creo que debiera resultar !!!

saludos.

roman 15-11-2005 17:55:48

Cita:

Empezado por ilichhernandez
No es la mejor programacion pero creo que debiera resultar !!!

No sé si sea la mejor, pero si será más eficiente que FindComponent. FindComponente utiliza un ciclo que recorre las componentes de un formualrio para buscar la del nombre dado, de manera que hacer un ciclo que use FindComponente significa recorrer dos veces las componentes.

// Saludos

yusnerqui 15-11-2005 18:35:42

Roman tiene razón, pero es que como la propia ayuda de delphi lo usa dentro de un ciclo, pues pensé que no era tan malo....
Cita:

Empezado por Ayuda de Delphi
The following example creates 20 edit boxes, using FindComponent with the edit box name to access each newly created edit box.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
const
NamePrefix = 'MyEdit';
begin
  for i := 1 to 20 do begin
    TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
    with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
    begin
      Left := 10;
      Top := i * 20;
      Parent := self;
    end;
  end;
end;

De todos modos siempre podrás definirte un arreglo donde sus elementos apunten a cada uno de los edits y recorrerlo, son algunas líneas de código más, pero será mucho mas eficiente.
Digo eso creo.:confused:

Saludos:D

roman 15-11-2005 19:26:22

Lo sé, lo sé. Pero, por esta vez, el ejemplo de Delphi es francamente malo. ¿Para qué buscar una componente que se acaba de construir y por tanto se tiene (o se puede tener) su referencia a la mano?

// Saludos


La franja horaria es GMT +2. Ahora son las 10:53:27.

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