Menu em Botão

Delphi

01/02/2006

Ai galera bom dia...

Alguém pode me ajudar numa dúvida que ta acabando comigo...
Como eu faço para criar um menu em um botão tipo, no windows xp quando clicamos no botão ´Modo de Exibição´ ele mostra alguns itens em um menu, como faço pra fazer um igual aquel?


Paullsoftware

Paullsoftware

Curtidas 0

Respostas

Massuda

Massuda

01/02/2006

Esse botão que você citou é do TToolbar (aba win32). Não sei se existe um botão ´avulso´ (ou seja, que não esteja ligado a algum outro componente) que faça isso.


GOSTEI 0
Paullsoftware

Paullsoftware

01/02/2006

Esse botão que você citou é do TToolbar (aba win32). Não sei se existe um botão ´avulso´ (ou seja, que não esteja ligado a algum outro componente) que faça isso.


não, é button ou bitbtn ....


GOSTEI 0
Massuda

Massuda

01/02/2006

não, é button ou bitbtn ....
Não entendi. O que eu escrevi é que o botão que você viu é um botão gerado pelo TToolbar com estilo tbsDropdown mais um TPopupMenu ligado na propriedade DropdownMenu do botão.


GOSTEI 0
Paullsoftware

Paullsoftware

01/02/2006

[quote:27e3717275=´PaullSoftware´]não, é button ou bitbtn ....
Não entendi. O que eu escrevi é que o botão que você viu é um botão gerado pelo TToolbar com estilo tbsDropdown mais um TPopupMenu ligado na propriedade DropdownMenu do botão.[/quote:27e3717275]

xiiiii foi mal massuda desculpa, mais vc sabe como faço pra gerar um menu semelhante, não quero usar toolbar quero criar em um botão normal mesmo...


GOSTEI 0
Michael

Michael

01/02/2006

Olá!

A classe [b:ad6dd3fdb0]TPopupMenu [/b:ad6dd3fdb0]possui o método [b:ad6dd3fdb0]PopUp[/b:ad6dd3fdb0], que server para exibir o menu em uma determinada posição da tela.

[b:ad6dd3fdb0]procedure[/b:ad6dd3fdb0] Popup(X, Y: Integer);


É importante ressaltar que [b:ad6dd3fdb0]X[/b:ad6dd3fdb0] e [b:ad6dd3fdb0]Y[/b:ad6dd3fdb0] são as coordenadas relativas à tela, e não do form onde o controle está. Para obter esses valores, deve-se usar o método [b:ad6dd3fdb0]ClientToScreen[/b:ad6dd3fdb0], da classe [b:ad6dd3fdb0]TControl [/b:ad6dd3fdb0] , que faz a ´transladação´ das coordenadas.

Então, para exibir corretamente o menu, vc pode usar o código abaixo:

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;


[]´s


GOSTEI 0
Paullsoftware

Paullsoftware

01/02/2006

valeu Michel funcionou direitinho... :lol:


GOSTEI 0
Michael

Michael

01/02/2006

Se vc for fazer isso em vários botões talvez seja interessante criar um componente com a funcionalidade embutida.

Ah, e meu nome é [b:442b054c80]Michael[/b:442b054c80], e não Michel... ;-)

[]´s


GOSTEI 0
Paullsoftware

Paullsoftware

01/02/2006

Se vc for fazer isso em vários botões talvez seja interessante criar um componente com a funcionalidade embutida. Ah, e meu nome é [b:f17473b718]Michael[/b:f17473b718], e não Michel... ;-) []´s



OK!


GOSTEI 0
POSTAR