Có ai biết grid control nào miễn phí không?

Liên hệ QC
Sao em đăng ký iGrid không được vậy các anh.
Em vào Start run gỏ: regsvr32 iGrid650_10Tec.OCX

- Win 32bit: Copy *.ocx vào C:\Windows\System32
+ Chạy CMD với quyền admin
+ Nhập tiếp: regsvr32 *.ocx > Enter

- Win 64 bit: Copy *.ocx vào C:\Windows\SysWoW64 ( không phải C:\Windows\System32)
Chạy CMD với quyền admin
- Nhập lệnh: CD\Windows\syswow64 -> Enter
-Nhập tiếp: regsvr32 *.ocx > Enter

Lưu ý: * là tên thư viện .ocx
 
Làm xong chương trình khoảng tuần nay mà chỉnh sửa tùm lum, đến nay mới tạm xong!
Gửi lên cho bà con tham khảo, ai thích thì lấy về xài
Yêu cầu:
1> Máy tính cài Office 32 bit (Windows sao cũng được)
2> Đã cài Microsoft Windows Common Controls-2 6.0 (SP6) (file mscomct2.ocx)
3> Đã cài iGrid Control (file iGrid 650_10Tec.ocx)
Thiếu 1 trong 3 món trên ---> Khỏi xài
(Do chưa rành iGrid nên chắc còn nhiều chỗ xử lý hơi.. ngố. Nhưng thôi kệ, từ từ nghiên cứu tiếp)
 

File đính kèm

  • Overtime_Request_V2.6.xlsb
    294.4 KB · Đọc: 46
Làm xong chương trình khoảng tuần nay mà chỉnh sửa tùm lum, đến nay mới tạm xong!
Gửi lên cho bà con tham khảo, ai thích thì lấy về xài
Yêu cầu:
1> Máy tính cài Office 32 bit (Windows sao cũng được)
2> Đã cài Microsoft Windows Common Controls-2 6.0 (SP6) (file mscomct2.ocx)
3> Đã cài iGrid Control (file iGrid 650_10Tec.ocx)
Thiếu 1 trong 3 món trên ---> Khỏi xài
(Do chưa rành iGrid nên chắc còn nhiều chỗ xử lý hơi.. ngố. Nhưng thôi kệ, từ từ nghiên cứu tiếp)
Anh mở thử thì bị lỗi "không thể tìm thấy Project bị thiếu hoặc thư viện trên hệ thống".
Anh nghĩ do 1 biến nào đó thiếu hoặc chưa đúng Type, nhưng không xem lại.

Loi 1.JPG Loi 2.JPG
 
Lần chỉnh sửa cuối:
Bài 42 em nói rõ phải thỏa 3 điều kiện thì mới chạy được
Đoán là anh chưa cài mấy ocx liệt kê tại 2 điều kiện dưới
Do em nêu:
Mã:
2> Đã cài Microsoft Windows Common Controls-2 6.0 (SP6) (file mscomct2.ocx)
3> Đã cài iGrid Control (file iGrid 650_10Tec.ocx)

Nên anh tải File và xem thử thôi, chứ không có ý định dùng.
 
Làm xong chương trình khoảng tuần nay mà chỉnh sửa tùm lum, đến nay mới tạm xong!
Gửi lên cho bà con tham khảo, ai thích thì lấy về xài
Yêu cầu:
1> Máy tính cài Office 32 bit (Windows sao cũng được)
2> Đã cài Microsoft Windows Common Controls-2 6.0 (SP6) (file mscomct2.ocx)
3> Đã cài iGrid Control (file iGrid 650_10Tec.ocx)
Thiếu 1 trong 3 món trên ---> Khỏi xài
(Do chưa rành iGrid nên chắc còn nhiều chỗ xử lý hơi.. ngố. Nhưng thôi kệ, từ từ nghiên cứu tiếp)
Chào bác ndu
mình đã tải, đăng ký thành công igrid, còn mscomct2.ocx thì máy mình đã đăng ký sẵn rồi.
Khi mở lên thì bị báo lỗi như dưới
error1.PNG

Sau khi bấm ok, chạy thử button "Show Request" thì báo lỗi


