PageControl - menus popup diferentes para cada aba do pagecontrol |
Top Previous Next |
Menus Popup No PageControl
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;
7) Rode e teste a aplicação.
|