Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2009
maurici0 maurici0 is offline
Miembro
 
Registrado: feb 2009
Posts: 17
Poder: 0
maurici0 Va por buen camino
Exclamation Convertir Texto a String

Resuelto

Hola a todos me ha sugido una duda.

Hay alguna forma de convertir un texto en una variable u objeto?, ejemplo:
Código Delphi [-]
var
lbl : String;
begin
lbl:='Label1';
 
with lbl do
  begin
  Enabled:=FALSE;
  end;

Quiero hacer esto, ya que para validar campos es la muerte hacerlos manualemnte :s (ya que son mas de 500 campos).

O como puedo habilitar varios labels con un for o algo asi?
Solucion:
Gracias ContraVeneno.
Solucion 1:
Código Delphi [-]
 for  i:=componentcount-1 downto 0 do begin
      if Components[i] is TLabel then begin
           TLabel(Components[i]).Enabled:= True;
      end; //fin if
  end; //fin for


Solucion2:
Código Delphi [-]
 for  i:=componentcount-1 downto 0 do begin
      if (Components[i] is TLabel) and (TLabel(Components[i]).Tag in [1..50])  then begin
           TLabel(Components[i]).Enabled:= True;
      end; //fin if
  end; //fin for

Última edición por maurici0 fecha: 19-03-2009 a las 18:58:04. Razón: Mas explicación
Responder Con Cita
  #2  
Antiguo 19-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
 for  i:=componentcount-1 downto 0 do begin
      if Components[i] is TLabel then begin
           TLabel(Components[i]).Enabled:= True;
      end; //fin if
  end; //fin for



¿500 campos? ¿en una tabla? Para mi 500 campos es igual a un problema de diseño y seguramente existe una mejor manera.
__________________


Última edición por ContraVeneno fecha: 19-03-2009 a las 17:36:37.
Responder Con Cita
  #3  
Antiguo 19-03-2009
maurici0 maurici0 is offline
Miembro
 
Registrado: feb 2009
Posts: 17
Poder: 0
maurici0 Va por buen camino
Gracias por la respuesta, me podrias explicar que hace en si el codigo?
Y aprovechando tu generosidad, si tengo ejemplo 100 labels, como aplciar tu codigo solo a los primeros 50? o algo asi?

Lo que pasa es de que es una pregunta "matriz", asi que desde la pregunta esta mal formulada jaja, esque es para hacer calculos y no se que mas moneria...
Responder Con Cita
  #4  
Antiguo 19-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Lo que hace el código es que recorre todos los componentes de un formulario y a todos los que sean TLabel les pone su propiedad enabled a verdadero. Si son 500, a los 500, si son 2, a los 2. Lo mismo se puede aplicar para hacerlos invisibles y se puede aplicar para cualquier tipo de componente y cualquiera de sus propiedades.

Si quisieras solo los primeros 50, tendrías que cambiar las condiciones del For, o utilizar un While. Pero para esto necesitarías saber que número de componentes son los "primeros 50", es decir algo como: "los primeros 50 son los compomentes del 100 al 150".

pero insisto, tener 500 cosas de un mismo tipo me suena a problema de diseño y seguramente existe una mejor manera. Si explicaras un poco más sobre lo que quieres hacer, tal vez alguien podría tener una mejor idea que tener 500 componentes.
__________________


Última edición por ContraVeneno fecha: 19-03-2009 a las 17:37:55.
Responder Con Cita
  #5  
Antiguo 19-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Pero para esto necesitarías saber que número de componentes son los "primeros 50", es decir algo como: "los primeros 50 son los compomentes del 100 al 150".
Y para eso te podría servir la propiedad Tag de cada label, le asignas un numero y preguntas por esa propiedad si esta entre 1 y 50.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 19-03-2009
maurici0 maurici0 is offline
Miembro
 
Registrado: feb 2009
Posts: 17
Poder: 0
maurici0 Va por buen camino
Gracias por la explciación, eso del componente en donde lo puedo ver?
Responder Con Cita
  #7  
Antiguo 19-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por maurici0 Ver Mensaje
Gracias por la explciación, eso del componente en donde lo puedo ver?
Que componente quieres ver, si te te refieres a Component, es una propiedad que tiene un contenedor en tu caso tu formulario ahí estan todos los componentes que tienes en tu formulario.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 19-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
 for  i:=componentcount-1 downto 0 do begin
      if (Components[i] is TLabel) and (TLabel(Components[i]).Tag in [1..50])  then begin
           TLabel(Components[i]).Enabled:= True;
      end; //fin if
  end; //fin for

Buena idea la de usar el tag...
creo que sería algo así, ¿o no?
__________________


Última edición por ContraVeneno fecha: 19-03-2009 a las 17:36:23.
Responder Con Cita
  #9  
Antiguo 19-03-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Si utilizaras el código propuesto por ContraVeneno, ten en cuenta que si los Label's están dentro de un panel, Groupbox o algo por el estilo tendras que modificar el código para trabajar con controles anidados, o sea llamar a los famosos procedimientos anidados
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #10  
Antiguo 19-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por D&W Ver Mensaje
Si utilizaras el código propuesto por ContraVeneno, ten en cuenta que si los Label's están dentro de un panel, Groupbox o algo por el estilo tendras que modificar el código para trabajar con controles anidados, o sea llamar a los famosos procedimientos anidados
a caray...

Ese código yo lo utilizo para habilitar unos TDBEdits, algunos están directo en el formulario, otros están en un TTabSheet, otros están en otro TTabSheet y dentro de un TGroupBox y de todas formas me los habilita todos...
__________________

Responder Con Cita
  #11  
Antiguo 19-03-2009
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
Así es Contra. Imagino que D&W está pensando en el arreglo Controls que sí depende del contenedor visual.