error2.PNG

Bấm vài lần Ok thì hiện bảng nhưng bị lỗi font

error3.PNG
Bác xem giúp nha. Cảm ơn bác.
 
Chào bác ndu
mình đã tải, đăng ký thành công igrid, còn mscomct2.ocx thì máy mình đã đăng ký sẵn rồi.
Khi mở lên thì bị báo lỗi như dưới
View attachment 197114

Sau khi bấm ok, chạy thử button "Show Request" thì báo lỗi


View attachment 197115

Bấm vài lần Ok thì hiện bảng nhưng bị lỗi font

View attachment 197116
Bác xem giúp nha. Cảm ơn bác.
Hình như bạn đã đổi tên file thì phải? File của tôi Overtime_Request_V2.6.xlsb nhưng bạn sửa thành Overtime_Request_V2.6 (iGrid).xlsb, đúng không?
Nếu để nguyên tên file như cũ thì sẽ không việc gì. Tuy nhiên đây cũng là sơ sót của tôi. Câu lệnh:
Mã:
Application.Run ThisWorkbook.Name & "!........."
Sẽ bị lỗi với đường dẫn có ký tự đặc biệt. Lý ra câu lệnh "chắc ăn" phải vầy:
Mã:
Application.Run "'" & ThisWorkbook.Name & "'!......."
(thêm 2 dấu nháy đơn)
Bạn thử lại file mới xem sao nhé
 

File đính kèm

  • Overtime_Request_V2.6 (iGrid).xlsb
    294.7 KB · Đọc: 37
Hình như bạn đã đổi tên file thì phải? File của tôi Overtime_Request_V2.6.xlsb nhưng bạn sửa thành Overtime_Request_V2.6 (iGrid).xlsb, đúng không?
Nếu để nguyên tên file như cũ thì sẽ không việc gì. Tuy nhiên đây cũng là sơ sót của tôi. Câu lệnh:
Mã:
Application.Run ThisWorkbook.Name & "!........."
Sẽ bị lỗi với đường dẫn có ký tự đặc biệt. Lý ra câu lệnh "chắc ăn" phải vầy:
Mã:
Application.Run "'" & ThisWorkbook.Name & "'!......."
(thêm 2 dấu nháy đơn)
Bạn thử lại file mới xem sao nhé
Cảm ơn bác nhiều. Em đang ở ngoài đường chưa thử nhưng chắc sẽ hết lỗi.

Về phần igrid này em thấy nó rất thú vị, tuy nhiên nó quá xa lạ với em, tìm trên diễn đàn mình cũng không được chia sẻ nhiều.

Không biết bác có thể lập 1 topic chuyên về igrid để các anh em có thể tiếp cận thêm kiến thức mới này không ạ, thiết nghĩ biết đâu các cao thủ khác có thể chia sẻ thêm nhiều tuyệt chiêu nữa thì sao?

Biết đâu sau này nó sẽ thay thế, bù đắp những khiếm khuyết của listbox, listview luôn!!!

Chúc bác sức khỏe tốt nhé.
 
Lần chỉnh sửa cuối:
Cảm ơn bác nhiều. Em đang ở ngoài đường chưa thử nhưng chắc sẽ hết lỗi.
Về phần igrid này em thấy nó rất thú vị, tuy nhiên nó quá xa lạ với em, tìm trên diễn đàn mình cũng không được chia sẻ nhiều.
Không biết bác có thể lập 1 topic chuyên về igrid để các anh em có thể tiếp cận thêm kiến thức mới này không ạ, thiết nghĩ biết đâu các cao thủ khác có thể chia sẻ thêm nhiều tuyệt chiêu nữa thì sao?

Biết đâu sau này nó sẽ thay thế, bù đắp những khiếm khuyết của listbox, listview luôn!!!
Chúc bác sức khỏe tốt
Nếu bạn tải bộ cài đặt từ trang chủ thì bên trong sẽ thấy có file iGrid650_10Tec.chm, hướng dẫn toàn bộ cách dùng liên quan đến phương thức, thuộc tính của đối tượng
Tôi cũng đọc hướng dẫn từ file này rồi tự thí nghiệm thôi
 
