En mi form principal tengo un panel (pnGraficos) dentro de ese panel voy a crear 1, 2 o tres frames, para eso uso este codigo (por pruebas uso el click de un boton y estoy creando 3):
delphi
procedure TfmInicio.Button1Click(Sender: TObject); var i: integer; begin for I := 1 to 3 do begin with TfrGrafica.Create(pnGraficos) do begin Parent := pnGraficos; case i of 1: begin Left := 4; Top := 4; Height := 180; Width := pnGraficos.Width - 6; Name := 'Bascula' + IntToStr(i); end; 2: begin Left := 4; Top := 181; Width := pnGraficos.Width - 6; Name := 'Bascula' + IntToStr(i); end; 3: begin Left := 4; Top := 362 ; Width := pnGraficos.Width - 6; Name := 'Bascula' + IntToStr(i); end; end; end; end; end;
Me entendieron?
Dentro del case en la propiedad TOP de cada frame le asigno un valor fijo. En el caso del primero creado pues es obligatorio, pero en los otros dos, por ejemplo el segundo, ¿como hago la referencia a Grafico1.Height? es decir si quisiera hacer algo como esto:
delphi
//Para Grafico2 Top := Grafico1.Height + x;