Menu popup em um button

Delphi

20/06/2006

Oi pessoal, preciso encontrar uma forma ou componente que ao usuário clicar no botão apareça tipo um menu popup, só que gostaria que fosse igual ao toolbutton, só que tem um detalhe o menu tem que exibir as opções para cima !
Achei aki no fórum uma dica do Michael para este assunto, ele cita o comando ClientToScreen, só que o menu é para abaixo do botão, outro detalhe é que estou tentando fazer com esta dica em diferentes resoluções de vídeo, e dá algumas diferenças de posições, será que tem jeito ?
Agradeço a ajuda !

César


Cesarpir

Cesarpir

Curtidas 0

Melhor post

Paullsoftware

Paullsoftware

20/06/2006

Essa dica que o Michael respondeu pra mim aqui no fórum e revista pode ter ser util...

var 
  P1, P2: TPoint; 
begin 
  P1.X := Button.Left; 
  P1.Y := Button.Top + Button.Height; 
  P2 := ClientToScreen(P1); 
  PopupMenu.PopUp(P2.X, P2.Y); 
end;

espero ter ajudado :wink:


GOSTEI 1

Mais Respostas

Cesarpir

Cesarpir

20/06/2006

Amigo paullsoftware então como disse no tópico esta dica é que estou usando no momento, mas para mim não serve totalmente, vamos dizer assim, gostaria que o menu ficasse para cima, só mais um detalhe tb que não disse os botões que disponibilizo na tela estão dentro de um panel com alinhado na parte de baixo do form, resumindo todos os botões que tenho ficam na parte inferior, portanto quando o menu aparece ele fica para baixo !

Valeu

César


GOSTEI 0
Michael

Michael

20/06/2006

Colega [b:c12c5bee68]cesarpir[/b:c12c5bee68],

Vc precisa então mudar as coordenadas onde o menu vai aparecer. Ao invés de calcular o topo a partir do [b:c12c5bee68]Top [/b:c12c5bee68]do botão + sua altura, vc vai precisar calcular a altura que o menu vai ter - a soma da altura de todos os seus itens - e subtrair do topo do botão.

Não se esqueça de no final, antes de chamar o método [b:c12c5bee68]Popup[/b:c12c5bee68], usar [b:c12c5bee68]ClientToScreen [/b:c12c5bee68]para transladar as coordenadas para a tela.

[]´s


GOSTEI 0
Cesarpir

Cesarpir

20/06/2006

Ok amigo Michael vou tentar aki, obrigado, tudo uma questão de matemática né :oops:

Abraços

César


GOSTEI 0
POSTAR