Chào bác @ndu96081631,
Em có tải file của bác về ngâm cứu để áp dụng thử thì em gặp trục trặc, e đã được dữ liệu load lên form tuy nhiên phần header thì nó nằm ở 1 nơi khác, không trùng với các cột của dữ liệu.
Với lại em nghe các bác nói tốc độ Igrid rất nhanh nhưng sao em load thử 8000 dòng thì cũng như listview và listbox. Có thể do code tào lao nên Bác xem và sửa giúp em nhé.
Cảm ơn bác.
 

File đính kèm

  • iGrid_Test data.xlsm
    417.5 KB · Đọc: 20
Lần chỉnh sửa cuối:
Chào bác @ndu96081631,
Em có tải file của bác về ngâm cứu để áp dụng thử thì em gặp trục trặc, e đã được dữ liệu load lên form tuy nhiên phần header thì nó nằm ở 1 nơi khác, không trùng với các cột của dữ liệu.
Với lại em nghe các bác nói tốc độ Igrid rất nhanh nhưng sao em load thử 8000 dòng thì cũng như listview và listbox. Có thể do code tào lao nên Bác xem và sửa giúp em nhé.
Cảm ơn bác.
Bác @ndu96081631 ơi, giúp em với.
 
Từ từ bạn à! Mấy hôm nay máy tính của tôi bị trục trặc, đang cài lại nên chưa giúp được. Để chiều về xem sao nhé.
Nói riêng về vụ nhanh chậm: nếu bạn add từng cell vào iGrid thì sẽ chậm. Muốn nhanh phải nạp iGrid từ mảng giống cách tôi đã làm
 
Từ từ bạn à! Mấy hôm nay máy tính của tôi bị trục trặc, đang cài lại nên chưa giúp được. Để chiều về xem sao nhé.
Nói riêng về vụ nhanh chậm: nếu bạn add từng cell vào iGrid thì sẽ chậm. Muốn nhanh phải nạp iGrid từ mảng giống cách tôi đã làm
Dạ, em cảm ơn bác trước, trong file em có add mảng luôn đấy ạ. Có điều cách add mảng của iGrid nó không giống với listview và listbox nên e mò tùm lum code, râu ông này cắm cằm bà kia khiến nó chạy lộn xộn, chậm và header column không đúng list items đã add ạ.
 
Dạ, em cảm ơn bác trước, trong file em có add mảng luôn đấy ạ. Có điều cách add mảng của iGrid nó không giống với listview và listbox nên e mò tùm lum code, râu ông này cắm cằm bà kia khiến nó chạy lộn xộn, chậm và header column không đúng list items đã add ạ.
Sửa toàn bộ code trong UserForm1 của bạn thành vầy:
Mã:
Private Sub UserForm_Initialize()
  Dim rngSource As Range
  Set rngSource = Sheet1.Range("A1", Sheet1.Range("F20000").End(xlUp))
  LoadData Me.iGrid1, rngSource
End Sub
Private Sub LoadData(ByVal iGrid As Control, ByVal SourceData As Range)
  Dim lGridRow As Long, lGridCol As Long
  Dim arrColWidth, arrColHRD, arrSource, aRes()
  On Error Resume Next
  arrSource = Intersect(SourceData, SourceData.Offset(1)).Value
  arrColWidth = Array(90, 150, 290, 410, 410, 410)
  arrColHRD = SourceData.Resize(1).Value
  ReDim aRes(1 To UBound(arrSource, 1), 1 To UBound(arrSource, 2))
  With iGrid
    .BeginUpdate
    .Font = "Times New Roman"
    .Header.Font = "Times New Roman"
    .Header.Font.Bold = True
    .Header.Height = 25
    .MultiSelect = True
    .RowMode = True
    .RowCount = UBound(arrSource, 1)
    For lGridCol = 1 To UBound(arrColHRD, 2)
      .AddCol lGridCol, arrColHRD(1, lGridCol), arrColWidth(lGridCol - 1), 1, 1, , 1
      .ColHeaderForeColor(lGridCol) = &H800000
      For lGridRow = 1 To .RowCount
        aRes(lGridRow, lGridCol) = arrSource(lGridRow, lGridCol)
      Next
    Next
    .LoadFromArray 1, 1, aRes, False
    .EndUpdate
  End With
  If Err.Number Then MsgBox Err.Description
