La verdad no necesito hacer mayor cosa que saber en que posicion graficar el Lote de produccion y nada mas.
Por el momento lo he resulto con un array
Código Delphi
[-]TMaquinas = array of array of Integer;
y declaro
y a la hora de cargar las maquinas hago lo siguiente
Código Delphi
[-]
vItemPos:=0;
SetLength(vMaquinas1,2,NumeMaquinas);
plMapa.Positions :=NumeMaquinas;
plMapa.Header.Captions.Clear;
plMapa.Header.Captions.Add('Maq.');
while not qTraeCatalogos.Eof do
begin
vMaquinas1[0,vItemPos]:=qTraeCatalogos.FieldByName('IdMaquinas').AsInteger;
vMaquinas1[1,vItemPos]:=vItemPos;
vItemPos:=vItemPos+1;
plMapa.Header.Captions.Add('G'+Trim(qTraeCatalogos.FieldByName('Grupo').AsString)+' M'+Trim(qTraeCatalogos.FieldByName('NumRef').AsString));
qTraeCatalogos.Next;
end;
para cuando quiero graficar el lote ocupo una funcion que cree para hacer la busqueda en el array
Código Delphi
[-]function TMapaF.fBuscarItemPos(xIdMaquina):Integer;
var xItemPos,j:Integer;
begin
xItemPos:=-1;
j:=0;
while (j=High(vMaquinas1[0])) or (xItemPos<>-1) do
begin
if vMaquinas1[0,j] = xIdMaquina then xItemPos:=vMaquinas1[1,j];
j:=j+1;
end;
result:=xItemPos;
end;
y el IdMaquina no es incremental, bueno si...pero no grafico todas las maquinas, sino que pueden ser solo un rango cualquiera.
La verdad no son tantos lotes, son aproximadamente 5000 mensuales, el problema que al mantener eso en memoria con aproximadamente 50 usuarios conectados a la vez y graficarlo cada 2 minutos tengo temor de poner lento el sistema. Aunque por el momento no se refleja ni un milisegundo menos, pero en produccion pueda que sea otra historia y quiero estar preparado.
Probare el TObjectList.