Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2012
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 19
chinchan Va por buen camino
Form en primer plano

Hola a todos, tengo una aplicación en C++ Builder en la que uno de sus Form (que no es el principal), quiero que esté en primer plano (StayonTop) pero también en primer plano ante cualquier otro programa o aplicación de Windows. ¿Se puede hacer? ¿Cómo?. Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 10-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira alguno de los enlaces del final de esta página, abajo del todo, pueden servirte.
Responder Con Cita
  #3  
Antiguo 10-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola chinchan.

En el evento OnShow del form que te interese tenga ese comportamiento:
Código:
void __fastcall TfrmSecundario::FormShow(TObject *Sender) {
 SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_SHOWWINDOW);
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 10-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
La respuesta de ecfisa es correcta , como lo es esta variante:
Código:
__fastcall TForm2::TForm2(TComponent* Owner)
  : TForm(Owner)
{
  SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
}
Esto, directamente desde la VCL, también debería funcionar en fase de diseño o ejecución:
Código:
__fastcall TForm2::TForm2(TComponent* Owner)
  : TForm(Owner)
{
  FormStyle = fsStayOnTop;
}

Saludos.
Responder Con Cita
  #5  
Antiguo 10-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Analizando mejor la cuestión me doy cuenta de que se pide en un form que no sea el principal...

En ese caso el mecanismo que propongo es reescribir la función virtual TForm::WndProc():
Código:
class TForm2 : public TForm
{
...........
protected:    
  virtual void __fastcall WndProc(Messages::TMessage &Message);
..........
};
Código:
void  __fastcall TForm2::WndProc(Messages::TMessage& Message)
{
  if(Visible && Message.Msg == WM_KILLFOCUS)
      SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);

  TForm::WndProc(Message);
}

Saludos.
Responder Con Cita
  #6  
Antiguo 15-10-2012
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 19
chinchan Va por buen camino
Gracias por responder. Efectivamente, las soluciones que dáis valen si llamo a este Form como ShowModal, la solución creo que es la que apunta Escafandra al final, lo que ocurre es que me pierdo con eso de reescribir la función virtual TForm::WndProc():
Escfandra: podrías por favor, aclarar un poco esa última solución que has propuesto?.

Muchas Gracias.
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
Abrir outlook en primer plano Jose Manuel Servers 3 24-02-2012 19:25:50
2 Form Siempre En Primer Plano FrianxD C++ Builder 16 15-01-2008 22:41:02
Como mostrar en primer plano Blackspike API de Windows 4 14-01-2008 09:13:20
Aplicación en primer plano jordillussa Varios 4 20-03-2007 19:58:43
Aplicación siempre en primer plano Novás Varios 2 08-03-2004 09:31:09


La franja horaria es GMT +2. Ahora son las 09:31:46.


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