Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como puedo seleccionar varias opciones (https://www.clubdelphi.com/foros/showthread.php?t=32680)

esimon 13-06-2006 14:33:22

Como puedo seleccionar varias opciones
 
Muy buen dia, me gustaria saber si hay alguna forma o componente que me permitar hacer multiple selecciones usando un solo campo, como el DBRadioGroup.

Ej. si tengo un campo XXXX, si utilizo un DBRadioGroup con diferentes opciones me permitan seleccionar 2, 3 ó N Opcion.

Bicho 13-06-2006 14:45:34

Hola, pues puedes usar el componente TCheckListBox está en la pestaña Additional, que hace exactamente lo que pides. Tienes una lista con las posibles opciones y una casilla de marcado a la izquierda de cada una, y puedes ir marcando/desmarcando cada una. Luego para saber si una opcion esta escogida o no, basta que recorras los items de componente y preguntes si el item está marcado de esta forma
Código Delphi [-]
if checklistbox1.items[1].checked then ....

Espero te sirva.

Saludos

esimon 13-06-2006 15:06:56

Mil gracias por la informacion creo que con este componente puedo resolber un problema, pero como lo relaciono con el compo da la tabla para fine de reportes.

disculpa la pregunta es que no tengo ni la mas nimima idea de como hacerlo.

Bicho 13-06-2006 15:54:44

Cuando te respondí me imaginé que querrías usarlo con datos de una base de datos. Ahí ya no te puedo ayudar porque no tengo los componentes necesarios, quizas algún componente del tipo Rx o alguno que puedas bajarte de torry. Quizás algun compañero del foro tenga alguna idea, mi trabajo poco hago con bases de datos y los datos se cargan en unos componentes nuestros.

Saludos y que tengas suerte

esimon 13-06-2006 16:02:45

mil gracias bicho por la informacion
pasa un feliz resto del dia

Lepe 13-06-2006 16:06:36

La propiedad Items del TCheckListBox son de tipo TStrings, por tanto se puede almacenar un puntero al objeto que quieras, imagina algo así:

Código Delphi [-]

// rellenamos el CheckListbox con todos los nombres de campos, y además
// guardamos la referencia al campo tabla.Fields[i]
for i:= 0 to Tabla.Fields.count -1 do
begin
  CheckListbox.items.AddObject (tabla.[Fields[i].DisplayName, TObject(tabla.Fields[i]));
end;

// ahora recorremos el checklistbox mirando si está marcada su casilla y
// mostramos el valor que tiene el registro activo de la tabla.

for i:=0 to checklistbox.items.count-1 do
begin
  if checklistbox.checked[i] then
     ShowMessage( TField(checklistbox.objects[i]).AsString);
end;

Con checklistbox.Objects, realmente estamos accediendo al campo de la tabla, pero el TStrings solo guarda un TObject, así que hacemos un moldeo de tipos con TField( ....) para decirle a delphi que lo trate como un TField.

esimon 13-06-2006 17:13:11

Mucha gracias lepe, por la informacion es sierto aqui se puedo hacer muchas cosas que peno que desconosco tanto en Delphi.

Lepe 14-06-2006 09:21:11

No te apures, el foro es un buen sitio para aprender estas cosas complicadas, o al menos, para tomar ideas, despues, "masticar" el código es cosa tuya, y si tienes dudas, siempre puedes preguntar.

Saludos


La franja horaria es GMT +2. Ahora son las 14:19:32.

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