Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2008
mangels mangels is offline
Registrado
 
Registrado: oct 2006
Ubicación: Barcelona
Posts: 4
Poder: 0
mangels Va por buen camino
seleccionar una opción de un popup por código

Hola, estoy desplegando un popup menú por código de esta forma:

Código Delphi [-]
procedure desplegaMenu(boton: TButton);
var
  p: TPoint;
begin
  p := boton.ClientToScreen(Point(0, boton.Height));
  boton.DropdownMenu.Popup(p.X, p.Y);
end;

Lo que me gustaría es que además de desplegar el menú quedará seleccionado el primer ítem para poder hacer Intro directamente, ahora no hay seleccionado ninguno y tengo que moverme con las teclas de cursor o con el mouse para activar el que me interesa.

Lo único que se me ha ocurrido ha sido incluir esta línea (simular que pulso la tecla de cursor abajo), pero no me ha funcionado:

Código Delphi [-]
PostMessage(TAdvPopupMenu(boton.DropdownMenu).Handle, WM_KEYDOWN, VK_DOWN, 0);

Si alguien me puede ayudar... Gracias

Última edición por mangels fecha: 02-07-2008 a las 08:18:38.
Responder Con Cita
  #2  
Antiguo 01-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

existe la propiedad PopupMenu.Items.MenuIndex. No se bien bien como funciona pero creo que va por alla lo que buscas.

saludos
Responder Con Cita
  #3  
Antiguo 01-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé si lo que voy a decir aplica al menú que estás usando (AdvPopupMenu) aunque posiblmente sí, si se trata de un derivado del PopupMenu de Delphi.

Un popup menu se muestra usando la función TrackPopupMenu de la API de Windows. A esta función se le pasa como uno de sus parámetros, el identificador de la ventana que va a procesar los mensajes del menú. Este identificador no es lo mismo que el identificador del menú en sí (PopupMenu.Handle), por eso, el PostMessage que usas no sirve, porque no va dirigido al lugar correcto.

Ahora bien, la ventana que maneja los mensajes del menú, no es -en el caso de Delphi- el formulario donde está el menú, sino una ventana creada expresamente para esa tarea y cuyo identificador está guardado en PopupList.Window (PopupList es un objeto definido en la unidad Menus.pas).

En resumen, puedes hacer:

Código Delphi [-]
PostMessage(Menus.PopupList.Window, WM_KEYDOWN, VK_DOWN, 0);

// Saludos
Responder Con Cita
  #4  
Antiguo 02-07-2008
mangels mangels is offline
Registrado
 
Registrado: oct 2006
Ubicación: Barcelona
Posts: 4
Poder: 0
mangels Va por buen camino
Thumbs up funciona...

He puesto la instrucción de roman y me ha funcionado perfectamente, pero sólo cuando la he puesto en el evento OnPopup del menú. He probado en varios sitios (después de hacer el .Popup(p.X, p.Y), después de llamar a la función que desplega el menú... y nada), suerte que al final se me ha ocurrido probar en el evento...

Código Delphi [-]
 
procedure TFMain.PopOpcionesPopup(Sender: TObject);
begin
  PostMessage(menus.PopupList.Window, WM_KEYDOWN, VK_DOWN, 0);
end;

Muchas gracias por la ayuda!
Responder Con Cita
  #5  
Antiguo 02-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo lo probé en el evento onclick de un botón y funcionó bien. Noto en tu código original que tienes un botón al que le asignaste el menú en su propiedad DropDownMenu, cosa que yo no hice. Quizá esto sea lo que está afectando.

// Saludos
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
Rave Reports 5: Seleccionar impresora por código y más. fly Impresión 1 07-08-2008 17:00:29
Seleccionar item de DbComboBox por Codigo Camilo Varios 4 26-06-2008 19:19:25
obligar a seleccionar opcion en COMBOBOX o tipo modal thelibmx Varios 2 21-06-2007 20:41:29
Como agregar una nueva opcion en un popup menu de windows? JuanErasmo API de Windows 2 03-04-2006 15:58:55
Listview - Como seleccionar de varios subitems una opción namey OOP 1 22-03-2005 10:18:54


La franja horaria es GMT +2. Ahora son las 19:52:02.


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