Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2008
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Convertir de ListBox a distintas cadenas de texto

Queria saber si se puede pasar cada uno de los items de un list box a distintas variables string, ejemplo tengo en el list box:
1.- club
2.- delphi
3.-foros
4.- oop
y que estos items se asignen a distintas var string.
Responder Con Cita
  #2  
Antiguo 04-12-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes acceder a los "Items" de un "ListBox" mediante la propiedad del mismo nombre:

Código Delphi [-]
var
  s: string;
begin
  
  s := ListBox1.Items[0];

end;

En este caso la variable "s" contendrá el texto del primer elemento de la lista.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 04-12-2008
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, solo necesitas acceder a la posición que necesitas en su propiedad Items, un ejemplo para ver el item seleccionado.

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

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
  #4  
Antiguo 04-12-2008
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola, solo necesitas acceder a la posición que necesitas en su propiedad Items, un ejemplo para ver el item seleccionado.

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

Saluditos
Lo que quiero hacer es acceder automaticamente no uno por uno porque la cantidad de los items no es fija
Responder Con Cita
  #5  
Antiguo 04-12-2008
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 j_flores3000 Ver Mensaje
Lo que quiero hacer es acceder automaticamente no uno por uno porque la cantidad de los items no es fija
Hola de nuevo, puedes acceder a todos los items recorriendo, ejemplo:

Código Delphi [-]
var
 cadena : String;
begin
 for Ind:=0 to ComboBox1.Items.Count-1 do
  begin
   cadena := ComboBox1.Items[Ind];
   showmessage(cadena); 
  end;

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 04-12-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes valerte de otras propiedades de "Items" para recorrer los existentes:

Código Delphi [-]
var
  s: string;
  i, len: integer;

begin

  len := ListBox1.Items.Count - 1;

  for i := 0 to len do
  begin

    s := s + ' - ' + ListBox1.Items[i];

  end;

  // Muestra los elementos separados por guiones

  ShowMessage(s);

end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 04-12-2008
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

Puedes valerte de otras propiedades de "Items" para recorrer los existentes:

Código Delphi [-]
var
  s: string;
  i, len: integer;

begin

  len := ListBox1.Items.Count - 1;

  for i := 0 to len do
  begin

    s := s + ' - ' + ListBox1.Items[i];

  end;

  // Muestra los elementos separados por guiones

  ShowMessage(s);

end;
Sin ser molesto lo que hacen ahi es agregar todos los items a 1 sola cadena de texto yo necesito que se haga cada palabra (o item) en una variable distinta
Responder Con Cita
  #8  
Antiguo 04-12-2008
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 j_flores3000 Ver Mensaje
Sin ser molesto lo que hacen ahi es agregar todos los items a 1 sola cadena de texto yo necesito que se haga cada palabra (o item) en una variable distinta
No entiendo porque lo quieres poner en diferentes variables, si puedes trabajar con la lista de items directamente.

En diferentes variables:

Código Delphi [-]
var
 cadena : String;
 var1, var2, var3, var4, var5....... : String;
begin
 for Ind:=0 to ComboBox1.Items.Count-1 do
  begin
    cadena := ComboBox1.Items[Ind];
    Case Ind Of
     0 : var1 := cadena;
     1 : var2 := cadena;
     2 : var3 := cadena;
     3 : var4 := cadena;
     4 : var5 := cadena;
     ..................... 
    end; 
  end;

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
  #9  
Antiguo 04-12-2008
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
¿y para que los quieres en una variable? digo, ya los tienes en el combo... para que repetir el valor en otra variable... además, los ejemplos que amablemente Caro y Dec te han mostrado, son suficientes como para que TU deduzcas como realizar lo que quieres... no es buena idea esperar a que aquí hagan tu tarea.
__________________

Responder Con Cita
  #10  
