Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
_CALI,

Cita:
Empezado por _CALI
Tal vez no fui muy claro, pero lo que quiero es que el panel se muestre siempre el ultimo sitio del Z orden.
Esta aplicación implementa tu requerimiento:



Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Forms1: TMenuItem;
    Form21: TMenuItem;
    Form31: TMenuItem;
    Form41: TMenuItem;
    Exit1: TMenuItem;
    Panel1: TPanel;
    procedure Form21Click(Sender: TObject);
    procedure Form31Click(Sender: TObject);
    procedure Form41Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
  private

    // Control de Orden Z del TPanel

    FPanelWndProc: TWndMethod;
    procedure PanelWndProc(var M: TMessage);

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Uses Unit2, Unit3, Unit4;

{$R *.dfm}

// Inicio del Código de Control del Orden Z del TPanel

procedure TForm1.FormCreate(Sender: TObject);
begin
  Windows.SetParent(Panel1.Handle, ClientHandle);
  // Sobreescribe el Panel1 WindowProc
  FPanelWndProc := Panel1.WindowProc;
  Panel1.WindowProc := PanelWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Restaura Panel1 WindowProc
  Panel1.WindowProc := FPanelWndProc;
end;

procedure TForm1.PanelWndProc(var M: TMessage);
var
  P: ^WINDOWPOS;
begin
  if M.Msg = WM_WINDOWPOSCHANGING then
  begin
    P := Pointer(M.LParam);
    // Siempre coloca Panel1 en el Orden Z Bottom
    P.hwndInsertAfter := HWND_BOTTOM;
  end;
  FPanelWndProc(M);
end;

// Fin del Código de Control del Orden Z del TPanel

procedure TForm1.Form21Click(Sender: TObject);
begin
   Form2.Show;
end;

procedure TForm1.Form31Click(Sender: TObject);
begin
   Form3.Show;
end;

procedure TForm1.Form41Click(Sender: TObject);
begin
   Form4.Show;
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
   Application.Terminate;
end;

end.
El código anterior mantiene el TPanel en el Orden Z mas inferior, permitiendo que el TPanel siempre este visible y nunca se superponga a un MDIChild. Todo el código de control esta en el MDIForm, no hace falta colocar ningún código adicional en los MDIChild. Quizás esta solución pueda ser adaptada a tu proyecto.

La aplicación implementada esta en el siguiente link: http://terawiki.clubdelphi.com/Delph...+MDI+Forms.rar

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-12-2012 a las 01:21:25.
Responder Con Cita
  #2  
Antiguo 30-12-2012
_CALI _CALI is offline
Miembro
 
Registrado: mar 2008
Posts: 99
Poder: 17
_CALI Va por buen camino
...Claro, pero aver dibuja el panel del porte del formulario padre y luego minimiza los formularios hijos y comprenderás mejor lo que digo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
panel siempre visible RebeccaGL Varios 4 07-10-2011 18:29:37
Mantener el Formulario principal en el fondo. Critter Lazarus, FreePascal, Kylix, etc. 5 25-10-2010 10:04:27
Mantener viva la aplicación HombreGordo Varios 9 04-11-2008 20:57:24
Mantener Aplicacion Arancada ramonibk API de Windows 10 26-10-2004 18:25:00
Mantener Form1 siempre detrás de Form2 Gorka Varios 1 13-10-2004 13:13:48


La franja horaria es GMT +2. Ahora son las 02:09:19.


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