Tener una sola instancia de una ventana hija en una aplicación

4948 vistas

Para tener sólo una instancia de una ventana hija (MDIChild) en nuestra aplicación, será necesario, antes de crear la nueva, asegurarnos de que no haya ninguna creada. Para hacerlo, podemos recorrer el array que contiene la referencia a las diferentes ventanas hijas existentes (código extraÃdo del proyecto de ejemplo AppMDI):



delphi
  1. procedure TMainForm.CreateMDIChild(const Name: string);
  2. var
  3.   Child: TMDIChild; //<- TMDIChild es la clase de la ventana hija
  4.   Nbr  : Integer;
  5.   i    : Integer;
  6. begin
  7.   Nbr := 0;
  8.   // recorremos el array de ventanas hijas
  9.   For i:= 0 To MDIChildCount-1 Do
  10.     If MDIChildren[i] is TMDIChild Then
  11.       Inc(nbr);
  12.   // creamos una nueva ventana hija si es necesario
  13.   if Nbr < 2 then
  14.   begin
  15.     Child := TMDIChild.Create(Application);
  16.     Child.Caption := Name;
  17.   // tratamiento....
  18.   end;
  19. end;