Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como establecer una posicion fija para un popmenu (https://www.clubdelphi.com/foros/showthread.php?t=75679)

jasmad 12-09-2011 16:12:59

Como establecer una posicion fija para un popmenu
 
buenas estoy tratando de hacer que cuando presiono un speedButton aparezca el popupmenu exactamente debajo de el independientemente de donde este ubicado el formulario.

he tratado de hacerlo asi

Código:

procedure TfrmPrincipal.btnClientesClick(Sender: TObject);
begin
    pmClientes.PopUp(100,100);
end;

Lo que pasa con esto es que el menu se coloca tomando la ubicacion en la pantalla y no sirve.

No se si este menu sirve para lo que quiero y si no tambien quisiera saber cual podria usar.

Muchas gracias por adelantado.

Chris 12-09-2011 16:19:56

Hola!

Prueba con:
Código Delphi [-]
pmClientes.PopUp(btnClientes.BoundsRect.Left, BtnClientes.BoundsRect.Bottom);

Saludos,
Chris

roman 12-09-2011 16:20:06

Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  Pt: TPoint;

begin
  Pt := Form1.ClientToScreen(Point(SpeedButton1.Left, SpeedButton1.Top + SpeedButton1.Height));
  PopupMenu1.Popup(Pt.X, Pt.Y);
end;

Si el SpeedButton está dentro de algún contenedor, como un panel por ejemplo, entonces tendráss que sustituir Form1 por dicho contenedor.

// Saludos

ecfisa 12-09-2011 16:38:28

Hola.

Otro modo puede ser:
Código Delphi [-]
procedure TForm1.SpeedButton1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 with TSpeedButton(Sender) do
   if Button = mbRight then
     PopupMenu1.Popup(ClientOrigin.X + Width, ClientOrigin.Y + Height);
end;

Saludos.

jasmad 12-09-2011 17:56:27

grxs a todos por la ayuda
al fin se pudo
Código:

procedure TfrmPrincipal.btnClientesClick(Sender: TObject);
var
  pt:TPoint;
begin
    pt:=panelMenuBotones.ClientToScreen(Point(btnClientes.Left+btnClientes.Width-9, btnClientes.Top+btnClientes.Height));
    pmClientes.PopUp(pt.x,pt.y);
end;



La franja horaria es GMT +2. Ahora son las 12:12:54.

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