Antiguo 04-12-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hum... pero es que no vamos a hacerte todo el trabajo, ¿o sí? Je je je. Lo que quiero decir es que en el código que tanto Caro como yo hemos mostrado, puede verse cómo asignar un elemento de una lista a una variable de tipo "string". ¿Que quieres usar más variables de tipo string y asignar un elemento de la lista a cada una? Bueno. ¿Quién te lo impide? Otra cosa es que claro, no sabes los elementos que va a tener la lista... luego no puedes declarar variables "s1, s2, s3" y así. Vale.

Pues entonces se me ocurre que puedes usar un "Array de cadenas", y añadir cada elemento de la lista en un elemento del "Array", pero, aquí ya se me viene a la cabeza que no sé muy bien qué quieres hacer, porque, ¿para qué añadir los elementos de la lista en un "Array", si ya están en la lista, que nos ofrece una propiedad como "Items", que, es como si fuera un "Array"? Así que no se me ocurre qué más decirte y lo lamento.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-12-2008 a las 23:12:46.
Responder Con Cita
  #11  
Antiguo 04-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por j_flores3000 Ver Mensaje
Sin ser molesto lo que hacen ahi es agregar todos los items a 1 sola cadena de texto yo necesito que se haga cada palabra (o item) en una variable distinta
No se pero creo que para eso se tendrían que crear frames en tiempo de ejecución, porque hasta donde se (aunque alguien podria decirme lo contrario) no se pueden crear variables en tiempo de ejecución.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 04-12-2008
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 dec Ver Mensaje
Pues entonces se me ocurre que puedes usar un "Array de cadenas", y añadir cada elemento de la lista en un elemento del "Array", pero, aquí ya se me viene a la cabeza que no sé muy bien qué quieres hacer, porque, ¿para qué añadir los elementos de la lista en un "Array", si ya están en la lista, que nos ofrece una propiedad como "Items", que, es como si fuera un "Array"? Así que no se me ocurre qué más decirte y lo lamento.
Eso mismo digo yo, sería mejor trabajar con la lista de items directamente.

Cita:
Empezado por egostar Ver Mensaje
No se pero creo que para eso se tendrían que crear frames en tiempo de ejecución, porque hasta donde se (aunque alguien podria decirme lo contrario) no se pueden crear variables en tiempo de ejecución.
Frames , no sería mucha cosa para volver a guardar los items. Que yo sepa no se pueden crear variables en ejecución, pero podría tenerlas definidas todas las que piense que va utilizar y asignar con un case como lo hice arriba, pero insisto sería mejor que trabajara con los items directamente y así no se complica la vida.

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 04-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
Frames , no sería mucha cosa para volver a guardar los items. Que yo sepa no se pueden crear variables en ejecución, pero podría tenerlas definidas todas las que piense que va utilizar y asignar con un case como lo hice arriba, pero insisto sería mejor que trabajara con los items directamente y así no se complica la vida.
Puede ser, el asunto es donde quiere poner los nombres de los datos que tenga en el ListBox, pero supongamos que quiera poner labels en la forma pero que se creen solo las que tenga el listbox. Yo crearia un frame con un label y haria esto.

Aqui algo rapido

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  I: integer;
  f: TFrame2;
begin
  for I := 0 to ListBox1.Count - 1 do begin
    f := TFrame2.Create(nil);
    f.Parent := Form1;
    f.Label1.Caption := ListBox1.Items[i];
    f.Top := 100+i*15;
    f.Left := 20;
  end;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 02-01-2009 a las 22:38:35.
Responder Con Cita
  #14  
Antiguo 04-12-2008
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 egostar Ver Mensaje
Puede ser, el asunto es donde quiere poner los nombres de los datos que tenga en el ListBox, pero supongamos que quiera poner labels en la forma pero que se creen solo las que tenga el listbox. Yo crearia un frame con un label y haria esto.
Ok amiguito , en el ejemplo que das también se podría crear los Label directamente sin usar los frames. Creo que sería bueno que el amiguito/a nos indicara para que realmente quiere utilizar las diferentes variables.

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
  #15  
