Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   crear varios form al iniciar la aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=60513)

FGarcia 04-10-2008 04:10:16

crear varios form al iniciar la aplicacion
 
Hola!

Al iniciar delphi 7 (no conozco versiones anteriores) se activa la ventana principal que contiene a los componentes, ademas se activan la ventana del inspector de objetos y la ventana del Object TreeView (bueno al menos en el mio) ¿eso como se hace? ¿En el evento OnCreate del form principal se crean los otros forms? Estuve buscando por "Dock", "Acoplable" pero no encontre una respuesta para lo que quiero. Se agradece la ayuda

egostar 04-10-2008 04:21:00

Hola

Puedes usar Form2.Show en el evento OnShow del Form1

Ademas de indicar como y donde quieres que se vean, por ejemplo Form1.Align = alTop y Form2.Align = alLeft ;)

Salud OS

FGarcia 04-10-2008 16:38:25

Gracias por la respuesta de hecho asi lo resolvi, ahora me gustaria saber como hacer que si la ventana principal se mueve entonces la ventana secundaria se mueva con ella :o jaja ando medio zafado!!

Editando solo para dejar la constancia:

En el form principal en su evento OnShow:

Código Delphi [-]
//"Simulo" hacer click en el item de menu miGrafica
miGrafica.Click ;

En el ActionList se ejecuta esta accion al hacer click en el item de menu miGrafica. Verifico si ya existe el form frmPlot, si existe y esta minimizado
lo regreso a su tamaño normal y lo traigo al frente, en caso de no existir lo creo.

Código Delphi [-]
{ActionList1 OpenPlot}
procedure TfrmVistaPrincipal.OpenPlotExecute(Sender: TObject);
begin
  if Assigned (frmPlot) then
    begin
      if frmPlot.WindowState = wsMinimized then
        frmPlot.WindowState := wsNormal;
      frmPlot.BringToFront;
    end
  else
    frmPlot := TfrmPlot.Create (Application);
  frmPlot.Show;
end;

En el form frmPlot en su evento OnClose y OnCreate

Código Delphi [-]
procedure TfrmPlot.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmPlot := nil;
end;

procedure TfrmPlot.FormCreate(Sender: TObject);
begin
  Top := frmVistaPrincipal.Top + frmVistaPrincipal.Height + 1;
  Left := frmVistaPrincipal.Left ;
end;

Como siempre quedo abierto a sugerencias para mejorar el codigo.

Saludos!!

Caro 04-10-2008 20:04:42

Cita:

Empezado por FGarcia (Mensaje 318178)
ahora me gustaria saber como hacer que si la ventana principal se mueve entonces la ventana secundaria se mueva con ella

Hola FGarcia, para hacer que tu ventana secundaría se mueva cuando se mueve la principal puedes capturar el mensaje y preguntar si es SW_MOVE.

Código Delphi [-]
  procedure SYSCOMMAND(var Msg: TMessage); message WM_SYSCOMMAND;
................
................
procedure TForm1.SYSCOMMAND(var Msg: TMessage);
begin
 Inherited;
 if (Msg.WParam and $FFF0)= SC_MOVE then
  begin
   Form2.Left := Self.Left;
   Form2.Top := Self.Top + Self.Height;
  end
end;

Ahí mismo puedes preguntar si la secundaría estaría minimizada, si es así lo restauras

Saluditos

Caro 04-10-2008 20:34:50

Hola de nuevo, creo que sería mejor capturar directamente el mensaje WM_MOVE, ya que de la forma que puse, tarda un poco en moverse la ventana secundaria, prueba este ejemplo que puso el amigo Roman http://www.clubdelphi.com/foros/show...75&postcount=2

Saluditos

FGarcia 06-10-2008 16:11:50

Gracias por la respuesta Caro. No he tenido oportunidad de trabajar en eso pero en la primera oportunidad lo hago y comentare los resultados.


La franja horaria es GMT +2. Ahora son las 14:45:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi