Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Uso del listbox.... (https://www.clubdelphi.com/foros/showthread.php?t=35560)

WilloW 13-09-2006 22:51:55

Uso del listbox....
 
Holas que tal tengo una pregunta (disculpen si no me expreso bien), la cosa es asi tengo 2 listbox, 2 gauges y 2 botones. En el listbox1 añado 2 items uno llamado Gauge 100%(en la posicion 0 del itemindex) y otro llamado Gauge 10%(en la posicion 1 del itemindex). En uno de los botones pongo esto
Código Delphi [-]
If listbox1.itemindex = 0 then
               begin
                      listbox2.items.add('Gauge 100%');
               end
               else
                     listbox2.items.add('Gauge 10%');
               end;
En el otro pongo lo siguiente
Código Delphi [-]
If listbox2.itemindex = 0 then
   begin
          gauge1.progress:=100;
   end;
If listbox2.itemindex = 1 then
   begin
          gauge2.progress:=100;
   end;
La pregunta es la siguiente: como veran el 1º boton lo que hace es agregarle un item al listbox bla bla bla... eso es lo que menos me interesa, ahora el segundo boton lo que hace es ver si el itemindex seleccionado es el 0 el progress del gauge1 pasa a ser 100% y si el itemindex es 1 el progress del gauge2 pasa a ser 100%,ahora cual es mi problema se preguntaran? Mi problema es que quiero hacer es lo siguiente quiero que el programa respete un orden que se le ponga en el listbox, porque si en el itemindex 0 del listbox2 agrego el item Gauge 10% lo 1º que se ejecutara es esto
Código Delphi [-]
If listbox2.itemindex = 0 then
   begin
          gauge1.progress:=100;
   end;
Por si no me entienden lo explico de la siguiente manera (por las dudas xD): yo lo que quiero que el programa haga es que respete un orden que el usuario le ponga al listbox por ej que si el usuario quiere que 1º se ponga el gauge2 a 10% se ponga y no que se ponga el gauge1 a 100%.

Gracias y Salu2

PD: disculpen si no me exprese bien :p cualquier cosa pregunten que se lo intento explicar mejor ^^

maeyanes 13-09-2006 23:05:44

Puedes probar con esto:

Código Delphi [-]
// Agregar datos a los listbox:
ListBox1.AddItem('Gauge 10%', TObject(10));
ListBox1.AddItem('Gauge 100%', TObject(100));

// Obtener el valor para el gauge:
Gauge1.Progress := Integer(ListBox1.Items.Objects[0])


Saludos...

WilloW 13-09-2006 23:17:37

No entiendo que es lo que hace eso??

xEsk 14-09-2006 02:49:55

Lo q hace el codigo puesto por maeyanes es añadir los items con un "objeto asociado", q contiene un valor "Integer" (entero).

Asi pues al hacer click encima de uno de los items del ListBox1 (por ejemplo) puedes obtener su valor y asignarselo al Gauge.

Código Delphi [-]
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Gauge1.Progress := Integer(ListBox1.Items.Objects[ListBox1.ItemIndex]);
end;

Pero de todos modos no entiendo muy bien q es lo q quieres hacer, hehe, si puedes explicarlo de otra forma, te podria ayudar mas hehe.

Saludos.

maeyanes 14-09-2006 15:22:45

Primero que nada, una pequeña disculpa por lo poco parco de mi mensaje anterior. Ya iba de salida del trabajo así que solo puse como lo podrías hacer pensando que te ayudaría de esa forma.

Como bien menciona xEsk, el método AddItem del TListBox te permite agregar un elemento a la lista con un objeto asociado, al pedir como segundo parámetro un TObject hacemos un casting para que acepte el tipo Integer:

Código Delphi [-]
ListBox1.AddItem('Gauge 100%', TObject(100));

Ya teniendo los elementos en el listbox con un objeto asociado, al momento de obtener estos valores, usamos la propiedad Items, que contiene un arreglo con los objetos asociados a los elementos. Los valores de este arreglo se obtienen así:

Código Delphi [-]
  Gauge1.Progress := Integer(ListBox1.Items.Objects[ListBox.ItemIndex]); // Se hace un casting a Integer ya que este es el tipo de datos original.

Con todo esto te ahorras tener un if para comprobar el ItemIndex de cada elemento y también resuelves tu problema de que no importe en que orden metes los porcentajes al listbox.



Saludos...

WilloW 14-09-2006 21:40:54

Muchas gracias ahora lo voy a probar a ver si me sirve con lo que estoy haciendo ya que lo del guage era solo un ejemplo :D cualquier cosa aviso. Salu2!!


La franja horaria es GMT +2. Ahora son las 12:49:48.

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