Saiba como exibir menus popup quando o usuário clicar com o botão direito do mouse sobre as abas de um componente PageControl. Esta técnica, agrega uma funcionalidade a mais ao componente, permitindo que cada aba tenha o seu próprio menu.
Siga os passos abaixo para implementar o procedimento responsável pela exibição dos menus no PageControl:
1) Abra uma nova aplicação e insira os seguintes componentes: 1 PageControl (paleta Win32) e 2 PopupMenu (paleta Standard);
2) Só para exemplificar, adicione duas páginas (abas) ao PageControl com os respectivos nomes "Clientes" e "Fornecedores". Ajuste os componentes de forma que fique com a aparência abaixo. Caso deseje, você pode incluir alguns componentes no interior de cada uma das abas. Isto só não foi feito aqui porque o objetivo desta dica é explorar outras características do PageControl:
3) Insira alguns itens de menu para cada componente PopupMenu, sendo que PopupMenu1 terá correspondência com a aba "Clientes" e PopupMenu2 com a aba "Fornecedores";
4) Adicione a unit CommCtrl na seção Uses da unidade e declare, na seção public, uma procedure com o nome de TabMenuPopup, da seguinte forma:
procedure TabMenuPopup(APageControl: TPageControl; X, Y: Integer);
5) Implemente o código da procedure, desta maneira:
procedure TForm1.TabMenuPopup(APageControl: TPageControl; X, Y: Integer);
var
hi: TTCHitTestInfo;
TabIndex: Integer;
p: TPoint;
begin
hi.pt.x := X;
hi.pt.y := Y;
hi.flags := 0;
TabIndex := APageControl.Perform(TCM_HITTEST, 0, longint(@hi));
p.x := APageControl.Left + X;
p.y := APageControl.Top + y;
p := ClientToScreen(p);
// Permite o uso de diferentes menus para cada aba do PageControl...
case TabIndex of
0: {Primeira aba...}
PopupMenu1.Popup(P.x, P.Y);
1: {Segunda aba...}
PopupMenu2.Popup(P.x, P.Y);
end;
end;
6) No evento OnMouseDown do PageControl, digite o seguinte:
procedure TForm1.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
begin
TabMenuPopup(PageControl1, X, Y);
end;
end;
Nenhum comentário:
Postar um comentário