PDA

Ver la Versión Completa : ¿Cómo se puede evitar que se seleccionen varios campos en un CheckListBox?


nuri
27-07-2005, 16:47:54
Hola a todos.
¿Cómo se puede evitar que se seleccionen varios campos en un CheckListBox?
Sólo quiero que se selccione uno, en el caso de que se seleccione otro que se deseleccione el anterior seleccionado.
En el caso de ListBox existe la propiedad MultiSelect pero en CheckListBox no la tengo.
Tengo el Delphi5.
¿Existe una propiedad análoga con otro nombre en CheckListBox?
Muchas gracias a quien pueda ayudarme.;)
Atentamente
Nuri

delphi.com.ar
27-07-2005, 16:53:29
Es que la filosofía de los checks, es que se pueda seleccionar mas de uno. Por el contrario los Options solo se podrá seleccionar uno por grupo. ¿Porqué no utilizas un TRadioGroup?

Use TRadioButton to add a radio button to a form. Radio buttons present a set of mutually exclusive options to the user- that is, only one radio button in a set can be selected at a time. When the user selects a radio button, the previously selected radio button becomes unselected.

Saludos!

ContraVeneno
27-07-2005, 16:56:01
incluso tambien usar un listbox...

nuri
27-07-2005, 17:08:00
Es que ListBox no tiene la propiedad CheckBox y quiero manipular el campo que se elija.
RadioGroup no me interesa ya que no sé cuántos items va a tener ya que se completa de forma dinámica y la lista puede ser amplia.Bueno si RadioGroup tuviera barras de desplazamiento...
Muchas gracias por sus prontas respuestas.
Atentamente
Nuri

ContraVeneno
27-07-2005, 17:13:18
la propiedad Selected del listbox sirve para saber cuál elemento esta seleccionado....

eso es lo que yo utilizaría para manipularlo...

delphi.com.ar
27-07-2005, 17:13:44
Es que ListBox no tiene la propiedad CheckBox y quiero manipular el campo que se elija.
No tiene la propiedad checkbox, pero creo que queda mas que claro cual es el item seleccionado (Pintado)

dec
27-07-2005, 17:14:46
Hola,

A ver si esto te da alguna idea: se trata de utilizar el evento "ClickCheck" de un "TCheckListBox" para hacer que este se asemeje a unos radio-botones: solamente y siempre habrá un elemento "marcado". Puede acaso darte alguna idea para lo que quieres hacer, creo:


procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
i,j: integer;
begin
// Elemento seleccionado
i := CheckListBox1.ItemIndex;
if i = -1 then Exit; // Salimos si no lo hay
// Recorremos todos los elementos
for j := 0 to CheckListBox1.Items.Count-1 do
if i <> j then // Los que no sean el seleccionado...
CheckListBox1.Checked[j] := false; // se desmarcan
// Habrá siempre un elemento marcado
if not CheckListBox1.Checked[i] then
CheckListBox1.Checked[i] := true;
end;

nuri
27-07-2005, 17:36:11
Okis, ya lo tengo.

Finalmente lo he hecho con ListBox, que no sabía que tenía la propiedad Selected, con esto he solucionado mi problema.
Muchas Gracias a todos.;)
Atentamente
Nuri