PDA

Ver la Versión Completa : Asignacion multiple a varios componentes


noseii
02-05-2007, 11:26:19
Buenos dias, estoy haciendo un pequeño programa que controla los datos desde un dispositivo exterior conectado por usb, este aparato tiene una dll con una funcion que me devuelve en una tabla los niveles de los datos recogidos, unos 500 niveles mas o menos, de los valores de la tabla se los paso un componente progessbar para mostrar los niveles. Esta asignación de momento la estopa haciendo de la siguiente manera:
progressbar1.position := tabla_niveles[0];
progressbar2.position := tabla_niveles[1];
.
.
.
progressbar512.position := tabla_niveles[511];

Pero esto me parece un poco chapuza, alguna vez he hecho que varios botones hagan la misma funcion y dependiendo que boton pulsaras cambiar identificarlo.
Alguien me podria decir como podria hacer esto de una forma mas elegante.

muchas gracias a todos por vuestra ayuda.

Bicho
02-05-2007, 11:48:25
Hola,

antetodo, bienvenido al clubdelphi.

¿¿Estas usando 500 progressbar en tu form para mostrar los niveles??
¿No sería más fácil usar un componente TChart, es decir un gráfico de barras para mostrar todos esos valores?
Creo recordar que no es muy difícil usarlo y además con muchas opciones de personalización e integración con base de datos desde la paleta DBControls.

Si aún así deseas usar las progresbar, puedes probar de usar una matriz de componentes, si buscas por los terminos "matriz" y "componentes" encontrarás no pocos hilos al respecto.

Saludos

Neftali [Germán.Estévez]
02-05-2007, 12:03:28
No he entendido bien como muestras los datos, pero seguro que hay una forma más sencilla y eficiente de mostrar esoss datos que con 500 controles.

MaMu
02-05-2007, 12:30:25
Idependientemente de la cantidad de bits que reciba la aplicacion, creo que deberias hacerlo por muestreo aprovechando al maximo la dll. Sobre 512 mediciones, tendrias que hacer un bucle y directamente llenar alguna tabla con los valores. Se puede preguntar de que es? Pareciera ser el resultado de un conversor AD, o varios.

Saludos

noseii
02-05-2007, 16:16:39
gracias por vuestras respuestas, haber si puedo explicarme bien, a lo que comenta Bicho, seria una solucion pero a cada barra de progreso va a sociado un componente trackbar para ajustar los niveles, que a parte de recibir datos tambien los envio. por eso el tchart no lo veo un opcion para mostrar tanto dato. Pero aun asi muchas gracias por tu ayuda. En respuesta a Neftali, imaginate una mesa de sonido con los vumeters de indicacion de nivel, mas o menos ese efecto es el que busco. y con respecto a la respuesta de Manu, claro que te puedo decir para que es, el programa es para el control y manejo de luces para discotecas conciertos, etc, Esto funciona bajo el protocolo DMX-512, y como el nombre inbdica es un protocolo que utliza 512 canales de envio de informacion, mandando un valor de nivel entre 0 y 255. El tema de la dll es del fabricante del conversor de usb a dmx y esta compuesta de una unica fuincion y varios parametros, con el parametro de recepcion de datos pasa los niveles de los 512 canales a un tabla de tipo char de 515 filas. La opcion del blucle me parece bien pero para el envio, en la recepcion es donde tengo el problema al mostrar esa información al usuario.

Muchas gracias por toda vuestra ayuda

noseii
02-05-2007, 17:44:34
Creo que ya he encontrado la solucion, gracias bicho por indicarme lo que tenia que buscar :D , he busca en el foro por matriz y componetes y he encontrado varias cosas,e encuanto llege a la oficina las pruebo y ya dire

muchas gracias a todos. :D :D :D

Bicho
02-05-2007, 18:15:19
Hola,

entendí que sólo querías mostrar unos datos y no manipularlos y por tanto modificarlos. Al creer esto lo primero que me vino a la cabeza era un gráfico, muy sencillo y fácil de usar para este caso.
Pero tambien había la parte de código que diste:

progressbar1.position := tabla_niveles[0];
progressbar2.position := tabla_niveles[1];
.
.
.
progressbar512.position := tabla_niveles[511];


Para hacer eso está claro que hay que usar una matriz de componentes. Y te será muy cómodo usarlo para mostrar todos los componentes progressbar y los trackbar para definir los valores de entrada.
Quizá si hubieras indicado ésto último desde un principio mi respuesta y la de los demás hubiera sido otra, ya que he notado por las respuestas de los demás que no había queda muy claro lo que pretendías.

Me alegro que te haya servido.

Saludos