Ver Mensaje Individual
  #1  
Antiguo 16-05-2013
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Reputación: 13
jocaro Va por buen camino
Crear varios objetos de un mismo tipo

Hola

En mi aplicación tengo un botón que, cada vez que se pulsa, genera un nuevo objeto con una determinada información. El código es el siguiente

Código Delphi [-]

procedure TSDIAppForm.VentanaNotaClick(Sender: TObject);
var
  sVacio: String;
  tnNodAux: TTreeNode;
  Stream: TStream;
  iLonMat: Integer;
begin

  iLonMat := length(agVentNot);
  SetLength(agVentNot, iLonMat + 1 );

  { Creación de form para ver una nota (se crea un form cada vez que se
    selecciona una nota) }
  agVentNot[iLonMat] := TFrmVerNota.Create(Application);

  { Escribir camino de la nota en cabecera de la ventana }
  tnNodAux := ArbolElementos.Selected;
  agVentNot[iLonMat].Caption := CaminoArbolElementos( tnNodAux, sVacio );

  { Cargar nota en visor TRichView }
  Stream := FrmBasDat.TablaNotas.CreateBlobStream(FrmBasDat.TablaNotas.FieldByName('DesNot'), bmRead);
  agVentNot[iLonMat].RVVerNota.LoadRVFFromStream(Stream);
  agVentNot[iLonMat].RVVerNota.Format;

  agVentNot[iLonMat].Visible := True;

  Stream.Free;

end;


unit VerNota;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,RVScroll, RichView, RVEdit, DBRV, RVStyle,
  RVStr;
type
  TFrmVerNota = class(TForm)
    RVVerNota: TRichView;
    EstiloVerNota: TRVStyle;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmVerNota: TFrmVerNota;

implementation

uses
  BasDat;

{$R *.dfm}

end.

Mis dudas son las siguientes:

¿Existe una forma mas elegante de hacerlo que asignándolo a una matriz?
¿Se podría hacer con un objectlist, por ejemplo? En ese caso, ¿como podría ver las propiedades, variables, etc. del objeto, utilizados en el código anterior, ya que lo he intentado y no lo consigo?

¿Al cerrar cualquiera de los forms generados, mediante el aspa de la parte superior derecha, se libera el objeto de éste o hay que mandar un close en el evento FormClose?

Gracias por vuestra atención
Responder Con Cita