Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
saber Item seleccionado en CheckListBox

Hola amigos

Tengo una aplicación que se conecta a MySQL, en uno de los campos el usuario pude seleccionar una o mas opciones por lo que uso un CheckListBox donde cargo en la propiedad Items los valores de mi base de datos.
Mi problema es el siguiente.
Necesito saber que Item el usuario seleccionó para agregarlo al DBEdit hasta el momento he tratado pero nada ha funcionado adjunto algo del código que he utilizado pero repito no funciona

Código:
for (int i = 0; i < CheckListBox1->Items->Count - 1; i++)
      {
           if (CheckListBox1->State[i]/*[CheckListBox1->ItemIndex]*/ == cbChecked)
           {
                DBEdit1->Text = DBEdit1->Text + "-" + CheckListBox1->ItemIndex ;
           }
           else
           {
                DBEdit1->Text = DBEdit1->Text + "-" + CheckListBox1->ItemIndex;
           }
      }
la idea es realizar un ciclo desde el primer item hasta el ultimo y se verifique cuales están seleccionado y los agregue al DBEdit, esto debe suceder cuando el usuario de un click en el componente para seleccionar una de las opciones.

CODE]void __fastcall TForm5::CheckListBox1Click(TObject *Sender)[/code]

Con ese codigo que acabo de postear obtengo el ItemIndex pero me lo repite tantas veces como Items halla.

Por el momento tengo puesto 8 Items

Gracias de antemano
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 30-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
El CheckListBox tiene el "Checked[n]" que te devuelve un Boolean si está o no Marcado, bueno esto no es C++, pero creo que lo podras traducir.
Código Delphi [-]
...
var
  nI: Integer;
begin
  for nI := 0 to (CheckListBox1.Items.Count -1) do
    if CheckListBox1.Checked[nI] then
      ShowMessage(CheckListBox1.Items.Strings[nI]);
end;
¿Esto es lo que estas buscando?

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #3  
Antiguo 30-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Impadron.

No me queda muy en claro lo que buscas hacer, según esto:
Cita:
Necesito saber que Item el usuario seleccionó para agregarlo al DBEdit
Podria ser:
Código:
void __fastcall TForm1::CheckListBox1Click(TObject *Sender)
{
 if(CheckListBox1->Checked[CheckListBox1->ItemIndex])
   DBEdit1->Text = DBEdit1->Text +
    CheckListBox1->Items->Strings[CheckListBox1->ItemIndex];
}
Pero según esto:
Cita:
realizar un ciclo desde el primer item hasta el ultimo y se verifique cuales están seleccionado y los agregue al DBEdit
Sería como te comentaron arriba:
Código:
  for(int i=0; i < CheckListBox1->Count; i++)
   if(CheckListBox1->Checked[i])
     DBEdit1->Text = DBEdit1->Text + CheckListBox1->Items->Strings[i];
  /* Limpiar la selección una vez agregados */
  for(int i=0; i < CheckListBox1->Count; i++)
    CheckListBox1->Checked[i] = false;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 30-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Código Delphi [-]
  for(int i=0; i < CheckListBox1->Count -1; i++)
   if(CheckListBox1->Checked[i])
     DBEdit1->Text = DBEdit1->Text + CheckListBox1->Items->Strings[i];
  /* Limpiar la selección una vez agregados */
  for(int i=0; i < CheckListBox1->Count -1; i++)
    CheckListBox1->Checked[i] = false;

ecfisa, le he añadido el -1 porque sino cuando esté en el último dará un error de fuera de rango.

Es alucinante C++, me encantaría aprender otro lenguaje aparte de Delphi, pero el tiempo, juega en contra, al final lo aprenderé.

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 30-11-2011 a las 23:43:36.
Responder Con Cita
  #5  
Antiguo 30-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Cita:
ecfisa, le he añadido el -1 porque sino cuando esté en el último dará un error de fuera de rango.
Así sería si estuviesemos tratando con un for de Pascal, pero en C/C++ el for tiene un comportamiento algo diferente:
Código:
 
 for(int i=0; i < CheckListBox1->Count; i++)
El valor de i nunca va a llegar a ser CheckListBox1->Count ya que el ciclo finaliza antes de que sea igual, en este caso lo hace exáctamente cuando i es igual a CheckListBox1->Count -1 (el incremento de i es de 1).

Si agregamos el -1:
Código:
  for(int i=0; i < CheckListBox1->Count - 1; i++)
