FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
cambiar Chequed de Item determinado en CheckListBox
Hola amigos
Recientemente tube una dificultad y la pregunté aquí pero como indica nuestra guía de estilo ... solo una pregunta por hilo ... les relaciono mi siguiente pregunta en este hilo !!! En el hilo anterior me explicaron como obtener el valor del Item seleccionado en un CheckListBox ... gracias !!! Esto me permite saber que selecciona el usuario y asi guardarlo en un DBEdit, bien ahora el problema es el siguiente, cuando el usuario no esta insertando datos en la BD, o sea, cuando esta moviendose en la base de datos (ADOQuery1AfterScroll) quisiera que se visualizara en el CheckListBox cuando los campos estan seleccionado. Como este componente no es de tipo DB entonces lo que se me ocurre es atrapar los valores que estan en la BD en algun otro componente o variable (en este caso para tratar de hacerlo use un Combobox) Código:
ComboBox1->Items->Clear(); ComboBox1->Items->Delimiter = '-'; ComboBox1->Items->DelimitedText = ADOQuery1->FieldByName("norma")->Text; Este es el código que uso, aqui hago un ciclo pasando por el CheckListBox y al pasar por cada uno de sus Items paso con otro ciclo por todos los Items del ComboBox y con una condición compruebo (o al menos trato jejeje de comprobar) si son iguales iguales, para en caso de serlo entonces chequearlo. Por supuesto no funciona !!! Código:
for(int i = 0; i < CheckListBox1->Count; i++) { for(int o = 0; o < ComboBox1->Items->Count; o++) { if (ComboBox1->Items[o].Text == CheckListBox1->Items->Strings[i]) CheckListBox1->Checked[i] == true; } } Código:
--------------------------- Debugger Exception Notification --------------------------- Project VB.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- Mis preguntas en concreto son... como puedo hacer que los Items que tengo en el Combo se seleccionen en el CheckListBox y si puedo usar algún otro tipo de variable para no poner un combo 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_ ________________________________________________________________________________ Última edición por lmpadron fecha: 01-12-2011 a las 23:17:11. |
#2
|
||||
|
||||
Hola Impadron.
Si no te entendí mál, podrías hacer: Código:
... { TCheckListBox *CLB = static_cast<TCheckListBox*>(CheckListBox1); TComboBox *CB = static_cast<TComboBox*>(ComboBox1); int ix; for(int i = 0; i < CB->Items->Count; i++){ ix = CLB->Items->IndexOf(CB->Items->Strings[i]); CLB->Checked[ix] = ix != -1; } }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Hola
la solución del amigo ecfisa dio este error Código:
--------------------------- Debugger Exception Notification --------------------------- Project VB.exe raised exception class EListError with message 'List index out of bounds (-1)'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- El combo me carga el primer item en blanco al parecer el delimitador al ser pasado recoje el primer elemento y lo pasa en blanco (nulo) así que lo elimino con esta instrucción. Código:
ComboBox1->Items->Delete(0); les dejo el código de la forma en que quedo Código:
if (Form5->Active == true) { int c; if (DBEdit1->Text != "") { ComboBox1->Items->Clear(); ComboBox1->Items->Delimiter = '-'; ComboBox1->Items->DelimitedText = ADOQuery1->FieldByName("norma")->Text; ComboBox1->Items->Delete(0); TCheckListBox *CLB = static_cast<TCheckListBox*>(CheckListBox1); TComboBox *CB = static_cast<TComboBox*>(ComboBox1); int ix; for(int i = 0; i < CB->Items->Count; i++) { ix = CLB->Items->IndexOf(CB->Items->Strings[i]); CLB->Checked[ix] = ix != -1; } } }
__________________
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_ ________________________________________________________________________________ |
#4
|
||||
|
||||
Hola Impadron.
Realmente no había entendido bién lo que estabas buscando hacer, ahora creo que sí... A ver si estoy en lo cierto, a medida que te desplazas por la tabla los items del CheckListBox deben poner su propiedad Checked a true o false según existan o nó en el campo "norma". De ser así se puede simplificar a una sola función: Código:
void __fastcall TForm1::ADOQuery1AfterScroll(TDataSet *DataSet) { TStringList *TS= new TStringList; __try { TS->Delimiter = '-'; TS->DelimitedText = ADOQuery1->FieldByName("norma")->Text; for(int i = 0; i < CheckListBox1->Count; i++){ CheckListBox1->Checked[i] = TS->IndexOf(CheckListBox1->Items->Strings[i]) != -1; } } __finally { delete(TS); } }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 03-12-2011 a las 17:49:48. Razón: corregir identación |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
saber Item seleccionado en CheckListBox | lmpadron | C++ Builder | 10 | 01-12-2011 16:11:31 |
Acción al hacer clic un determinado item de un TTreeview | namtaxonlabs | OOP | 6 | 29-08-2010 10:31:54 |
Ocultar item en CheckListBox | dgcn | OOP | 4 | 26-07-2008 00:07:15 |
Cambiar la fuente a un solo Item de un TreeView! | fide | API de Windows | 2 | 03-02-2008 09:00:40 |
Cambiar el color al Scroll de un CheckListBox | lu9eui | Varios | 2 | 23-07-2007 01:06:19 |
|