Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2013
ricardopl65 ricardopl65 is offline
Miembro
 
Registrado: nov 2008
Posts: 25
Poder: 0
ricardopl65 Va por buen camino
Intenta esto

Se me ocurre que puedes poner esto en el formulario que tiene el menu


Código Delphi [-]
protected     
procedure CreateParams(var Params: TCreateParams); override;  

 procedure TMiForm.CreateParams(var Params: TCreateParams);
 begin   
inherited CreateParams(Params);  
with Params do   
begin     
ExStyle := ExStyle or WS_EX_NOACTIVATE;     
WndParent := GetDesktopwindow;   
end;


De esta manera el formulario nunca gana el foco, es decir no se activa
Responder Con Cita
  #2  
Antiguo 10-03-2013
alsn alsn is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 20
Poder: 0
alsn Va por buen camino
Hola Ricardo, el código que pones no impide que el formulario principal menú adquiera el foco. Por lo menos en las pruebas que he hecho. De todas formas, lo que creo que buscaba Newtron es que el formulario principal no se colocara por encima de los demás formularios de la aplicación, tapandolos, pero que sí mantuviera su capacidad de uso.

Ya encontraron una solución satisfactoria. Si he resubido el hilo (con más de un año) es porque tenía la impresión de que eso mismo se podía conseguir de una manera más simple.

Un saludo
Responder Con Cita
  #3  
Antiguo 10-03-2013
ricardopl65 ricardopl65 is offline
Miembro
 
Registrado: nov 2008
Posts: 25
Poder: 0
ricardopl65 Va por buen camino
Pues acabo de volver a probarlo y a mi me funciona.
Prueba este dpr:
Archivos Adjuntos
Tipo de Archivo: zip formdetras.zip (2,3 KB, 11 visitas)
Responder Con Cita
  #4  
Antiguo 10-03-2013
alsn alsn is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 20
Poder: 0
alsn Va por buen camino
Sigue sin funcionarme. Igual es la versión de Delphi. Para poder probarlo, he tenido que quitar en los "uses" todas las referencias: "Winapi." "Vcl." "System." ya que no las reconocía, y eliminar entonces los uses dobles que quedaban.
Responder Con Cita
  #5  
Antiguo 12-03-2013
alsn alsn is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 20
Poder: 0
alsn Va por buen camino
Hay un truco, que conozco desde mi época de Visual Basic, para crear ventanas flotantes (tipo barras de herramientas de Office), que consistiría en:

Código Delphi [-]
const
  SWW_hParent = -8;

 ...

SetWindowLong(FormFlotante.Handle, SWW_hParent, FormPadre.Handle)


Esta forma permite más posibilidades, como crear una jerarquía de ventanas.

Ejemplo:

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
const
  SWW_hParent = -8;
begin
  SetWindowLong(Form2.Handle,SWW_hParent,Form1.Handle);
  Form2.Show;

  SetWindowLong(Form3.Handle,SWW_hParent,Form2.Handle);
  Form3.Show;
end;
Responder Con Cita
  #6  
Antiguo 12-03-2013
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Algo más sencillo que puedes usar en las nuevas versiones de Delphi

Establece la propiedad PopupMode del formulario a pmAuto y por último, crea el formulario superior como hijo directo del formulario padre/principal. Por ejemplo:

Código Delphi [-]
FormHijo := TFormHijo.Create(FormPadre);

Saludos!

Enlaces:
Propiedad PopupMode.
WS_POPUP (Para versiones de Delphi que no traen la propiedad PopupMode de TCustomForm.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 12-03-2013
alsn alsn is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 20
Poder: 0
alsn Va por buen camino
Sí, es eso mismo. Incluso se puede establecer la propiedad PopupMode por código a posteriori:

Código Delphi [-]
FormHijo := TFormHijo.Create(FormPadre);
FormHijo.PopupMode := pmAuto;
FormHijo.Show;

Aunque no se comporta exactamente igual. Me explico, con el siguiente código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Form1);
  Form2.PopupMode := pmAuto;
  Form2.Show;

  Form3 := TForm3.Create(Form1);
  Form3.PopupMode := pmAuto;
  Form3.Show;
end;

El Form3 se comporta como si fuese hijo del Form2, no del Form1. Y no entiendo por qué.

Saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Orden formularios newtron Varios 10 06-10-2011 14:03:37
Paneles en Orden ...... Efren2006 OOP 9 11-06-2010 12:36:02
Splash screen ,o splashscreen ,o form o ventana de inicio ,o orden de formularios Peterman C++ Builder 2 29-05-2007 19:46:22
Orden en TIBDataset barman Conexión con bases de datos 6 27-11-2003 10:40:25
Orden en TIBDataset barman Firebird e Interbase 6 24-11-2003 21:26:00


La franja horaria es GMT +2. Ahora son las 16:50:45.


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
Copyright 1996-2007 Club Delphi