End Sub
 

File đính kèm

  • iGrid_Test data.xlsm
    412.8 KB · Đọc: 28
Sửa toàn bộ code trong UserForm1 của bạn thành vầy:
Mã:
Private Sub UserForm_Initialize()
  Dim rngSource As Range
  Set rngSource = Sheet1.Range("A1", Sheet1.Range("F20000").End(xlUp))
  LoadData Me.iGrid1, rngSource
End Sub
Private Sub LoadData(ByVal iGrid As Control, ByVal SourceData As Range)
  Dim lGridRow As Long, lGridCol As Long
  Dim arrColWidth, arrColHRD, arrSource, aRes()
  On Error Resume Next
  arrSource = Intersect(SourceData, SourceData.Offset(1)).Value
  arrColWidth = Array(90, 150, 290, 410, 410, 410)
  arrColHRD = SourceData.Resize(1).Value
  ReDim aRes(1 To UBound(arrSource, 1), 1 To UBound(arrSource, 2))
  With iGrid
    .BeginUpdate
    .Font = "Times New Roman"
    .Header.Font = "Times New Roman"
    .Header.Font.Bold = True
    .Header.Height = 25
    .MultiSelect = True
    .RowMode = True
    .RowCount = UBound(arrSource, 1)
    For lGridCol = 1 To UBound(arrColHRD, 2)
      .AddCol lGridCol, arrColHRD(1, lGridCol), arrColWidth(lGridCol - 1), 1, 1, , 1
      .ColHeaderForeColor(lGridCol) = &H800000
      For lGridRow = 1 To .RowCount
        aRes(lGridRow, lGridCol) = arrSource(lGridRow, lGridCol)
      Next
    Next
    .LoadFromArray 1, 1, aRes, False
    .EndUpdate
  End With
  If Err.Number Then MsgBox Err.Description
End Sub
Cảm ơn bác nhiều
File load tốc độ nhanh hơn listview rất nhiều và hỗ trợ unicode rất tốt ạ. Em có post lên file, thử tốc độ load của igrid và listview, đúng là 1 trời 1 vực. Vì 1 phần listview phải convert sang bộ font windows 1258 nên bị chậm đáng kể,
Trong file em có nhu cầu muốn search các nội dung cột "Tên khách hàng" trong iGrid như listview, nhưng em viết code na ná listview không được, bác xem giúp em vụ này nha. Chỉ có bác rành vụ igrid nên em chỉ biết bám víu vào bác thôi, bác thông cảm nha.
Chúc bác tối vui vẻ ạ.
 

File đính kèm

  • iGrid_Test data2.xlsm
    451.9 KB · Đọc: 12
Cảm ơn bác nhiều
File load tốc độ nhanh hơn listview rất nhiều và hỗ trợ unicode rất tốt ạ. Em có post lên file, thử tốc độ load của igrid và listview, đúng là 1 trời 1 vực. Vì 1 phần listview phải convert sang bộ font windows 1258 nên bị chậm đáng kể,
Trong file em có nhu cầu muốn search các nội dung cột "Tên khách hàng" trong iGrid như listview, nhưng em viết code na ná listview không được, bác xem giúp em vụ này nha. Chỉ có bác rành vụ igrid nên em chỉ biết bám víu vào bác thôi, bác thông cảm nha.
Chúc bác tối vui vẻ ạ.
Tôi sửa lại toàn bộ code của bạn
1> Đầu tiên là code khởi tạo và gọi UserForm
Mã:
Public rngSource As Range, arrSource()
Sub Button1_Click()
  RangeInitialize
  UserForm_iGrid.Show False
End Sub
Sub RangeInitialize()
  Set rngSource = Sheet1.Range("A1", Sheet1.Range("F20000").End(xlUp))
  arrSource = Intersect(rngSource.Offset(1), rngSource).Value
