Click direito do mouse e abra um menu popup

Delphi

17/12/2004

galera tenho um popup em uma Image1

como faço pro popup aparecer no cilque esquerdo normal, nao no direito

Valew, tem alguma coisa a evr com akele WMI?!


Abraços...


Tremonti

Tremonti

Curtidas 0

Respostas

Sanses

Sanses

17/12/2004

já a algum tempo vi um post aqui mesmo no fórum onde havia uma função que testava qual botão do mouse havia sido pressionado. Da uma procurada ai que vc encontra, ai é só modificar para que faça o que vc deseja


GOSTEI 0
Sanses

Sanses

17/12/2004

olha, pode ser que vc encontre uma forma mais fácil e melhor de se fazer isso, mas se quiser, fiz um exemplo aqui de como vc pode trocar os botões do mouse e depois destrocar, tambem pode testar se estão trocados ou não - as funções foram retiradas do dtdelphi 2.5. Com estas funções basta vc fazer com que quando o mouse estiver emcima do seu image ele troque os botões, ai com o popup ligado ao image, basta adicionar os procdimentos que devem ocorrer. Dá uma olhada na unit:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function MouseSwapButtons(const Swap: boolean): boolean;
begin
  Result := Windows.SwapMouseButton(LongBool(Swap));
end;

function MouseSwappedButtons: boolean;
begin
  Result := GetSystemMetrics(SM_SWAPBUTTON) <> 0;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 if MouseSwappedButtons then
   showmessage(´trocado´)
   else
   showmessage(´correto´)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   MouseSwapButtons(true);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   MouseSwapButtons(false);
end;

end.


Espero que lhe seja útil.


GOSTEI 0
Hebrao

Hebrao

17/12/2004

E ai amigons? Beleza?

Se for só aparecer o seu popup com o clique normal, faça o seguinte...

No evento OnClick da figura, coloque o seguinte codigo:

[b:2e2d9baa58]PopupMenu.Popup(x, y);[/b:2e2d9baa58] // Onde x e y são as pos. que o menu aparece.
Ex:

PopupMenu.Popup(100, 150);

Espero ter ajudado. :D

Falow.


GOSTEI 0
Massuda

Massuda

17/12/2004

como faço pro popup aparecer no cilque esquerdo normal, nao no direito
Para que seu popup apareça quando der um clique no Image1, faça algo assim (não testei)...
type
  TSeuForm = class(...
  ...
  private
    FUltimoX, FUltimoY: Integer;
...
// no evento OnMouseDown do seu TImage
procedure TSeuForm.Image1MouseDown(...
begin
  FUltimoX := X;
  FUltimoY := Y;
  ...
end;

// no evento OnClick do seu TImage...
procedure TSeuForm.Image1Click(...
begin
  SeuPopup.Popup(FUltimoX, FUltimoY);
end;



GOSTEI 0
Marcio.theis

Marcio.theis

17/12/2004

Em uma aplicação minha eu fiz desta forma:

Coloquei no evento OnClick do componente Image o seguinte código:

var
  Pt: TPoint;
begin
GetCursorPos(Pt);
PopupMenu.Popup(Pt.x, Pt.y);



GOSTEI 0
POSTAR