Hola Cadetill,
Leyendo lo que describes, no veo necesidad de crear frames basados en otro. A menos que dicho frames tenga alguna funcionalidad/características que difiera de uno a otro.
Yo sólo veo un solo Frame en el que se le asocia una imagen y un texto. En vez de crear tipos de Frame, yo entiendo que existe un TFrameAviso con un método CargarImagen() y CargarTexto() hipotético, o de forma más simple, con un
procedure TFrameAviso.CargarInfoDeAviso(Tipo Aviso: TipoAviso);
Este CargarInfoDeAviso recibiese como parámetro el tipo de aviso, de un tipo indicado. Puede ser string, numérico, el que gustes.
De ese modo cuando se Invoque a CargarInfoAviso() se le pasa el tipo.
Este CargarInfoAviso() buscará en la tabla el aviso en cuestión y sabrá que texto e imagen tener.
No veo el porqué molestarse con varios Frames, directamente uno sólo cuyo texto e imagen se cambie según algún parámetro que se reciba.
¿Me explico?
Yo me imagino una tabla algo así:
Tabla: TipoAviso
IDAviso (PK)
NombreAviso
NombreImagen
Texto
De modo que cuando se cree el frame (o cuando se visualize) que se haga la consulta, se lean el campo NombreImagen y Texto y se los ponga al frame.
Algo simple.... como:
procedure TFrameAviso.CargarInfoDeAviso(Aviso: string);
var img, texto: string;
begin
Consulta.SQL := 'select NombreImagen, Texto from TipoAviso where NombreAviso = ' + Aviso;
Consulta.Open;
img := Consulta.FieldByName(NombreImagen).AsString;
texto := Consulta.FieldByName(NombreImagen).AsString;
CargarImagen(img);
CargarTexto(texto);
end;
De ese modo un CargarTexto podría ser algo como:
procedure TFrameAviso.CargarTexto(Texto: string);
begin
TFrameLabelTexto.Caption := Texto;
end;
Ves... simple... no existen frames. Es uno solo... la información se extrae desde sea necesario y con ello en mano se altera el contenido del frame.
Es un ejemplo burdo, está sujeto a mejoras.
Ahora bien, si cada Frame cuenta con funcionalidades extras, y cuyo comportamiento varía de hermano a hermano, entonces si veo muy factible y necesaria la posibilidad de una Factoría. En tu caso, como se trata de la posibilidad que crezca a demanda, se necesita de la fábrica basada en *List (TList, TObjectList, TStringList, o cualquier otro "List") ya que éstos te permitirían añadir, modificar y eliminar tantos frames como gustes.
Sobre la posibilidad plugins, ya no te sabría decir.
Saludos,