65.9K
CodeProject 正在变化。 阅读更多。
Home

FlexGrid 作为 DataGrid

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.50/5 (2投票s)

2008年5月12日

CPOL

2分钟阅读

viewsIcon

77999

downloadIcon

2038

ActiveX 控件将 FlexGrid 作为 DataGrid 并编辑 FlexGrid

FDGrid

引言

我创建了一个新的 ActiveX 控件 (FDGrid),使 FlexGrid 控件充当 DataGrid 控件。有了这个 ActiveX 控件,您可以

  • 连接数据库
  • 用表格填充 FlexGrid
  • 编辑和添加记录
  • MoveFirstMoveLastMoveNextMovePrevious
  • 编辑单元格后自动保存 (更新)
  • 无需连接到数据库文件即可编辑网格

背景

使用我的 ActiveX 控件 (FDGrid) 时,如果您将其用作 DataGrid,则必须从数据库文件中加载网格数据。请参阅表单中的代码 (Form1)。您可以编辑网格而不加载数据。请参阅表单中的代码 (Form2)。我的 ActiveX 控件的一些属性和方法如下表所示

方法/属性 定义 示例
DatabaseName 设置数据库名称 FDGrid1.DatabaseName = 文件名
DataSource 设置 Recordset 到网格 FDGrid1.DataSource = rs
AddNewRow 向网格添加新记录 FDGrid1.AddNewRow
DeleteRow 删除记录 FDGrid1.DeleteRow
更新 添加后保存记录 FDGrid1.Update
CancelUpdate 取消更新 FDGrid1.CancelUpdate
MoveFirst 移动到第一条记录 FDGrid1.MoveFirst
MoveLast 移动到最后一条记录 FDGrid1.MoveLast
MoveNext 移动到下一条记录 FDGrid1.MoveNext
MovePrevious 移动到上一条记录 FDGrid1.MovePrevious

其他属性和方法与 (MSFlexGrid) 控件相同。

要使用我的 ActiveX (FDGrid),您只需从文件中添加一个文件:“Microsoft DAO 3.51 (或 3.6) 对象库”,并将其添加到引用中,并将 (FDGrid) 控件添加到工具箱中。

Using the Code

Form1(连接到数据库文件并将 ActiveX 用作 MSDataGrid)

LoadData() 过程

Dim MyDataFile As String
Dim MyDb As Database
Dim MySql As String

   MyDataFile = App.Path + "\DataFile\" + "Sale.mdb"
   Set MyDb = OpenDatabase(MyDataFile, False, False, ";pwd=" & "")
   MySql = "SELECT * FROM Products Order by ProductID"
   FDGrid1.DatabaseName = MyDataFile
   FDGrid1.RecordSource = MySql
   FDGrid1.RecordsetType = vbRSTypeDynaset
   FDGrid1.Refresh

Form_Load() 过程

'Call LoadData procedure
LoadData

cmdAdd_Click() 过程

' add new record to data base file
FDGrid1.AddNewRow

cmdCancel_Click() 过程

' don't save record
FDGrid1.AddNewRow

cmdDelete_Click() 过程

' delete record from data base file
FDGrid1.DeleteRow

cmdUpdate_Click() 过程

' save record to data base file
FDGrid1.Update

请参阅 Form1 以查看 MoveFirstMoveLastMoveNextMovePrevious 的代码。

Form2(使用 ActiveX 编辑网格)

LoadData() 过程

FDGrid1.Cols = 8 'grid has 8 columns
FDGrid1.Rows = 15 'grid has 15 rows

'set alignment of fixed row to center
For c = 1 To FDGrid1.Cols - 1
   FDGrid1.TextMatrix(0, c) = "Col " & CStr(c)
   FDGrid1.ColAlignmentHeader(c) = flexAlignCenterCenter
Next c

' fill some rows
For r = 1 To 5
   For c = 1 To FDGrid1.Cols - 1
      FDGrid1.TextMatrix(r, c) = "Cell(" & CStr(r) & "," & CStr(c) & ")"
   Next c
Next r

' You can edit any cell, just click any cell then try to edit it.

备注

解压 FDGrid.zip 文件后,您可以在 ActiveXcontrol 文件夹中找到 FDGrid.ocx 文件。

DataFile 文件夹中找到数据库文件 Sale.mdb

FDGrid 文件夹中找到 prjBoundFlex 项目(用于测试 ActiveX 控件)。

该项目有三个表单 (frmMain, Form1Form2)。

  • Form1 用于将网格连接到数据库文件。
  • Form2 用于编辑网格。

最后的话

我希望这篇文章对您有所帮助,并在您的应用程序需要连接到数据库或需要编辑网格时为您提供帮助。如果您有任何想法或发现任何问题,请告诉我。感谢 Code Project,感谢大家。

历史

  • 2008年5月12日:初始发布

Mostafa Kaisoun
M_Kaisoun@hotmail.com

© . All rights reserved.