Introduction
I wrote an article before about ActiveX using (MSFlexGrid
) to edit cells and include (ComboBox
) in any column in the FlexGrid
. To see this ActiveX and its application, click here.
Now I create a new AciveX for using (MSDataGrid
) and include (ComboBox
) and (DTPicker
) control to any column in the DataGrid
. With my ActiveX control, you can:
- Choose items from
ComboBox
to fill any field in the DataGrid
. - Fill the field which has
Date
data type. - Can Add, Edit and Delete records.
Background
When using my ActiveX control (MKDataGrid
), you must load the grid with data from database file, see the code in form2
and form3
. My ActiveX control has some methods and some properties in the following table, refer to MSDataGrid
for other methods and properties:
Method/Property
| Definition
| Example
|
GridCaption | Set the caption of grid. | MKDataGrid1.GridCaption = "School data base" |
ColAlignment(c As Long) | Set column's Alignment. | MKDataGrid1.ColAlignment(2) = gridLeft |
ColWidth(c As Long) | Set column's width. | MKDataGrid1.ColWidth(0) = 150 |
ColumnCaption(c As Long) | Set column's caption. | MKDataGrid1. ColumnCaption (2) = "Name" |
GridFocus | Set focus to grid if it is True | MKDataGrid1.GridFocus = True |
DateControl c, b | Set DTPicker control at column c if b = True | MKDataGrid1.DateControl 2, True |
ListControl c, rs, f | Set ComboBox control at column c with Recordset rs and Field f . | MKDataGrid1.ListControl 4, adoCities, "CityName" |
To use my ActiveX (MKDataGrid
), you must add only one file from files: msado20.tlb, msado21.tlb, msado25.tlb or msado27.tlb to Interface from the folder C:\WINDOWS\SYSTEM32 and add (MKDataGrid
) control to the Toolbox.
Using the Code
LoadData() procedure
Dim cn As ADODB.Connection
Dim DataFile As String
Dim StudentSql As String
DataFile = App.Path + "\DataFiles\" + "School_E.mdb"
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & DataFile & ";"
StudentSql = "SELECT StudentID,StudentName,BirthDate," _
& "Address,City,Country,Phone " _
& " FROM Students " _
& "Order by StudentID"
Set adoStudents = New ADODB.Recordset
adoStudents.Open StudentSql, cn, adOpenStatic, adLockOptimistic
MKDataGrid1.DataSource = adoStudents
CitySql = "SELECT DISTINCTROW CityID, CityName " _
& "FROM Cities " _
& "ORDER BY CityID;"
Set adoCities = New Recordset
adoCities.Open CitySql, cn
CountrySql = "SELECT DISTINCTROW CountryID, CountryName " _
& "FROM Countries " _
& "ORDER BY CountryID;"
Set adoCountries = New Recordset
adoCountries.Open CountrySql, cn
initGrid() Procedure
Dim c As Integer
set Caption to the grid
MKDataGrid1.GridCaption = "School data base"
For c = 0 To 6
MKDataGrid1.ColAlignment(c) = gridLeft
Next c
MKDataGrid1.ColWidth(0) = 1100
MKDataGrid1.ColWidth(2) = 1000
MKDataGrid1.ColWidth(3) = 2500
MKDataGrid1.ColWidth(4) = 1000
MKDataGrid1.ColWidth(5) = 1000
MKDataGrid1.ColWidth(6) = 1300
MKDataGrid1.ForeColor = QBColor(1)
MKDataGrid1.HeadLines = 2
MKDataGrid1.HeadFont.Name = "Verdana"
MKDataGrid1.HeadFont.Size = 8
MKDataGrid1.HeadFont.Bold = True
MKDataGrid1.Font.Name = "Times New Roman"
MKDataGrid1.Font.Size = 10
MKDataGrid1.ColumnCaption(1) = "Student name"
MKDataGrid1.ColumnCaption(6) = "Home phone"
Form_Load() Procedure
LoadData
initGrid
MKDataGrid1.DateControl 2, True
MKDataGrid1.ListControl 4, adoCities, "CityName"
MKDataGrid1.ListControl 5, adoCountries, "CountryName"
You can go back to the source files of the project (prjDataGrid
) to read more than the previous examples.
Remarks
When extracting the file, MKDataGrid.zip, you can find the file VB6DataGrid.ocx in the folder ActiveXcontrol.
Find database files School_A.mdb and School_E.mdb in the folder DataFiles.
Find the project prjDataGrid to test the ActiveX control in the folder MKDataGrid.
This project has three forms:
Form1
: To choose language Form2
: For English language Form3
: For Arabic language
Form2
and Form3
have the same controls:
- The ActiveX control (
MKDataGrid1
) when adding the file VB6DataGrid.ocx to Toolbox - The button control (
cmdFirst
) to get the first record. - The button control (
cmdPrevious
) to get the previous record. - The button control (
cmdNext
) to get the next record. - The button control (
cmdLast
) to get the last record. - The button control (
cmAdd
) to add a new record. - The button control (
cmdEdit
) to edit a record. - The button control (
cmdUpdate
) to save records. - The button control (
cmdCancel
) to cancel edit. - The list box control (
cmdDelete
) to delete the current row. - The button control (
cmdRefresh
) to sort records. - The list box control (
cmdClose
) to close the form.
Last Words
I hope this article is useful and helps you to create your applications. Please tell me if you have any idea or if you find any problems. Thanks to Code Project and thanks to all.
-- Mostafa Kaisoun
M_Kaisoun@hotmail.com