Ejemplo n.º 1
0
        //---------------------------------------------------------------------------
        private void fn_MapGridSet(ref Grid grd, ref Label[,] lbStorg, int sel = 0)
        {
            //
            int nX = DM.STOR[sel]._nMaxCol;
            int nY = DM.STOR[sel]._nMaxRow;


            grd.Children.Clear();
            grd.Background = Brushes.White;
            grd.ColumnDefinitions.Clear();
            grd.RowDefinitions.Clear();

            int idx = 0, idxNo = 0;
            int nCol = nX;
            int nRow = nY;
            int iR = 0, iC = 0;

            lbStorg = (Label[, ])UserFunction.fn_ResizeArray(lbStorg, new int[] { nY, nX });

            for (int C = 0; C < nCol; C++)
            {
                grd.ColumnDefinitions.Add(new ColumnDefinition());
            }
            for (int R = 0; R < nRow; R++)
            {
                grd.RowDefinitions.Add(new RowDefinition());
            }

            for (int r = 0; r < nRow; r++)
            {
                for (int c = 0; c < nCol; c++)
                {
                    switch ((EN_DIS_DIR)DM.STOR[sel]._nDir)
                    {
                    case EN_DIS_DIR.ddTopLeft: iR = r;              iC = c;              break;       //

                    case EN_DIS_DIR.ddTopRight: iR = r; iC = (nCol - 1) - c; break;                   //

                    case EN_DIS_DIR.ddBtmRight: iR = (nRow - 1) - r; iC = (nCol - 1) - c; break;      //

                    case EN_DIS_DIR.ddBtmLeft: iR = (nRow - 1) - r; iC = c;              break;       //

                    default: return;
                    }


                    idx   = r * nCol + c;
                    idxNo = iR * nCol + iC;

                    grd.Children.Add(new Label());
                    Label lb = (grd.Children[idx] as Label);
                    lb.Content                    = "No." + idxNo + 1;
                    lb.BorderThickness            = new Thickness(1);
                    lb.BorderBrush                = System.Windows.Media.Brushes.Black;
                    lb.Tag                        = new Point(iR, iC);
                    lb.FontSize                   = 8;
                    lb.HorizontalContentAlignment = HorizontalAlignment.Left;
                    lb.VerticalContentAlignment   = VerticalAlignment.Top;
                    lb.MouseDown                 += Storage_Click;
                    lb.Margin                     = new Thickness(1);

                    Grid.SetColumn((grd.Children[idx] as Label), c);
                    Grid.SetRow((grd.Children[idx] as Label), r);

                    lbStorg[iR, iC] = lb;
                }
            }

            Border boder = new Border();

            boder.BorderBrush     = System.Windows.Media.Brushes.Black;
            boder.BorderThickness = new System.Windows.Thickness(1);
            boder.Margin          = new Thickness(-2);
            Grid.SetRowSpan(boder, 100);
            Grid.SetColumnSpan(boder, 100);
            grd.Children.Add(boder);
        }