Antiguo 04-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
Ok amiguito , en el ejemplo que das también se podría crear los Label directamente sin usar los frames. Creo que sería bueno que el amiguito/a nos indicara para que realmente quiere utilizar las diferentes variables.

Saluditos
, bueno amiguita, es que me gusta complicarme la vida

Salud ITOS

PD, me enseñas a hacer eso
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 04-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Sería útil que j_flores3000 aportara más detalles del caso. Si nos describiera sus problemas, necesidades, requisitos, planteos y/o dudas podríamos ver tal vez a esto con otra óptica y tal vez ofrecer alguna alternativa.

Por lo pronto, me uno a sus planteos:
¿Para que tener tantas variables como items existan si se puede tener y referenciar a cada item, desde una misma variable (combo)?

j_flores3000, a lo que apuntan todos los compañeros (y compañera) es que se estaría redundando datos. Si ya en el Combo se tiene guardado los datos ¿Para que tener otras N variables con cada dato? El combo no es más que un array dinámico visual. Y como cualquier array permite que todos los items se referencien mediante un único nombre. ¡Esa es una de sus cualidades y ventajas!

Como he dicho al principio, si conocieramos más del tema...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #17  
Antiguo 04-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
El punto es que para que quiere otro array si al final un ListBox es eso es necesario mas información.

Salud OS

PD; Como bien lo estas diciendo amigo Delphius
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #18  
Antiguo 04-12-2008
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 egostar Ver Mensaje
PD, me enseñas a hacer eso
Supongo que a crear los Labels sin los Frames.

Digamos que los ponemos dentro de un panel, por eso lo del Parent.

Código Delphi [-]
var
 aTop, Ind : Integer;
 Lab : TLabel;
begin
 aTop := 10;
 for Ind:=0 to ComboBox1.Items.Count-1 do
  begin
   Lab := TLabel.Create(Self);
   Lab.Parent := panel1;
   Lab.Name := 'Label'+IntToStr(Ind);
   Lab.Caption := ComboBox1.Items[Ind];
   Lab.Top := aTop;
   Lab.Left := 20;
   Inc(aTop,15);
  end;
end;


Yo también estoy con ustedes,sería bueno que nos de mas información.

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
  #19  
Antiguo 04-12-2008
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Muchas gracias por todo lo comentado hasta ahora. Es que tengo que insertar en un quick report todos los items que haya en el listbox pero que sean en qrtext distintos. Por eso queria pasarlos a variables de texto y de ahi asignarlos a los qrtext ( En un quick report). Lo que me doy cuenta ahora es que puedo asignarlos desde los items.

Los items estan en un formulario y el quick report en otro. Es para hacer facturas y necesito poner los productos que compre en lineas total mente distintas se ve?

Bien el problema restante es que los items los voy agregando yo y a veces son 50 items o aveces 2 se ve??

Igualmente gracias por todo...
Responder Con Cita
  #20  
Antiguo 04-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola amiguita

Esto es lo que no tenia en mente

Código Delphi [-]
Lab.Name := 'Label'+IntToStr(Ind);

Como hacer que el label tuviera otro nombre

gracias amiguita

Salud ITOS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
Comparar dos cadenas de texto creus Varios 5 06-03-2009 00:22:13
Convertir items de ListBox a String j_flores3000 OOP 3 24-11-2008 00:03:45
extraer cadenas de texto de archivo txt octalh Varios 4 30-03-2008 04:16:51
RARISIMO mismo codigo cosas distintas no modifica campo TEXTO Patricio Conexión con bases de datos 1 10-08-2005 21:29:53
Icono+Texto en ListBox Trigger OOP 1 19-01-2004 16:36:57


La franja horaria es GMT +2. Ahora son las 16:41:38.


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