Menu em Botão

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

Respostas

01/02/2006

Massuda

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.


Responder Citar

01/02/2006

Paullsoftware

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 ....


Responder Citar

01/02/2006

Massuda

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.


Responder Citar

01/02/2006

Paullsoftware

[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...


Responder Citar

01/02/2006

Michael

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


Responder Citar

01/02/2006

Paullsoftware

valeu Michel funcionou direitinho... :lol:


Responder Citar

01/02/2006

Michael

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


Responder Citar

06/02/2006

Paullsoftware

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!


Responder Citar