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 17-04-2005
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
Problema con PopupMenu

Hola, como va?
Tengo un problema con un Popup: con el evento OnMouseUp o Down del form o cualquier otro componente muestro el Popup en las coordenadas X e Y del mouse.
El problema es que el el Popup me sale en cualquier lado: Cuando el Form esta a maximizado me sale un poquito mas arriba del puntero del mouse, pero cuando la ventana es mas chica me sale mucho mas a la izquierda y arriba.
Probe haciendo lo mismo pero en vez de mostrar el PopupMenu muevo un Edit a las coordenadas X e Y y funciona bien, asique el problema esta en el PopupMenu.
Responder Con Cita
  #2  
Antiguo 17-04-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
¿Y si lo asignas a la propiedad PopupMenu ?

Hola,

Esto es una obviedad, así que no puedo sino pensar que algo se me escapa: me disculpo de antemano contigo, pero, ¿porqué no asignas el PopupMenu a la propiedad correspondiente del formulario y/o componente en cuestión?

En todo caso, y, aunque creo recordar que en algún sitio he visto lo mismo hecho de otro modo (tal vez mejor) puedes probar con esto:

Código Delphi [-]
  
  procedure TForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  begin
    // if(Button = mbRight) then
    PopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
  end;

Última edición por dec fecha: 17-04-2005 a las 23:39:55. Razón: (Ampliación del texto)
Responder Con Cita
  #3  
Antiguo 18-04-2005
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 es que el menú salga en cualquier lado sino que sale desplazado de la posición donde esperas que aparezca. Prueba haciendo click sucesivamente en distintos puntos y verás que el desplazamiento siempre es el mismo.

Lo que sucede es que los eventos OnMouseDown y OnMouseUp te pasan las coordenadas relativas al control mientras que el método Popup del menú espera coordenadas relativas a la pantalla.

Así, si das el click en las coordenadas (10, 10) del control, el menú aparecerá en las coordenadas (10, 10) pero de la pantalla.

Para remediar esto basta que conviertas las coordenadas.

Por ejemplo, si el control es un ListBox:


Código Delphi [-]
procedure ListBox1MouseUp(...);
var
  Pt: TPoint;

begin
  Pt := Point(X, Y);
  Pt := ListBox1.ClientToScreen(Pt);

  PopupMenu1.PopUp(Pt.X, Pt.Y);
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 18-04-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Así es como roman dice

Hola,

Antes me referí a otra forma de conseguir lo mismo acaso más acertada y que no recordaba exactamente. Pues bien, lo que no recordaba era justamente lo que roman ha indicado en el código que ha escrito y se puede ver más arriba.
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


La franja horaria es GMT +2. Ahora son las 11:42:55.


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