End Sub
2> Tiếp theo là code trong UserForm
Mã:
Private Sub UserForm_Initialize()
  Dim lGridCol As Long
  Dim arrColWidth
  If rngSource Is Nothing Then RangeInitialize
  'arrColWidth = Array(90, 150, 290, 410, 410, 410)
  arrColWidth = Array(49, 80, 150, 100, 170, 170)
  With Me.iGrid1
    .Font = "Times New Roman"
    .Header.Font = "Verdana"
    .Header.Font.Bold = True
    .Header.Height = 30
    .Header.Font.Size = 10
    .MultiSelect = True
    .RowMode = True
     For lGridCol = 1 To rngSource.Columns.Count
      .AddCol lGridCol, rngSource(1, lGridCol), arrColWidth(lGridCol - 1), 1, 1, , 1
      .ColHeaderForeColor(lGridCol) = &H800000
    Next
  End With
  LoadData Me.iGrid1, arrSource
End Sub
Private Sub LoadData(ByVal iGridObj As Object, ByVal SourceData As Variant)
  'SourceData không bao gom tiêu de
  Dim lGridRow As Long, lGridCol As Long, lGridRowCount As Long
  Dim aRes()
  On Error Resume Next
  aRes = SourceData
  lGridRowCount = UBound(aRes, 1)
  On Error GoTo 0
  With iGridObj
    .BeginUpdate
    .Clear
    If lGridRowCount Then
      .RowCount = lGridRowCount
      .LoadFromArray 1, 1, aRes, False
    End If
    .EndUpdate
  End With
  If Err.Number Then MsgBox Err.Description
End Sub
Private Sub Cmd_Search_Click()
  Dim aRes()
  On Error Resume Next
  aRes = Filter2DArray(arrSource, 3, TextBox1.Value & "*", False)
  LoadData Me.iGrid1, aRes
End Sub
Lần cải tiến này có 1 điểm khá quan trọng, đó là không cần đến vòng lập vẫn có thể nạp list vào iGrid (đố bạn nhận ra đó là chỗ thay đổi nào? Ẹc... Ẹc...)
===============
Lưu ý: Nếu bạn muốn canh lề phải cho cột STT, chỉ cần thêm đoạn:
Mã:
For lGridRow = 1 To .RowCount
  .CellAlignH(lGridRow, 1) = 2
Next
Code canh lề phải này đương nhiên phải dùng vòng lập (không giống như Excel có thể canh 1 lần cho nguyên cột)
===============
Tôi cũng nghi ngờ rằng bạn sẽ hỏi đến chuyện: "Làm sao lấy được dữ liệu từ iGrid xuống sheet?". Vậy tôi làm luôn
Mã:
Private Sub CommandButton1_Click()
  Sheet2.Range("A1").CurrentRegion.Clear
  With Me.iGrid1
    If .RowCount Then
      ReDim arr(1 To .RowCount, 1 To .ColCount)
      .LoadIntoArray 1, 1, arr, False
      Sheet2.Range("A1").Resize(.RowCount, .ColCount).Value = arr
    End If
  End With
End Sub
Thay Sheet2.Range("A1") thành tham chiếu khác phù hợp nhé
 

File đính kèm

  • iGrid_Test data_3.xlsm
    448.7 KB · Đọc: 22
Lần chỉnh sửa cuối:
Tôi sửa lại toàn bộ code của bạn
1> Đầu tiên là code khởi tạo và gọi UserForm
Mã:
Public rngSource As Range, arrSource()
Sub Button1_Click()
  RangeInitialize
  UserForm_iGrid.Show False
End Sub
Sub RangeInitialize()
  Set rngSource = Sheet1.Range("A1", Sheet1.Range("F20000").End(xlUp))
  arrSource = Intersect(rngSource.Offset(1), rngSource).Value
End Sub
2> Tiếp theo là code trong UserForm
Mã:
Private Sub UserForm_Initialize()
  Dim lGridCol As Long
  Dim arrColWidth
  If rngSource Is Nothing Then RangeInitialize
  'arrColWidth = Array(90, 150, 290, 410, 410, 410)
  arrColWidth = Array(49, 80, 150, 100, 170, 170)
  With Me.iGrid1
    .Font = "Times New Roman"
    .Header.Font = "Verdana"
    .Header.Font.Bold = True
    .Header.Height = 30
    .Header.Font.Size = 10
    .MultiSelect = True
    .RowMode = True
     For lGridCol = 1 To rngSource.Columns.Count
      .AddCol lGridCol, rngSource(1, lGridCol), arrColWidth(lGridCol - 1), 1, 1, , 1
      .ColHeaderForeColor(lGridCol) = &H800000
    Next
  End With
  LoadData Me.iGrid1, arrSource
