PDA

Ver la Versión Completa : Ayuda Con Un Submenu Grafico


ggram2
19-09-2011, 20:47:48
Buenas Tardes Amigos del Foro

Quisiera hacer que un PopupMenu en lugar pulsar click derecho se desplegara el submenu con solo apuntarle con el puntero del mouse. si no es un popupmenu cualquier otra opcion donde pueda poner varias opciones a ejecutar (submenu), me gustaria que fuera un menu bien grafico.

si existen respuesta para alguna pregunta similar les pido de ante mano mis disculpas porque no las he hallado.

Muchas gracias a quien me pueda ayudar

ecfisa
19-09-2011, 22:35:48
Quisiera hacer que un PopupMenu en lugar pulsar click derecho se desplegara el submenu con solo apuntarle con el puntero del mouse.

Hola ggram2.

Te hago una consulta por que hay algo de lo que buscas hacer que no me queda claro: ¿ Cuando el mouse apunte a que cosa ?
Es decir, ¿ Al form, a un determinado control, una imágen, ... ?

Un saludo.

ggram2
20-09-2011, 00:16:32
Muchas gracias por su Interes

La idea es en un Form poner varios botones (SpeedButton)
y cada uno tiene un submenu de opciones asociadas al proceso principal
pero en lugar de darle click con el boton derecho para ver el submenu
que con solo apuntar con el puntero del mouse despliegue el submenu

por ejemplo:

Boton1 (Caption = "INGRESOS EN EFECTIVO")
y en el submenu dice :
1.Crear nuevos Clientes
2.Definir tipos de pagos
3.Consulta de Movimientos

si pudirea hasta desplegar una imagen que bueno seria

ecfisa
20-09-2011, 03:54:15
Hola.

Utilizando TSpeedButton y TPopupMenu algo que se me ocurre es:

...
type
TSpeedButton = class(Buttons.TSpeedButton)
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
end;
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
PopupMenu1: TPopupMenu;
MenuItem11: TMenuItem;
...
PopupMenu2: TPopupMenu;
MenuItem21: TMenuItem;
...
PopupMenu3: TPopupMenu;
MenuItem31: TMenuItem;
...
ImageList1: TImageList;
ImageList2: TImageList;
ImageList3: TImageList;
...
procedure MenuItemClick(Sender: TObject);
...
private
public
end;
...
implementation

{ TSpeedButton OnMouseEnter }
procedure TSpeedButton.CMMouseEnter(var Msg: TMessage);
var
PopUpM: TPopupMenu;
begin
case Tag of // (Self.Tag) Tag del TSpeedButton en que se ingresó
1: PopUpM:= Form1.PopupMenu1;
2: PopUpM:= Form1.PopupMenu2;
3: PopUpM:= Form1.PopupMenu3;
//...
end;
PopUpM.Popup(ClientOrigin.X + 10, ClientOrigin.Y+Top);
end;

{ Form1 OnCreate }
procedure TForm1.FormCreate(Sender: TObject);
begin
// Se puede asignar desde el ObjectInspector en diseño
SpeedButton1.Tag:= 1;
SpeedButton2.Tag:= 2;
SpeedButton3.Tag:= 3;
...
end;

{ MenuItem1 OnClick (en la prueba asignado a todos los MenuItems) }
procedure TForm1.MenuItemClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Name); // Muestra el nombre del Item seleccionado como ejemplo
end;
...

Las imágenes se visualizan asociando los TImageList a los TPopupMenu.

Un saludo.

ggram2
20-09-2011, 16:48:36
Muchas gracias

Probando el evento "MouseEnter" al llamar el Propiedad "popup" Funciona como quiero en una parte,
y no esta completo porque el foco del cursor se queda en el submenu
toca hacerle click en cualqueir otra parte de la pantalla para el submenu desaparezca, y lo que quisiera es que al salir el puntero del area del SpeedButton1 y entrar en otro Speedbutton2 despliegue el submenu de ese boton donde este apuntando con el muse.

mil gracias por su tiempo.