Ver Mensaje Individual
  #4  
Antiguo 16-09-2019
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Una forma fácil de hacerlo manualmente es mediante el uso de la propiedad tag:


Código Delphi [-]
procedure TForm1.Opcion(Form: TForm);
var
  Item: TMenuItem;
begin
  Form.Show;
  Item:= TMenuItem.Create(MainMenu1);
  Item.Caption:= Form.Caption;
  Item.Tag:= integer(Form);
  Item.OnClick:= VentanaOpcion;
  Form.Tag:= integer(Item);
  Ventanas.Add(Item);
end;


Y en los formularios secundarios colocar esto en el evento OnClose:
Código Delphi [-]
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  with Form1.Ventanas do
    Delete(IndexOf(TMenuItem(self.tag)));
  TMenuItem(self.tag).Free;
end;


Automatizar esto requiere algo mas de trabajo pero se puede hacer con un par de clases y realizando sunclassing del formulario principal y de los secundarios.




Saludos.
Responder Con Cita