End Sub
Private Sub LoadData(ByVal iGridObj As Object, ByVal SourceData As Variant)
  'SourceData không bao gom tiêu de
  Dim lGridRow As Long, lGridCol As Long, lGridRowCount As Long
  Dim aRes()
  On Error Resume Next
  aRes = SourceData
  lGridRowCount = UBound(aRes, 1)
  On Error GoTo 0
  With iGridObj
    .BeginUpdate
    .Clear
    If lGridRowCount Then
      .RowCount = lGridRowCount
      .LoadFromArray 1, 1, aRes, False
    End If
    .EndUpdate
  End With
  If Err.Number Then MsgBox Err.Description
End Sub
Private Sub Cmd_Search_Click()
  Dim aRes()
  On Error Resume Next
  aRes = Filter2DArray(arrSource, 3, TextBox1.Value & "*", False)
  LoadData Me.iGrid1, aRes
End Sub
Lần cải tiến này có 1 điểm khá quan trọng, đó là không cần đến vòng lập vẫn có thể nạp list vào iGrid (đố bạn nhận ra đó là chỗ thay đổi nào? Ẹc... Ẹc...)
===============
Lưu ý: Nếu bạn muốn canh lề phải cho cột STT, chỉ cần thêm đoạn:
Mã:
For lGridRow = 1 To .RowCount
  .CellAlignH(lGridRow, 1) = 2
Next
Code canh lề phải này đương nhiên phải dùng vòng lập (không giống như Excel có thể canh 1 lần cho nguyên cột)
===============
Tôi cũng nghi ngờ rằng bạn sẽ hỏi đến chuyện: "Làm sao lấy được dữ liệu từ iGrid xuống sheet?". Vậy tôi làm luôn
Mã:
Private Sub CommandButton1_Click()
  Sheet2.Range("A1").CurrentRegion.Clear
  With Me.iGrid1
    If .RowCount Then
      ReDim arr(1 To .RowCount, 1 To .ColCount)
      .LoadIntoArray 1, 1, arr, False
      Sheet2.Range("A1").Resize(.RowCount, .ColCount).Value = arr
    End If
  End With
End Sub
Thay Sheet2.Range("A1") thành tham chiếu khác phù hợp nhé
Cảm ơn bác
Bác quả thật đi guốc trong bụng em rồi. Em đã add code đưa dữ liệu vào sheet cho cả listview và igrid. Ở dưới là 1 vài yêu cầu, tuy có hơi phiền bác nhưng quả thật là nhu cầu khá cơ bản ạ.
Trong file em mới đính kèm, em nhờ bác hỗ trợ các nội dung sau:
- Khi chọn dòng nào trong igrid thì dữ liệu sẽ hiển thị trong các text box tương ứng ở dưới.
- Button "Add New" lấy dữ liệu gõ từ textbox vào trong igrid
- Button "Save Edit" lưu dữ liệu đã chỉnh sửa từ các textbox vào igrid và sheet1
- Button "Delete" xóa luôn dòng đã chọn trong igrid và refresh lại bảng igrid dồn lấp đi vòng vừa bị xóa.
Em nghĩ bấy nhiêu đó tính năng đã đủ nhu cầu cơ bản của mọi người cần dùng đến userform. Có lẻ sau khi bác hoàn thành xong phần này thì mọi người có thể rời xa cả listbox và listview để dùng igrid với đầy đủ tính năng "đẹp, hỗ trợ unicode, có thể cuộn chuột, sort theo tiêu đề, format tiêu đề, ...".
Cảm ơn bác đã khai sáng cho em và mọi người 1 control tuyệt vời như vậy. Hy vọng bác sẽ tiếp tục hỗ trợ em ạ.
Chúc bác buổi tối vui vẻ.
 

