




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB数据库编程中MSHFlexGrid控件用法详解添加MSHFlexGrid将Name改成flex1添加text 将name 改成txteditPublic rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset 定义数据集对象Dim i As Integer, j As IntegerSub EditKeyCode(MSHFlexGrid As Control, Edt As Control, KeyCode As Integer, Shift As Integer) 标准编辑控件处理。 Select Case KeyCode Case 27 ESC:隐藏焦点并将其返回 MSFlexGrid Edt.Visible = False MSHFlexGrid.SetFocus Case 13 ENTER 将焦点返回 MSFlexGrid。 MSHFlexGrid.SetFocus DoEvents If MSHFlexGrid.Col MSFlexGrid.FixedRows Then MSFlexGrid.Row = MSFlexGrid.Row - 1 End If End SelectEnd SubSub view_DP() If flex1.Col = 4 Or flex1.Col = 5 Or flex1.Col = 6 Then 格式化Flex1表的第7列、第8列、第9列、第11列 flex1.TextMatrix(flex1.Row, 5) = Format(flex1.TextMatrix(flex1.Row, 5), 0.00) flex1.TextMatrix(flex1.Row, 6) = Val(flex1.TextMatrix(flex1.Row, 4) * Val(flex1.TextMatrix(flex1.Row, 5) flex1.TextMatrix(flex1.Row, 6) = Format(flex1.TextMatrix(flex1.Row, 6), 0.00) End If Dim A, B As Single 声明单精度浮点型变量 On Error Resume Next For i = 1 To flex1.Rows - 1 If flex1.TextMatrix(i, 1) And flex1.TextMatrix(i, 4) And flex1.TextMatrix(i, 6) Then A = Val(flex1.TextMatrix(i, 6) + A 求合计金额 B = Val(flex1.TextMatrix(i, 4) + B 求合计数量 End If Next i lblCount = B lblSum = Format(A, 0.00) 格式化合计金额End SubSub SetButtons(bVal As Boolean) cmdRegister.Enabled = Not bVal cmdSave.Enabled = bVal cmdCancel.Enabled = bVal flex1.Enabled = bVal Frame1.Enabled = bValEnd SubPrivate Sub DataGrid2_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then With Adodc2.Recordset 赋值给flex1表格 If .Fields(商品名称) Then flex1.TextMatrix(flex1.Row, 1) = Trim(.Fields(商品名称) If .Fields(规格) Then flex1.TextMatrix(flex1.Row, 2) = Trim(.Fields(规格) If .Fields(单位) Then flex1.TextMatrix(flex1.Row, 3) = Trim(.Fields(单位) flex1.TextMatrix(flex1.Row, 5) = .Fields(成本价) End With flex1.Col = 4 DataGrid2.Visible = False DataGrid2不可见 txtEdit.Text = txtEdit.SetFocus End If If KeyCode = vbKeyEscape Then 按ESC键DataGrid2不可见 DataGrid2.Visible = False txtEdit.SetFocus txtEdit获得焦点 End IfEnd SubPrivate Sub delone_Click() For i = 1 To flex1.Cols - 1 flex1.TextMatrix(flex1.Row, i) = Next i view_DPEnd SubPrivate Sub flex1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 利用PopupMenu方法 If Button And vbRightButton Then PopupMenu edit 弹出菜单 End IfEnd SubPrivate Sub Form_Load() Dim i As Integer 使第一列较窄。 flex1.ColWidth(0) = flex1.ColWidth(0) / 2初始化编辑框 txtEdit = flex1.Rows = 101 flex1.Cols = 8 设置列标头。 s$ = |商品名称 |规格 |单位 |数量 |进货价 |金额 |备注 flex1.FormatString = s$End SubPrivate Sub flex1_KeyPress(KeyAscii As Integer) If flex1.Col = 4 Or flex1.Col = 1 Then MSHFlexGridEdit flex1, txtEdit, KeyAscii End IfEnd Sub添加下列例程以初始化文本框,并将焦点从 Hierarchical FlexGrid 传递到 TextBox 控件:Sub MSHFlexGridEdit(MSHFlexGrid As Control, Edt As Control, KeyAscii As Integer) 使用已输入的字符。 Select Case KeyAscii 空格表示编辑当前的文本。 Case 0 To 32 Edt = MSHFlexGrid Edt.SelStart = 1000 其它所有字符表示取代当前的文本。 Case Else Edt = Chr(KeyAscii) Edt.SelStart = 1 End Select 在合适的位置显示 Edt。 Edt.Move MSHFlexGrid.Left + MSHFlexGrid.CellLeft - 15, _ MSHFlexGrid.Top + MSHFlexGrid.CellTop - 15, _ MSHFlexGrid.CellWidth, _ MSHFlexGrid.CellHeight Edt.Visible = True Edt.SetFocusEnd SubPrivate Sub flex1_DblClick() If flex1.Col = 4 Or flex1.Col = 1 Then MSHFlexGridEdit flex1, txtEdit, 32 模拟一个空格。 End IfEnd SubPrivate Sub lblSum_Click()End SubPrivate Sub txt1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn And Index = 0 Then Adodc1.RecordSource = 供应商信息表 where 供应商编号 like +%+ + txt1(0) + +%or 供应商全称 like +%+ + txt1(0) + +%or 简称 like +%+ + txt1(0) + +% Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then DataGrid1.Visible = True DataGrid1.SetFocus Else Adodc1.RecordSource = 供应商信息表 Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then DataGrid1.Visible = True DataGrid1.SetFocus Else MsgBox 无可选的供应商信息,请首先录入供应商数据!, , 提示窗口 End If End If End If If KeyCode = vbKeyReturn And Index = 1 Then flex1.Col = 1 flex1.Row = 1 flex1.SetFocus End IfEnd SubPrivate Sub DataGrid1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then txt1(0) = Adodc1.Recordset.Fields(供应商全称) txt1(1).SetFocus DataGrid1.Visible = False End IfEnd SubPrivate Sub txtEdit_KeyPress(KeyAscii As Integer) 删除回车符,以消除嘟嘟声。 If KeyAscii = Asc(vbCr) Then KeyAscii = 0End SubPrivate Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn And flex1.Col = 1 Then Adodc2.RecordSource = 商品信息表 where 商品名称 like +%+ + txtEdit + +% Adodc2.Refresh If Adodc2.Recordset.RecordCount 0 Then DataGrid2.Visible = True DataGrid2.SetFocus Else Adodc2.RecordSource = 商品信息表 Adodc2.Refresh If Adodc2.Recordset.RecordCount 0 Then DataGrid2.Visible = True DataGrid2.SetFocus Else MsgBox 无可选的商品信息,请首先录入商品数据!, , 提示窗口 End If End If End If 只有TextBox控件在“数量”单元格时,才使用以下过程 If flex1.Col = 4 Then EditKeyCode flex1, txtEdit, KeyCode, Shift End IfEnd Sub当输入数据并按下 ENTER 键,或用鼠标单击MSHFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中Private Sub flex1_GotFocus() If txtEdit.Visible = False Then Exit Sub flex1 = txtEdit txtEdit.Visible = False view_DPEnd SubPrivate Sub flex1_LeaveCell() If txtEdit.Visible = False Then Exit Sub flex1 = txtEdit txtEdit.Visible = FalseEnd SubPrivate Sub cmdCancel_Click() For i = 1 To flex1.Rows - 1 For j = 1 To flex1.Cols - 1 flex1.TextMatrix(i, j) = Next j Next i SetButtons False txtEdit.Visible = False view_DPEnd SubPrivate Sub cmdRegister_Click() Dim lsph As Integer 声明一个整型变量 创建入库票号 rs1.Open select * from 入库主表 order by 票号, Cnn, adOpenStatic If rs1.RecordCount 0 Then If Not rs1.EOF Then rs1.MoveLast If rs1.Fields(票号) Then lsph = Val(Right(Trim(rs1.Fields(票号), 4) + 1 txtph.Text = Date & rk & Format(lsph, 0000) End If Else txtph.Text = Date & rk & 0001 End If rs1.Close txtDate.Text = Date 设置控件有效或无效 SetButtons True For i = 1 To flex1.Rows - 1 For j = 1 To flex1.Cols - 1 flex1.TextMatrix(i, j) = Next j Next i txt1(0) = txt1(1) = txt1(0).SetFocus view_DPEnd SubPrivate Sub cmdSave_Click() Dim js As Integer For i = 1 To flex1.Rows - 1 If flex1.TextMatrix(i, 1) And flex1.TextMatrix(i, 2) And flex1.TextMatrix(i, 4) = Then MsgBox 第 & i & 行录入错误!, , 提示窗口 Exit Sub End If If flex1.TextMatrix(i, 1) = Then js = js + 1 End If Next i If js = flex1.Rows - 1 Then MsgBox 没有要保存的数据!, , 提示窗口 Exit Sub End If rs1.Open select * from 入库从表, Cnn, adOpenKeyset, adLockOptimistic For i = 1 To flex1.Rows - 1 If flex1.TextMatrix(i, 1) And flex1.TextMatrix(i, 2) And flex1.TextMatrix(i, 4) Then 添加新记录到入库从表中 rs1.AddNew If flex1.TextMatrix(i, 1) Then rs1.Fields(商品名称) = flex1.TextMatrix(i, 1) If flex1.TextMatrix(i, 2) Then rs1.Fields(规格) = flex1.TextMatrix(i, 2) If flex1.TextMatrix(i, 3) Then rs1.Fields(单位) = flex1.TextMatrix(i, 3) rs1.Fields(入库数量) = Val(flex1.TextMatrix(i, 4) rs1.Fields(单价) = Val(flex1.TextMatrix(i, 5) rs1.Field
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论