Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Arreglo de componentes (https://www.clubdelphi.com/foros/showthread.php?t=8227)

jzginez 13-03-2004 20:51:22

Arreglo de componentes
 
Hola a todos les esplico un poco, uso delphi 6 y tengo una base de datos en acces a la cual me conecto usando ADO, esta base es para una fabrica textil, tengo una tabla donde hay un registro por cada orden de venta, prenda, cliente, talla y la cantidad que hay que hacer por cada talla. para efectos de un reporte tengo una consulta de agrupación de esta tabla en la cual tengo como resultado 1 campo fijo que es el tipo de prenda ademas de n campos por cada talla de la prenda con la cantidad corespondiente:

Ejemplo de la tabla

Orden claveprenda clavecliente talla cantidad
1 qwe123 8 M 45
2 qwe123 8 S 25
3 dfg12 7 M 15
4 qwe123 4 S 25

Ejemplo resultado de la consulta

claveprenda M S
qwe123 45 50
dfg12 15 0

Pero si tuviera

claveprenda clavecliente talla cantidad
qwe123 8 7 45
dfg12 8 7 15

tendria como resultado de la consulta

claveprenda 7
qwe123 45
dfg12 15

como podran ver en mi consulta tengo como resultado solo un campo fijo y uno o mas campos que pueden variar tanto el numero de estos como su nombre segun las tallas. Ahora bien la fabrica maneja hasta 25 tallas diferentes estoy haciendo un reporte con qreport en el cual pongo 25 qrlabel para los nombres de columnas y 25 QRDBText para el valor del campo, pero como el unico campo que nunca cambia es claveprenda a los QRDBText no les puedo asignar la propiedad datfield en tiempo de diseño ya que puede que cuando ejecute la consulta este campo no exista o este en diferente posición (lo cual no seria tan problematico).

Problema:

Lo que quiero hacer es un arreglo con los QRLabel y otro con QRDBText para así con un ciclo (for o while) poderles asignar a la propiedad caption y datafiel respectivamente el valor necesario y a los restantes poner la propiedad visible en false en tiempo de ejecución.

:confused: hojala alguien me pueda orientar de como hacer esto o de plano decirme si fume algo raro y esto no se puede :p , lo tendria que hacer con un if para cada componente.

gracias

jachguate 13-03-2004 22:17:39

Podes valerte del método FindComponent.

Código:

for i := 1 to MaxTallas do
Begin
  (FindComponent('qrlTitulo' + inttostr(i)) as TQrLabel).Caption := Talla[i];
  (FindComponent('qrdbText' + intToStr(i)) as TQrdbText).DataField := 'Talla' + inttostr(i);
End;

Hasta luego.

;)

jzginez 13-03-2004 23:02:21

Eso es todo jachguate (my master) gracias me has ahorrado muchas lineas de código


La franja horaria es GMT +2. Ahora son las 20:47:15.

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