Estaríamos recorriendo n -2 items del CheckListBox (quedaría el último sin evaluar).

Cita:
Es alucinante C++, me encantaría aprender otro lenguaje aparte de Delphi, pero el tiempo, juega en contra, al final lo aprenderé.
De acuerdo con vos

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-12-2011 a las 00:10:50.
Responder Con Cita
  #6  
Antiguo 01-12-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Perdona mi ignorancia en el lenguaje C++, pensaba que era lo mismo.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #7  
Antiguo 01-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Hombre... que no hay nada que perdonar

Espero que muy pronto te den los tiempos para empezar con él.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 01-12-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Impadron.
Cita:
No me queda muy en claro lo que buscas hacer (...)
Lo que busco hacer es lo siguiente, en el CheckListBox1 cargo los valores de una tabla y el usuario puede seleccionarlos todos uno o varios, una ves seleccionados los guardo en un campo de otra tabla para agregarlos como valores a un Combobox.

Cita:
Pero según esto:

Sería como te comentaron arriba:
Código:
  for(int i=0; i < CheckListBox1->Count; i++)
   if(CheckListBox1->Checked[i])
     DBEdit1->Text = DBEdit1->Text + CheckListBox1->Items->Strings[i];
  /* Limpiar la selección una vez agregados */
  for(int i=0; i < CheckListBox1->Count; i++)
    CheckListBox1->Checked[i] = false;
El código funciona perfecto (me da pena no haber llegado a esa solución por mi mismo

pero con el segundo FOR la idea no era que limpiara el CheckListBox sino los valores que se guardaron en el DBEdit o sea que cada ves que se cambia el CheckListBox si se selecciona un valor pues este sea agregado (como hace el primer FOR) o que sea quitado del DBEDIT.
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #9  
Antiguo 01-12-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
O sea concretamente seria como determinar si el item esta Checked o no para saber si agregamos ese campo o lo quitamos de los que ya están y la forma de quitarlo (q eso no me queda muy claro).

Cita:
Empezado por olbeup Ver Mensaje
Es alucinante C++
Cita:
Empezado por ecfisa Ver Mensaje
De acuerdo con vos
De paso Gracias a ambos por ayudarme y obviamente coincido jajajajaja, espero yo también poder aprender en elgún momento algo de c++ !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________

Última edición por lmpadron fecha: 01-12-2011 a las 17:04:22.
Responder Con Cita
  #10  
Antiguo 01-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Impadrón.

Cita:
pero con el segundo FOR la idea no era que limpiara el CheckListBox sino los valores que se guardaron en el DBEdit
Entonces creo que bastaría con:
Código:
 for(int i=0; i < CheckListBox1->Count; i++)
   if(CheckListBox1->Checked[i])
     DBEdit1->Text = DBEdit1->Text + CheckListBox1->Items->Strings[i];
  /* 
   Operaciones necesarias con DBEdit1 
   ...
  */
  DBEdit1->Text = "";
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 01-12-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Impadrón.

Entonces creo que bastaría con:
Código:
(...)
  DBEdit1->Text = "";
Pues si, tenias razón (como siempre !!! jajaja) solo con una pequeña modificación y funciona perfecto

Código:
      DBEdit1->Text = "";
      for(int i=0; i < CheckListBox1->Count; i++)
      {
       if(CheckListBox1->Checked[i])
       {
        DBEdit1->Text = DBEdit1->Text + "-" + CheckListBox1->Items->Strings[i];
       }
      }
De esta forma limpio el DBEdit primeramente luego recorro con el ciclo cada item del CheckListBox y si esta seleccionado es agregado al DBEdit. De esta forma si al dar click se deselecciona un Item se remueve este del DBEdit

Saludos y gracias por su ayuda
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________

Última edición por lmpadron fecha: 01-12-2011 a las 17:14:55.
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
ComboBox ítem que está seleccionado belen Varios 7 05-09-2016 19:44:11
Detectar el item seleccionado en RadioButton santiago14 Varios 1 23-02-2010 17:37:11
Ocultar item en CheckListBox dgcn OOP 4 26-07-2008 01:07:15
cómo saber en una listview el item que está visible (no seleccionado) en cada momento igc C++ Builder 1 16-02-2007 19:25:52
Como mando item seleccionado Ricardo Alfredo HTML, Javascript y otros 3 11-01-2007 02:05:11


La franja horaria es GMT +2. Ahora son las 02:36:33.


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