Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Creación de un control menú. Problemas con estilo de ventana. (https://www.clubdelphi.com/foros/showthread.php?t=47958)

abracadabra 12-09-2007 01:13:50

Creación de un control menú. Problemas con estilo de ventana.
 
Hola amigos.
Ante todo pido disculpas por lo poco descriptivo que puede llegar a ser el título del topic (No soy bueno resumiendo ideas en una sola oración)
Estoy realizando un control que se comporta como un TMainMenu. como cualquier menú, cuando se selecciona un item se despliega su respectivo submenu .
Ejemplo:
Item del menú principal: "Archivo"
Submenu del item "Archivo": El submenu (osea el rectángulo que se muestra cuando se hace click en alguna opción del menu pricipal) es un control TWinControl donde se dibuja la lista formada por las opciones Abrir, Cerrar, Guardar, etc.

Inicialmente tenía un problema:
En un menu comun y corriente sucede que cuando la altura de un submenú sobrepasa o excede la altura de la ventana que lo contiene, este submenu se dibuja por sobre la ventana. En el menu que estoy desarrollando no pasaba eso, es decir si la altura del submenú era mayor al de la ventana que lo contenía, solo se mostraba el submenú hasta donde termina la ventana, eso lo solucioné con el siguiente código:

procedure TSubMenu.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_POPUP;
end;

El establecer el estilo de control a WS_POPUP, me trajo un nuevo problema que no se como solucionarlo: Cuando hago click en cualquier opción del submenú, la ventana de la aplicación principal pierde el foco. Ya que al declararse el submenu como WS_POPUP este se comporta como una ventana independiente de la aplicación y como concecuencia la aplicación pierde foco. Como puedo hacer que para cuando haga click en el submenú , la ventana de aplicación principal no pierda el foco (Tal como sucede en un menú comun y corriente)?
Gracias de antemano.


La franja horaria es GMT +2. Ahora son las 20:50:05.

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