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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Talking Recorrer las Labels de un Form

Hola Amigos....

Mi duda es la siguiente, tengo 20 labels en un form llamadas Cancion1, Cancion2,...,Cancion 20

Lo que necesito hacer es que en un determinado momento poner la propiedad visible:= False desde por ejemplo Cancion 8 hasta la Cancion 20.

Es decir, necesito crear un procedure que indicándole un label determinado (Cancion1, Cancion2,...,Cancion19) me recorra todas las labels del form (Cancion1, Cancion2,...,Cancion20) desde esa label hasta la label cancion20 y las haga invisible.

Espero que me entendáis.....

saludos.
Responder Con Cita
  #2  
Antiguo 13-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Puedes recorrer los Controls y/o Components del TForm, preguntar cuál de estos es de la case esperada (TLabel) y habilitarlos o deshabilitarlos.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Código:
var
  Label: TLabel;
  N, I: Integer;

begin
  for I := 0 to Pred(ComponentsCount) do
    if Components[ I ] is TLabel then
    begin
      Label := TLabel(Components[ I ];
      if Pos(Label.Caption, 'Cancion') <> 0 then
      begin
        N := StrToInt(Copy(Label.Caption, Length('Cancion'), Length(Label.Caption)));
        if N > primer número then
          Label.Visible := false;
      end;
    end;
end;
También podrías asignar el número de la canción a la propiedad Tag de cada label para evitarte la conversión IntToStr.

// Saludos
Responder Con Cita
  #4  
Antiguo 13-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Talking Rapidez...

¡¡¡Dios que rapidez!!!

Muchísimas gracias amigos.

Lo que pasa es que no entiendo muy bien el código que me habéis mandado

Parece que recorre todos los componentes del form, si éste es un label .... ahí me pierdo.

Os recuerdo que solo hay 20 labels y se llaman Cancion1,..,Cancion20 y lo que quiero es que dada una label (que puede ser una desde Cancion1 hasta la Cancion19) desde esa misma hasta la label Cancion20 hacerlas invisibles.

Muchas gracias...
Responder Con Cita
  #5  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pseudo código

Código:
Desde la primera componente del formulario hasta la última
  Si la componente es TLabel
    Si es un label que nos interese ('CancionXX')
      Si tiene un número mayor  o igual que el primer número que me interesa
        Hacerlo invisible
// Saludos
Responder Con Cita
  #6  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por cierto, en el código original donde dice

if N > primer número then

debe decir

if N >= primer número then


// Saludos
Responder Con Cita
  #7  
Antiguo 13-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Muchas gracias por la explicación.

Ahora lo entiendo pero aunque no quiero resultar pesado, me parece que el código que me pasas en su begin más interno compara los caption de las labels y lo que necesito son los name.

He cambiado caption por name pero al ejecutar paso a paso el procedure veo que no entra nunca en dicho begin.

Gracias
Responder Con Cita
  #8  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por nesetru
me parece que el código que me pasas en su begin más interno compara los caption de las labels y lo que necesito son los name.

He cambiado caption por name
Bien observado y arreglado.

Cita:
Empezado por nesetru
al ejecutar paso a paso el procedure veo que no entra nunca en dicho begin.
Es que lo escribí como se me ocurrió. Debes invertir los parámetros de Pos.

// Saludos
Responder Con Cita
  #9  
Antiguo 13-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Unhappy

Muchas gracias Roman y perdona las molestias.

Ahora si que entra, justo en la primera label 'Cancion1' pero asigna a N el valor n1 claro, n1 no es un integer y da un error.

¿Se te ocurre algo?
Responder Con Cita
  #10  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por nesetru
Ahora si que entra, justo en la primera label 'Cancion1' pero asigna a N el valor n1 claro, n1 no es un integer y da un error.

¿Se te ocurre algo?
Pues sí que se me ocurre pero te haría bien pensarle un poco. Revísate la ayuda de la función Copy para ver por qué te está incluyendo el último caracter de 'Cancion'.

// Saludos
Responder Con Cita
  #11  
Antiguo 13-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Talking

Gracias por la ayuda...


Después de leer varias veces la ayuda de 'copy' he podidon entender qué hacía y cual era el error.

Muchas gracias.
Responder Con Cita
  #12  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por nesetru
Después de leer varias veces la ayuda de 'copy' he podidon entender qué hacía y cual era el error.
Y ahora eres un poco más sabio (lo digo sin ironía) ¿No te parece mejor así?

// 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 15:07:31.


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
Copyright 1996-2007 Club Delphi