예제 #1
0
        public void AddBreadCrumb(string designacao, long idNivel, long idNivelUpper, int imageIndex)
        {
            // adicionar o bread crumb ao arraylist
            BreadCrumbsPath.BreadCrumb bc = new BreadCrumbsPath.BreadCrumb(designacao, idNivel, idNivelUpper);
            mPath.Add(bc);

            CreateBreadCrumbControl(designacao, imageIndex, bc);
        }
예제 #2
0
        private void CreateBreadCrumbControl(string designacao, int imageIndex, BreadCrumbsPath.BreadCrumb bc)
        {
            // componente gráfico correspondente ao novo elemento do caminho
            LinkLabel lLbl;

            lLbl          = new LinkLabel();
            lLbl.Text     = designacao;
            lLbl.Tag      = bc;
            lLbl.AutoSize = true;
            lLbl.Top      = mPaddingTop;
            lLbl.Click   += new EventHandler(this.lLbl_Click);

            // icone que ilustra o tipo de elemento a adicionar ao caminho
            Label iconLbl;

            iconLbl            = new Label();
            iconLbl.Top        = 2;
            iconLbl.ImageList  = mImgList;
            iconLbl.ImageIndex = imageIndex;

            iconLbl.Width = 20;

            Label lbl;

            lbl          = new Label();
            lbl.Text     = ">";
            lbl.Top      = mPaddingTop;
            lbl.AutoSize = true;

            //  testar se o novo elemento do caminho não ultrapassa o espaço disponivel
            if (mLastPosition == 0)
            {
                // o controlo gráfico ainda não contem nenhum elemento
                iconLbl.Left = mLastPosition + mSpacing;
                breadCrumbsPanel.Controls.Add(iconLbl);
                mLastPosition += mSpacing + iconLbl.Width;

                lLbl.Left = mLastPosition;
            }
            else if ((breadCrumbsPanel.Width - mLastPosition) > (mSpacing + lbl.Width + mSpacing + lLbl.Width + mSpacing))
            {
                //existe espaço para adicionar o novo elemento ao controlo gráfico

                lbl.Left = mLastPosition;
                breadCrumbsPanel.Controls.Add(lbl);
                mLastPosition += mSpacing + lbl.Width;

                iconLbl.Left = mLastPosition;
                breadCrumbsPanel.Controls.Add(iconLbl);
                mLastPosition += iconLbl.Width;

                lLbl.Left = mLastPosition;
            }
            else
            {
                // não existe espaço para adicionar o novo elemento do caminho no controlo gráfico
                // pelo que é necessário reorganizar o seu conteúdo (é garantido que o último elemento
                // inserido no controlo fica visível)

                int acerto = ((mSpacing + lbl.Width + mSpacing + iconLbl.Width + lLbl.Width) - (breadCrumbsPanel.Width - mLastPosition));
                breadCrumbsPanel.Width += acerto;
                breadCrumbsPanel.Left   = panel2.Width - breadCrumbsPanel.Width;
                begin.Enabled           = true;
                begin.Visible           = true;
                end.Visible             = true;

                lbl.Left = mLastPosition;
                breadCrumbsPanel.Controls.Add(lbl);
                mLastPosition += mSpacing + lbl.Width;

                iconLbl.Left = mLastPosition;
                breadCrumbsPanel.Controls.Add(iconLbl);
                mLastPosition += iconLbl.Width;

                lLbl.Left = mLastPosition;
            }

            breadCrumbsPanel.Controls.Add(lLbl);
            mLastPosition += mSpacing + lLbl.Width + mSpacing;

            if (mPath.Count > 1)
            {
                upLevel.Enabled = true;
            }
        }
예제 #3
0
		public void AddBreadCrumb(string designacao, long idNivel, long idNivelUpper, int imageIndex) 
		{	
			// adicionar o bread crumb ao arraylist
			BreadCrumbsPath.BreadCrumb bc = new BreadCrumbsPath.BreadCrumb(designacao, idNivel, idNivelUpper);
			mPath.Add(bc);

            CreateBreadCrumbControl(designacao, imageIndex, bc);
		}