Por cierto, en VB existen los arreglos de controles con los cuales todo esto sería más sencillo

// Saludos
Responder Con Cita
  #12  
Antiguo 19-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, con Component recorre todos los componentes pero con Controls no que debe ser al que se refiere D&W.

Edito.- Se me ha adelantado Roman.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #13  
Antiguo 19-03-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
a caray...

Ese código yo lo utilizo para habilitar unos TDBEdits, algunos están directo en el formulario, otros están en un TTabSheet, otros están en otro TTabSheet y dentro de un TGroupBox y de todas formas me los habilita todos...
Ahhhh! en el código estás utilizando la propiedad "Components" no "Controls". Entendía que la propiedad "Components" solo funcionaba para los decendientes de TComponents. Que "Controls" era para los objetos visuales, y en esos si tienes que utilizar procedimientos anidados. Ve que cada día se aprende algo nuevo. Gracias por la intencional lección ContraVeneno.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #14  
Antiguo 19-03-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 18
Faust Va por buen camino
Alguna vez que usé Visual Basic recuerdo que me fueron muy útiles los arrays o vectores de controles...

Me pregunto... ¿Delphi tendrá algo parecido e igual de fácil de usar?
__________________
Herr Heins Faust
Responder Con Cita
  #15  
Antiguo 19-03-2009
maurici0 maurici0 is offline
Miembro
 
Registrado: feb 2009
Posts: 17
Poder: 0
maurici0 Va por buen camino
Perfecto, agradezco a todos su ayuda me ha servido, ahora a implementarlo, gracias!!
Responder Con Cita
  #16  
Antiguo 19-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Faust Ver Mensaje
Alguna vez que usé Visual Basic recuerdo que me fueron muy útiles los arrays o vectores de controles...

Me pregunto... ¿Delphi tendrá algo parecido e igual de fácil de usar?
Hola, cuando utilizaba Visual Basic también me gustaba utilizar el vector de controles (donde solo le tenías que indicar el indice y un mismo nombre en las propiedades), pero en delphi no hay, si quieres hacerlo tendrías que crearte tu el arrray de controles que quieras y mantenerlo tu.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #17  
Antiguo 19-03-2009
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
Bien, bien, poco a poco todos vamos confesando nuestro oscuro pasado programando en VB

--------------------------------------------

Creo yo que si se accede muchas veces a los controles, conviene hacer nuestro propio arreglo como comenta Caro. Bastaría, por ejemplo, declarar el arreglo

Código Delphi [-]
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel
    ...
    Label84: TLabel;
  private
    Etiquetas: array of TLabel;
  end;

e inicializarlo en el evento OnCreate:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLength(Etiquetas, 84);
  Etiquetas[0] := Label1;
  Etiquetas[1] := Label2;
  Etiquetas[2] := Label3;
  ...
  Etiquetas[84] := Label84;
end;

Otra cosa que se puede hacer si se requiere trabajar con secciones de los controles (los primeros 50...) es agrupar las secciones en un panel, y entonces sí, usar el arreglo Controls de cada panel.

// Saludos
Responder Con Cita
  #18  
Antiguo 19-03-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 18
Faust Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Bien, bien, poco a poco todos vamos confesando nuestro oscuro pasado programando en VB

--------------------------------------------

Creo yo que si se accede muchas veces a los controles, conviene hacer nuestro propio arreglo como comenta Caro. Bastaría, por ejemplo, declarar el arreglo

Código Delphi [-]
type   TForm1 = class(TForm)     Label1: TLabel;     Label2: TLabel;     Label3: TLabel     ...     Label84: TLabel;   private     Etiquetas: array of TLabel;   end;




e inicializarlo en el evento OnCreate:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject); begin   SetLength(Etiquetas, 84);   Etiquetas[0] := Label1;   Etiquetas[1] := Label2;   Etiquetas[2] := Label3;   ...   Etiquetas[84] := Label84; end;




Otra cosa que se puede hacer si se requiere trabajar con secciones de los controles (los primeros 50...) es agrupar las secciones en un panel, y entonces sí, usar el arreglo Controls de cada panel.

// Saludos
Eso si es mucho trabajo cuando se tienen demasiados controles, y en cuanto a nuestro pasado con VB ¿qué nos puede comentar Román? No creo que tenga un pasado muy limpio .

Hay un dicho que dice: (estoy siendo redundante)
Cita:
Hay aves que vuelan sobre el pántano sin nisiquiera manchar su plumaje... (creo que va por ahí)
Reciban saludos de este humilde programador al que le pertenece un pasado oscuro y nebuloso...
__________________
Herr Heins Faust
Responder Con Cita
  #19  
Antiguo 19-03-2009
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 Faust Ver Mensaje
y en cuanto a nuestro pasado con VB ¿qué nos puede comentar Román? No creo que tenga un pasado muy limpio .
Hey, hey, que yo lo digo en broma Alguna vez usé VB, por eso conozco los arreglos de controles

// Saludos
Responder Con Cita
  #20  
Antiguo 19-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
yo lo use durante toda la escuela... creo que hasta me dieron una medalla por algún programita escolar... Por suerte en cuanto terminé la escuela, lo deje de usar; salvo un periodo oscuro de tres meses hace un par de años...

Pero sí, los arreglos de controles son bastante buenos y muy útiles.
__________________

Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir String a Fecha Gaim2205 SQL 7 04-12-2008 03:14:10
convertir un date a string airam C++ Builder 2 25-07-2008 18:58:00
convertir string jsanchez Varios 3 31-07-2006 22:23:19
Convertir un String en un método. OscarG OOP 5 19-12-2005 12:52:35
Convertir un string a puntero jnrico Varios 1 27-05-2003 16:29:47


La franja horaria es GMT +2. Ahora son las 07:02:47.


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