Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2005
miguelml miguelml is offline
Miembro
 
Registrado: Nov 2005
Posts: 24
Poder: 0
miguelml Va por buen camino
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!

Última edición por dec fecha: 15-11-2005 a las 16:13:35. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 15-11-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: Mar 2004
Ubicación: Cuba
Posts: 676
Poder: 15
yusnerqui Va por buen camino
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.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #3  
Antiguo 15-11-2005
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: Oct 2005
Posts: 277
Poder: 13
ilichhernandez Va por buen camino
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...
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #4  
Antiguo 15-11-2005
miguelml miguelml is offline
Miembro
 
Registrado: Nov 2005
Posts: 24
Poder: 0
miguelml Va por buen camino
Muchisimas gracias!! funciona de perlas, el codigo es:
Código:
 showmessage(TEdit(FindComponent('Edit'+IntToStr(i))).Text);
faltava un ")", aun asi gracias, adios.
Responder Con Cita
  #5  
Antiguo 15-11-2005
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: Oct 2005
Posts: 277
Poder: 13
ilichhernandez Va por buen camino
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.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #6  
Antiguo 15-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: May 2003
Ubicación: Ciudad de México
Posts: 20.172
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
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
Responder Con Cita
  #7  
Antiguo 15-11-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: Mar 2004
Ubicación: Cuba
Posts: 676
Poder: 15
yusnerqui Va por buen camino
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.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 15-11-2005 a las 18:08:21.
Responder Con Cita
  #8  
Antiguo 15-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: May 2003
Ubicación: Ciudad de México
Posts: 20.172
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


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


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