PDA

Ver la Versión Completa : Manejo de CheckListBox


juan_3cool
06-06-2007, 01:33:10
Buenas
Primero me presento ya que soy nuevo en el foro. Soy juan de la plata, Bs As

Necesito ayuda!

El tema es el siguiente: tengo que usar un CheckListBox para mostrar ciertos datos de unas tablas. Al lado del CheckListBox hay una grilla q muestra informacion relacionada a las opciones del ChekListBox, osea clikeo en una opcion (es decir le pongo la propiedad checked en true) y en la grilla se va a mostrar tal informacion. Y tambien lo hago multiselect o sea q se pueden clikear mas de 1 opcion a la vez.
Lo que desconozco es como saber que opcion fue la que clikee ya sea que la habilite o la deshabilite.
Habia pensado en el evento OnCLickCheck, hacer esto:

For i:= 0 to CheckListBox1.Items.Count-1 do
begin
If (CheckListBox.checked = true) then
...................
...................

O sea recorrerlo todo pero el tema es que si pregunta de una opcion que ya esta en verdadera me va a duplicar la informacion de la misma en la grilla.

Para resumir, quiero saber como hacer para saber dentro del proceso cuales opciones clikeo dentro del CheckListBox

Les agradeceria sus respuestas..

saludos!

roman
06-06-2007, 03:03:52
Creo que no hay necesidad de recorrer todos los elementos cada vez:


procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
Index: Integer;
Item: String;

begin
Index := CheckListBox1.ItemIndex;
Item := CheckListBox1.Items[Index];

if CheckListBox1.Checked[Index] then
ListBox1.Items.Add(Item)
else
begin
Index := ListBox1.Items.IndexOf(Item);
ListBox1.Items.Delete(Index);
end;
end;


En este ejemplo, el listbox contendrá los elementos del checklistbx que estén marcados.

// Saludos

cHackAll
06-06-2007, 03:07:26
Aca está la propiedad que necesitas:


...

for i := 0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked[i] then
begin

...



O en su defecto:


...

if CheckListBox1.Checked[CheckListBox1.ItemIndex] then
begin

...



Seas bienvenido!