Delphi - Ventanas

 
Vista:

Ventanas

Publicado por Irreal (69 intervenciones) el 15/03/2007 16:55:19
Hola!

Necesito ejecutar una pantalla lanzandola desde una pantalla padre con una particularidad. La ventana hija ha de estar siempre por encima de la ventana padre, como si se abriese con un 'ShowModal', no obstante ha de permitirme poder trabajar en la ventana padre ya que esta al ser más grande que la hija tendrá zonas accesibles. De esta manera funcionaría de forma parecida a un MDI, pero no puede ser un MDI.

He probado a lanzar las ventanas con la propiedad Style como 'OnTop' pero de esta manera al abrir una otra aplicación independiente a la que se esta desarrollando esta se queda por encima y no se puede trabajar.

En resumén necesito lanzar una ventana hija que reconozca al padre de manera que la ventana padre nunca tape a la hija.

Entiendo que es un poco enrevesado pero no logro explicarme mejor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ventanas

Publicado por Adrb (7 intervenciones) el 20/03/2007 07:42:28
Mis cordiales saludos.

Mi amigo, lo que debes hacer es llamar al procedimiento "SetWindowPos", del API, de la siguiente forma

with ChildForm do
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW);

donde ChildForm es la ventana que quieres situar sobre la principal (su child window). El flag HWND_TOPMOST es el que hace el trabajo.

Buena suerte mi amigo

Bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ventanas

Publicado por Irreal (69 intervenciones) el 17/04/2007 09:54:27
Mis más mejor amigo.

Me temo que tu solución no ha sido satisfactoria o no la he sabido implementar.

Desde el menu ejecuto:

procedure TfMenu.ButtonClick(Sender: TObject);
var vTfForm : TfForm;
begin
vTfForm := TfForm.Create(Application);
with vTfForm do
SetWindowPos(vTfForm.Handle, HWND_TOPMOST ,0,0,vTfForm.Width, vTfForm.Height, SWP_SHOWWINDOW);
end;

El resultado que obtengo es el mismo que asignando la propiedad FormStyle de TfForm a OnTop.Situandose por encima del menu en todo momento pero con dos problemas:
1- Hay ciertos mensajes que se quedan por detrás de la ventana Form con lo que da la sensación de aplicación bloqueada.
2- Al usar la combinación de teclas ALT + TAB en control se va a otra aplicación quedando esta ventana por encima de la aplición activa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar