Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Consulta (https://www.clubdelphi.com/foros/showthread.php?t=77852)

Jusar 29-02-2012 22:03:09

Consulta
 
Como puedo cocatenar varios label para agregarles informacion sin tener que hacerlo uno por uno. Ejm label1=1, label2=2 y asi consecutivamente... Saludos desde Costa Rica...

Casimiro Noteví 29-02-2012 23:52:58

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

ecfisa 01-03-2012 02:48:22

Hola jusar.

Código:

void __fastcall TForm1::NumerarClick(TObject *Sender)
{
  for(int i=0;i < ComponentCount; i++)
    if(Components[i]->ClassNameIs("TLabel")){
      TLabel *L = static_cast<TLabel*>(Components[i]);
      L->Caption = L->Name[L->Name.Length()];
  }
}

Saludos.

Edito: El código funciona siempre y cuando el último caracter de la propiedad Name de los TLabel sean los números consecutivos, como solicitas en tu mensaje:
Cita:

Ejm label1=1, label2=2 y asi consecutivamente...

Jusar 01-03-2012 16:27:57

Osea pero como haria para no tener que realizarlo uno por uno como utilizando un for que me recorralas los label y me agrege informacion.

Ej:
for (int i=0;i<4;i++)
label+"i"="hola";

algo asi verdad ipoteticamente es simplente saber si puede concatenar el nombre de los label con las caracteres....

Casimiro Noteví 01-03-2012 16:54:53

Recuerda usar etiquetas cuando pongas código, ejemplo:




.

Jusar 01-03-2012 17:57:58

Disculpa apenas me vengo adaptando al foro

como puedo concatenar varios label para agregarles informacion... en modo de funcion utilizando un for es q la de arriba no me quedo muy clara...

Caral 01-03-2012 18:15:49

Hola
En delphi teniendo en cuenta tres label:

Código Delphi [-]
var
  i :Integer;
  comp:TComponent;
begin
  for i := 1 to 3 do begin
   comp := FindComponent('Label' + IntToStr(i));
   TLabel(comp).Caption:= IntToStr(0 + i);
  end;

Saludos

escafandra 01-03-2012 19:14:32

Lo que Caral quiere decir es algo como esto:
Código:

  TLabel *Label;
  for(int i = 1; i<ComponentCount; i++){
    Label = static_cast<TLabel*>(FindComponent("Label" + IntToStr(i)));
    if(Label) Label->Caption = IntToStr(i);
  }


Saludos.

ecfisa 01-03-2012 22:45:49

Cita:

Empezado por Jusar (Mensaje 426596)
Osea pero como haria para no tener que realizarlo uno por uno como utilizando un for que me recorralas los label y me agrege informacion.

Ej:
for (int i=0;i<4;i++)
label+"i"="hola";

algo asi verdad ipoteticamente es simplente saber si puede concatenar el nombre de los label con las caracteres....

Hola.

Todos los ejemplos que te pusieron hacen la taréa que deseas: Encontrar en el form los componentes de tipo TLabel para luego operar con ellos.

Si lo que buscas es cambiar el nombre del componente, tendrás que trabajar sobre la propiedad Name de los Labels y si querés cambiar lo que visualiza tendrás que trabajar sobre la propiedad Caption.

Ejemplo:
Código:

  Label->Name = "Hola" + IntToStr(i); // cambia propiedad Name
  Label->Caption = "Hola" + IntoStr(i); // cambia propiedad Caption

Saludos.

Jusar 02-03-2012 06:07:29

Aqui otra vez yo de nuevo me podrian explicar en que consiste el ComponentCount y el FindComponent se le agradeceria ya lo heche andar y me funciono a la perfeccion...

escafandra 02-03-2012 08:24:58

..
Cita:

Empezado por Ayude de Builder
TComponent::ComponentCount

ndicates the number of components owned by the component.

__property int ComponentCount = {read=GetComponentCount, nodefault};

Description

Use ComponentCount to find or verify the number of components owned by a component, or when iterating through the Components list to perform some action on all owned components. ComponentCount is used internally for such iterative procedures.

Note: The ComponentCount of a component contains the same number of items as in the Components list for that component.


Cita:

Empezado por Ayuda de Builder
TComponent::FindComponent

Indicates whether a given component is owned by the component.

TComponent* __fastcall FindComponent(const AnsiString AName);

Description

FindComponent returns the component in the Components property array with the name that matches the string in the AName parameter. Use FindComponent to determine whether a given component is owned by another.

FindComponent is not case sensitive.

Saludos.

lmpadron 07-03-2012 21:32:41

La duda de uno puede ser la duda de varios !!!, así que me uno al agradecimiento porque es uno de las tantas cosas que si hubiese sabido hacer habría escrito mucho menos. Gracias !!!


La franja horaria es GMT +2. Ahora son las 22:51:39.

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