File đính kèm

  • iGrid_Test data_4.xlsm
    613.6 KB · Đọc: 18
Cảm ơn bác
Bác quả thật đi guốc trong bụng em rồi. Em đã add code đưa dữ liệu vào sheet cho cả listview và igrid. Ở dưới là 1 vài yêu cầu, tuy có hơi phiền bác nhưng quả thật là nhu cầu khá cơ bản ạ.
Trong file em mới đính kèm, em nhờ bác hỗ trợ các nội dung sau:
- Khi chọn dòng nào trong igrid thì dữ liệu sẽ hiển thị trong các text box tương ứng ở dưới.
- Button "Add New" lấy dữ liệu gõ từ textbox vào trong igrid
- Button "Save Edit" lưu dữ liệu đã chỉnh sửa từ các textbox vào igrid và sheet1
- Button "Delete" xóa luôn dòng đã chọn trong igrid và refresh lại bảng igrid dồn lấp đi vòng vừa bị xóa.
Em nghĩ bấy nhiêu đó tính năng đã đủ nhu cầu cơ bản của mọi người cần dùng đến userform. Có lẻ sau khi bác hoàn thành xong phần này thì mọi người có thể rời xa cả listbox và listview để dùng igrid với đầy đủ tính năng "đẹp, hỗ trợ unicode, có thể cuộn chuột, sort theo tiêu đề, format tiêu đề, ...".
Cảm ơn bác đã khai sáng cho em và mọi người 1 control tuyệt vời như vậy. Hy vọng bác sẽ tiếp tục hỗ trợ em ạ.
Chúc bác buổi tối vui vẻ.
Bài toán dạng này tôi đã từng làm cách đây không lâu. Nói chung là không khó nhưng cũng không dễ.
- Dễ: bởi toàn những code thông thường
- Khó: bẫy lỗi cũng như phải tính hết được những tình huống có thể xảy ra
Lấy ví dụ 1 tình huống: Bạn gõ vào các textbox và bấm Save Edit thì ta có 2 trường hợp xảy ra:
1> Số ID No chưa tồn tại, ta tiến hành lưu giá trị mới vào dòng cuối cùng của dữ liệu.
2> Số ID No đã tồn tại, phải cảnh báo người dùng tùy chọn bằng MsgBox Yes-No. Nếu bấm Yes nghĩa là sửa lại dòng có số ID No vừa gõ theo giá trị mới hoặc bấm No thì không làm gì cả
Nói sơ qua 1 tình huống như vậy cho bạn hình dung và hiểu rằng muốn hoàn thành nó phải cần nhiều thời gian
 
MSFlexGrid ocx của VB6 thì sao anh ? Anh test thử đi.
Hay MSDATGRD.OCX, MS VB6 Datagrid control
Hay anh thử cái iGrid control Ocx này đi, support cho VBA
https://10tec.com/activex-grid/

Thằng này mất phí mà, viết cho VB6, dùng rất ngon. Nhưng bác ndu không thích c r a c k :)
Bài đã được tự động gộp:

Phù... Mò từ sáng đến giờ (đọc help) mới tìm ra được cách chèn checkbox vào cell trong iGrid. Thậm chí chèn ComboBox cũng được
Ngoài ra, theo mô tả thì thấy hình như còn chèn được rất nhiều thứ thú vị khác (như Icon chẳng hạn), nhưng mình chưa cần tới nên chưa nghiên cứu
Các bạn khác thử iGrid đi, bảo đảm không thất vọng đâu
(có điều bắt buộc phải Office 32 bit nhé, Windows mấy bit không thành vấn đề)
-----------------------------------------------------------------------------------------------------
Một lần nữa cảm ơn tất cả mọi người. Đặc biết gửi lời cảm ơn đến bạn @ThangCuAnh đã giới thiệu iGrid và @Hai Lúa Miền Tây đã biểu diễn cách dùng để mình hoàn thiện chương trình

Bác dùng Grid như VflexGrid thì cũng phải đọc nó mới có thể sử dụng, từ phương thức đến thuộc tính vì nó là đối tượng bên ngoài, không kèm theo VBA hay VB6.
 
Web KT
Back
Top Bottom