/// <summary>
        /// Hàm cập nhật bản vẽ
        /// </summary>
        /// <param name="bv">Bản vẽ cần cập nhật</param>
        /// <returns>bool</returns>
        public static bool CapNhatBanVe(BanVe value)
        {
            String     sql  = "UPDATE BanVe SET Template = '" + value.Template + "', TenBanVe = '" + value.TenBanVe + "', NgayChinhSua = '" + value.NgayChinhSua + "', DeltaX = '" + value.DeltaX + "', DeltaY = '" + value.DeltaY + "', NguoiDung = '" + value.NguoiDung + "', HienKhoangCach = '" + ((value.HienKhoangCach)?1:0) + "' WHERE ID = '" + value.ID + "'";
            Connection conn = new Connection();

            return(conn.SetData(sql));
        }
        /// <summary>
        /// Hàm tạo bản vẽ (không có template)
        /// </summary>
        /// <param name="tenBanVe">Tên bản vẽ</param>
        /// <returns>ID bản vẽ vừa tạo</returns>
        public static String TaoBanVe(String tenBanVe)
        {
            Connection       conn = new Connection();
            SQLiteDataReader dr;
            BanVe            banVeVuaTao = new BanVe();
            bool             flag        = true;
            //kiểm tra tên bản vẽ có trùng ko
            List <BanVe> danhSachBanVe = BS_BanVe.DanhSachBanVe();

            foreach (BanVe value in danhSachBanVe)
            {
                if (value.TenBanVe == tenBanVe)
                {
                    flag = false; break;
                }
            }
            //nếu ko trùng => tạo bản vẽ mới, trả về id bản vẽ vừa tạo
            if (flag)
            {
                String sql = "INSERT INTO BanVe (TenBanVe, NgayChinhSua) VALUES ('" + tenBanVe + "','" + DateTime.Now + "')";
                conn.SetData(sql);
                sql = "SELECT * FROM BanVe WHERE TenBanVe = '" + tenBanVe + "'";
                dr  = conn.GetData(sql);
                while (dr.Read())
                {
                    banVeVuaTao = new BanVe(dr["ID"].ToString(), dr["Template"].ToString(), dr["TenBanVe"].ToString(), dr.GetString(3), dr.GetDouble(4), dr.GetDouble(5), dr["NguoiDung"].ToString(), (dr.GetInt32(7) == 1) ? true : false);
                }
                return(banVeVuaTao.ID);
            }
            //nếu trùng => trả về null
            else
            {
                return(null);
            }
        }
 /// <summary>
 /// Hàm lấy bản vẽ từ ID tương ứng
 /// </summary>
 /// <param name="ID">ID bản vẽ</param>
 /// <returns>BanVe</returns>
 public static BanVe BanVe(String ID)
 {
     BanVe danhSachBanVe = new BanVe();
     String sql = "SELECT * FROM BanVe WHERE ID = '" + ID + "'";
     Connection conn = new Connection();
     SQLiteDataReader dr = conn.GetData(sql);
     while (dr.Read())
     {
         danhSachBanVe = new BanVe(dr["ID"].ToString(), dr["Template"].ToString(), dr["TenBanVe"].ToString(), dr.GetString(3), dr.GetDouble(4), dr.GetDouble(5), dr["NguoiDung"].ToString(), (dr.GetInt32(7) == 1)? true:false);
     }
     return danhSachBanVe;           
 }
        /// <summary>
        /// Hàm lấy bản vẽ từ ID tương ứng
        /// </summary>
        /// <param name="ID">ID bản vẽ</param>
        /// <returns>BanVe</returns>
        public static BanVe BanVe(String ID)
        {
            BanVe            danhSachBanVe = new BanVe();
            String           sql           = "SELECT * FROM BanVe WHERE ID = '" + ID + "'";
            Connection       conn          = new Connection();
            SQLiteDataReader dr            = conn.GetData(sql);

            while (dr.Read())
            {
                danhSachBanVe = new BanVe(dr["ID"].ToString(), dr["Template"].ToString(), dr["TenBanVe"].ToString(), dr.GetString(3), dr.GetDouble(4), dr.GetDouble(5), dr["NguoiDung"].ToString(), (dr.GetInt32(7) == 1)? true:false);
            }
            return(danhSachBanVe);
        }
 private void loadFile_FormMoBanVeDatabase(String idHoChieu)
 {
     this.hoChieuChinh = BS_HoChieu.HoChieu(idHoChieu);
     this.banVeChinh = BS_BanVe.BanVe(this.hoChieuChinh.MaBanVe);
     List<LoKhoan> danhSachLoKhoan = BS_LoKhoan.DanhSachLoKhoan(idHoChieu);
     List<Circle> danhSachCircle = new List<Circle>();
     mgCircles = new ManageCircle();
     //dựng bản vẽ mới          
     //this.banVeChinh.HienKhoangCach = false;
     this.Text = "Bản vẽ: [" + this.banVeChinh.TenBanVe + "]";
     Lcad.DrwLoad(hDrw, BS_Template.ChonTemplate(this.banVeChinh.Template).DuongDan, this.Handle, hWnd);
     layerLoMin = Lcad.DrwAddLayer(hDrw, "LoMin", "cyan", 0, Lcad.LC_LWEIGHT_DEFAULT);
     layerLuoiKichThuoc = Lcad.DrwAddLayer(hDrw, "LuoiKichThuoc", "foreground", 0, Lcad.LC_LWEIGHT_DEFAULT);
     int hBlockModel = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);
     foreach (LoKhoan value in danhSachLoKhoan)
     {
         int hEntCircle = Lcad.BlockAddCircle(hBlockModel, value.ToaDoX, value.ToaDoY, value.BanKinh, false);
         Lcad.PropPutInt(hEntCircle, Lcad.LC_PROP_ENT_ID, int.Parse(value.MaLoKhoan));
         Lcad.PropPutInt(hEntCircle, Lcad.LC_PROP_ENT_KEY, keyCircle);
         Lcad.PropPutStr(hEntCircle, Lcad.LC_PROP_ENT_LAYER, "LoMin");
         danhSachCircle.Add(new Circle(hEntCircle));
     }
     mgCircles.AddListCircle(danhSachCircle);
     if (banVeChinh.HienKhoangCach)
     {
         Lcad.LayerClear(layerLuoiKichThuoc, hBlockModel);
         DungLuoiKichThuoc();
     }
     //vẽ lại hình
     Lcad.DrwRegenViews(hDrw, 0);
     Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
     BS_LiteCAD.ShowNotifyAutoHide(elementHost1, this.banVeChinh.TenBanVe + " - đã mở");
     //mở form dựng lưới lỗ khoan
     if(mgCircles.GetListCircles().Count == 0)
     {
         FormXayDungLoKhoan fm = new FormXayDungLoKhoan();
         fm.MyGetData = new FormXayDungLoKhoan.GetData(loadFile_FormXayDungLoKhoan);
         fm.Show();
     }          
 }
 //mở bản vẽ
 private void barButtonItem_OpenFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     try
     {
         //filename = Lcad.DgGetFileName(panelControl_hWnd.Handle, Lcad.LC_DG_SELFILE);
         OpenFileDialog filename = new OpenFileDialog();
         filename.Title = "Open file LiteCAD";
         filename.Filter = "Drawing liteCAD|*.lcd;*.dwg;*.dxf;*.shp|all file|*.*";
         if (filename.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             if (filename.FileName != "")
             {
                 this.hoChieuChinh = new HoChieu();
                 this.banVeChinh = new BanVe();
                 //this.banVeChinh.HienKhoangCach = false;
                 this.Text = "Bản vẽ: [" + filename.FileName + "]";
                 Lcad.DrwLoad(hDrw, filename.FileName, this.Handle, hWnd);
                 layerLoMin = Lcad.DrwAddLayer(hDrw, "LoMin", "cyan", 0, Lcad.LC_LWEIGHT_DEFAULT);
                 layerLuoiKichThuoc = Lcad.DrwAddLayer(hDrw, "LuoiKichThuoc", "foreground", 0, Lcad.LC_LWEIGHT_DEFAULT);
                 GetCirlcesFromAutocadFile();
                 Lcad.DrwRegenViews(hDrw, 0);
                 BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Bản vẽ sẵn sàng");
             }
         }
     }
     catch
     {
         BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Không hiển thị được bản vẽ");
     }
 }
 private void loadFile_FormBanVeMoi(String idHoChieu)
 {
     this.hoChieuChinh = BS_HoChieu.HoChieu(idHoChieu);
     this.banVeChinh = BS_BanVe.BanVe(this.hoChieuChinh.MaBanVe);                    
     mgCircles = new ManageCircle();
     //dựng bản vẽ mới
     this.Text = "Hộ chiếu: [" + this.hoChieuChinh.TenHoChieu + "]";
     Lcad.DrwLoad(hDrw, BS_Template.ChonTemplate(this.banVeChinh.Template).DuongDan, this.Handle, hWnd);
     layerLoMin = Lcad.DrwAddLayer(hDrw, "LoMin", "cyan", 0, Lcad.LC_LWEIGHT_DEFAULT);
     layerLuoiKichThuoc = Lcad.DrwAddLayer(hDrw, "LuoiKichThuoc", "foreground", 0, Lcad.LC_LWEIGHT_DEFAULT);
     //vẽ lại hình
     Lcad.DrwRegenViews(hDrw, 0);
     Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
     //mở form dựng lưới lỗ khoan
     if (mgCircles.GetListCircles().Count == 0)
     {
         FormXayDungLoKhoan fm = new FormXayDungLoKhoan();
         fm.MyGetData = new FormXayDungLoKhoan.GetData(loadFile_FormXayDungLoKhoan);
         fm.Show();
     }
 }
 /// <summary>
 /// Hàm cập nhật bản vẽ
 /// </summary>
 /// <param name="bv">Bản vẽ cần cập nhật</param>
 /// <returns>bool</returns>
 public static bool CapNhatBanVe(BanVe value)
 {
     String sql = "UPDATE BanVe SET Template = '" + value.Template + "', TenBanVe = '" + value.TenBanVe + "', NgayChinhSua = '" + value.NgayChinhSua + "', DeltaX = '" + value.DeltaX + "', DeltaY = '" + value.DeltaY + "', NguoiDung = '" + value.NguoiDung + "', HienKhoangCach = '" + ((value.HienKhoangCach)?1:0) + "' WHERE ID = '" + value.ID + "'";
     Connection conn = new Connection();
     return conn.SetData(sql);
 }
 /// <summary>
 /// Hàm tạo bản vẽ (không có template)
 /// </summary>
 /// <param name="tenBanVe">Tên bản vẽ</param>
 /// <returns>ID bản vẽ vừa tạo</returns>
 public static String TaoBanVe(String tenBanVe)
 {
     Connection conn = new Connection();
     SQLiteDataReader dr;
     BanVe banVeVuaTao = new BanVe();
     bool flag = true;
     //kiểm tra tên bản vẽ có trùng ko
     List<BanVe> danhSachBanVe = BS_BanVe.DanhSachBanVe();
     foreach (BanVe value in danhSachBanVe)
     {
         if (value.TenBanVe == tenBanVe)
         {
             flag = false; break;
         }
     }
     //nếu ko trùng => tạo bản vẽ mới, trả về id bản vẽ vừa tạo
     if (flag)
     {
         String sql = "INSERT INTO BanVe (TenBanVe, NgayChinhSua) VALUES ('" + tenBanVe + "','" + DateTime.Now + "')";
         conn.SetData(sql);
         sql = "SELECT * FROM BanVe WHERE TenBanVe = '" + tenBanVe + "'";
         dr = conn.GetData(sql);
         while (dr.Read())
         {
             banVeVuaTao = new BanVe(dr["ID"].ToString(), dr["Template"].ToString(), dr["TenBanVe"].ToString(), dr.GetString(3), dr.GetDouble(4), dr.GetDouble(5), dr["NguoiDung"].ToString(), (dr.GetInt32(7) == 1) ? true : false);
         }
         return banVeVuaTao.ID;
     }
     //nếu trùng => trả về null
     else
     {
         return null;
     }
 }