No puedes declarar nada con sólo
TMiList, porque ese tipo de dato no existe. El tipo de dato, o clase, que estás definiendo se llama
TMiList<T>.
T, en este caso, es lo que se conoce como
parámetro de tipo, sólo válido para la definición del elemento genérico (una clase en este caso). Una vez definido el tipo genérico, el uso del mismo debe "parametrizarse", de tal forma que en el lugar de esa
T debes poner una de dos cosas:
1. Otro parámetro de tipo que esté al alcance del elemento que se está declarando. Y no lo hay, porque TForm1 no es una clase genérica (no define un parámetro de tipo en su cabecera).
2. Un tipo de dato concreto (Integer, TDataClass, etcétera).
En pocas palabras, no se puede definir una clase no genérica que declara un campo de tipo genérico, ya que el compilador no tendría manera de generar el código máquina específico para esa parte de la clase.
Si no necesitas que TForm1 esté disponible como formulario en el diseñador de Delphi, es decir, si fuera una definición de formulario 100% para tiempo de ejecución, entonces podrías declararla como
TForm1<T> y con ello transferir ese parámetro de tipo (
T) a la declaración del campo
FMiList y la propiedad
MiList. Una manera de solucionar el problema.
Espero haberme explicado.
Saludos.
Al González.