| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
goyoko Ens

Registrado: 08 Abr 2003Mensajes: 47
|
Publicado: Vie 24 Jun, 2005 8:54 pm Asunto: pantalla fantasma |
|
|
| Hola a todos... desarrollando una aplicación tuve un problema cuando teniendo una pantalla principal desplegaba un form secundario que se mantenía activo junto con la pantalla principal detrás, espero se entienda. En ocaciones seleccionaba por equivocacion la pantalla principal y despues nunca podía volver a ver la pantalla secundaria apesar que la volvía a llamar no se que pasa... como puedo hacer para que quede como ventana independiente y que se vea en la barra del tareas? |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 24 Jun, 2005 9:32 pm Asunto: |
|
|
Hola, no se si te he entendido bien, pero si lo que quieres es que aparezca un nuevo botón en la barra de tareas por cada ventana que creas:
- Pon la siguiente declaración en la clase del Form en cuestión en la parte privada por ejemplo:
| Código: | //--- .h
private: // User declarations
void __fastcall CreateParams(TCreateParams& Params); |
- Y luego añade la implementación de la misma:
| Código: | //--- .cpp
void __fastcall TcontactoFrm::CreateParams(TCreateParams& Params)
{
TForm::CreateParams(Params);
// Pone un boton en la barra de tareas para esta ventana
Params.ExStyle |= WS_EX_APPWINDOW;
// Hace la ventana hija del escritorio
Params.WndParent = GetDesktopWindow();
} |
|
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Jue 15 Abr, 2010 4:36 pm Asunto: |
|
|
Buenas, levanto esta consulta de hace ya mucho tiempo, debido a que en RAD2010 ocurre un error extraño.
Os pongo en situación:
Tengo puesto el mismo código que muestra _Leo para que a la hora de abrir cualquier formulario, me añada un botón en la barra de tareas.
Esto me ha funcionado sin problemas, hasta que he exportado el programa a RAD2010.
Ahora, cuando hago la llamada, me aparece el formulario y desaparece automáticamente poniendose por detras del formulario principal.
Si quito esta llamada funciona correctamente
Si hago ShowModal en lugar de Show me funciona correctamente.
¿Existe alguna solucion para que fuerce que el formulario aparezca por delante sin tener que ser la ventana modal?
Gracias |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 15 Abr, 2010 5:41 pm Asunto: |
|
|
| A mi me sigue funcionando correctamente, al menos la prueba que acabo de hacer en Windows 7. Lo has probado en un proyecto vacio para descartar que no sea otra cosa de tu proyecto ? |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Jue 15 Abr, 2010 5:45 pm Asunto: |
|
|
Gracias _Leo, pero se me ha olvidado incluir una cosa importante.
Estoy usanto un TRibbon en lugar de un TMenu.
A ver si por ahí... |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 15 Abr, 2010 5:49 pm Asunto: |
|
|
| rockman2003 escribió: | | Estoy usanto un TRibbon en lugar de un TMenu |
Aun así me sigue funcionando correctamente.. |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Jue 15 Abr, 2010 5:58 pm Asunto: |
|
|
Pues.... tienes razón, he creado un nuevo proyecto y funciona a la perfección.
Voy a ver que tiene mi proyecto que hace esto tan raro
Gracias _Leo |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 16 Abr, 2010 10:18 pm Asunto: |
|
|
Después de probar con más tranquilidad he visto que realmente ocurre lo que dices si se llama al formulario desde una acción del ribbon.. aunque no usando cualquier control..
Y echando un vistazo en el código fuente del mismo veo cual es la línea que provoca este comportamiento:
| Código: | // Línea 1509 del archivo RibbonActnCtrls.pas
procedure TRibbonBaseButtonControl.Click;
begin
inherited;
SetFocus(Application.MainForm.Handle); <---
end; |
Y para sobrescribir este método sin tener que retocar el archivo original basta con añadir lo siguiente por ejemplo en cualquier parte del código del Form principal:
| Código: | void __fastcall TRibbonBaseButtonControl::Click(void)
{
Actnctrls::TCustomButtonControl::Click();
} | (¡Importante! para que funcione tenemos que tener deshabilitado en las opciones de nuestro proyecto: "Build with runtime packages")
Solo he hecho una prueba rápida para ver si afecta a otras cosas... si tu lo pruebas más detenidamente avísame si ves que afecta a otras cosas e intentamos buscar otro método. |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Sab 17 Abr, 2010 12:53 am Asunto: |
|
|
Eres un crack _Leo, increible, no me dejas de sorprender.
Muchas gracias _Leo, funciona de nuevo. |
|
| Volver arriba |
|
 |
|