我一直用的是datagrid控件,
请问我想在msflexgrid ,mshflexgrid中实现
1.奇偶行不同的背景颜色,表头不同的颜色,当前单元格又是另外一种颜色.
2.msflexgrid如何绑定显示一个记录集?如何实现对其基本的增删改操作?如何让一次只显示30条记录呢?
不好意思,内容实在太多,请贴源码或者发相关例子到 [email protected]!贴一下相关的datagrid中的操作.以便让各位少写些代码,'提数据事件
Set conn = New Connection
conn.CursorLocation = adUseClient
conn.Open "联接字符串" ########################################## Set RS = New Recordset
RS.Open "SELECT * FROM 表", conn, adOpenStatic, adLockOptimistic
'赋值给 DataGrid 表
Set DataGrid1.DataSource = RS
'表刷新
DataGrid1.Refresh '若绑定TextBox(数组):
'Text1(0).DataField = 字段1
'Text1(1).DataField = 字段2
'.........
Dim oText As TextBox 'TextBox
For Each oText In Me.Text1
Set oText.DataSource = RS
Next
'添加事件和保存
RS.AddNew
'保存
RS![字段a] = text1.Text
RS![字段b] = text2.Text
RS.UpdateBatch adAffectAll'删除
RS.Delete
'重新赋值给表
RS.Requery
Set DataGrid1.DataSource = RS
DataGrid1.Refresh '其他相关操作:
'上一条
If Not RS.BOF Then RS.MovePrevious
If RS.BOF And RS.RecordCount > 0 Then
'已到最后返回
RS.MoveFirst
End If
'下一条
If Not RS.EOF Then RS.MoveNext '下一条
If RS.EOF And RS.RecordCount > 0 Then
'已到最后返回
RS.MoveLast
End If
'第一条
If Not RS.BOF Then RS.MoveFirst
'最末
If Not RS.EOF Then RS.MoveLast
_____________________________________________
这里没有问题1和问题2中关于限定显示记录数的代码?
再次表示感谢!解决立即送分!!!!
请问我想在msflexgrid ,mshflexgrid中实现
1.奇偶行不同的背景颜色,表头不同的颜色,当前单元格又是另外一种颜色.
2.msflexgrid如何绑定显示一个记录集?如何实现对其基本的增删改操作?如何让一次只显示30条记录呢?
不好意思,内容实在太多,请贴源码或者发相关例子到 [email protected]!贴一下相关的datagrid中的操作.以便让各位少写些代码,'提数据事件
Set conn = New Connection
conn.CursorLocation = adUseClient
conn.Open "联接字符串" ########################################## Set RS = New Recordset
RS.Open "SELECT * FROM 表", conn, adOpenStatic, adLockOptimistic
'赋值给 DataGrid 表
Set DataGrid1.DataSource = RS
'表刷新
DataGrid1.Refresh '若绑定TextBox(数组):
'Text1(0).DataField = 字段1
'Text1(1).DataField = 字段2
'.........
Dim oText As TextBox 'TextBox
For Each oText In Me.Text1
Set oText.DataSource = RS
Next
'添加事件和保存
RS.AddNew
'保存
RS![字段a] = text1.Text
RS![字段b] = text2.Text
RS.UpdateBatch adAffectAll'删除
RS.Delete
'重新赋值给表
RS.Requery
Set DataGrid1.DataSource = RS
DataGrid1.Refresh '其他相关操作:
'上一条
If Not RS.BOF Then RS.MovePrevious
If RS.BOF And RS.RecordCount > 0 Then
'已到最后返回
RS.MoveFirst
End If
'下一条
If Not RS.EOF Then RS.MoveNext '下一条
If RS.EOF And RS.RecordCount > 0 Then
'已到最后返回
RS.MoveLast
End If
'第一条
If Not RS.BOF Then RS.MoveFirst
'最末
If Not RS.EOF Then RS.MoveLast
_____________________________________________
这里没有问题1和问题2中关于限定显示记录数的代码?
再次表示感谢!解决立即送分!!!!
VERSION 5.00
Object = "{0ECD9B60-23AA-11D0-B351-00A0C9055D8E}#6.0#0"; "mshflxgd.ocx"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form1"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin MSHierarchicalFlexGridLib.MSHFlexGrid MSHFlexGrid1
Height = 2775
Left = 240
TabIndex = 0
Top = 240
Width = 3975
_ExtentX = 7011
_ExtentY = 4895
_Version = 393216
Rows = 20
Cols = 20
FixedCols = 0
HighLight = 0
FillStyle = 1
AllowUserResizing= 3
_NumberOfBands = 1
_Band(0).Cols = 20
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option ExplicitPrivate OldRow As Long
Private OldCol As Long
Private OldColor As OLE_COLORPrivate Sub ColFlex() Dim i As Integer With MSHFlexGrid1
.FillStyle = flexFillRepeat
For i = .FixedRows + 1 To .Rows - 1 Step 2
.Row = i
.Col = .FixedCols
.ColSel = .Cols - 1
.CellBackColor = vbInfoBackground
Next i
End With
End SubPrivate Sub Form_Load() OldRow = 0
OldCol = 0
OldColor = MSHFlexGrid1.BackColorFixed
Call ColFlex
End SubPrivate Sub Form_Resize()
MSHFlexGrid1.Move Me.ScaleLeft, Me.ScaleTop, Me.ScaleWidth, Me.ScaleHeight
End SubPrivate Sub MSHFlexGrid1_RowColChange()
Dim NowRow As Long
Dim NowCol As Long
Dim NowColor As OLE_COLOR
NowCol = MSHFlexGrid1.Col
NowRow = MSHFlexGrid1.Row
NowColor = MSHFlexGrid1.CellBackColor
MSHFlexGrid1.Col = OldCol
MSHFlexGrid1.Row = OldRow
MSHFlexGrid1.CellBackColor = OldColor
MSHFlexGrid1.Col = NowCol
MSHFlexGrid1.Row = NowRow
MSHFlexGrid1.CellBackColor = vbRed
OldCol = NowCol
OldRow = NowRow
OldColor = NowColor
End Sub2,太晚了,明天再说
goop2002谢谢,第二个问题回答出来就解贴,
再次感谢!!!
Object = "{0ECD9B60-23AA-11D0-B351-00A0C9055D8E}#6.0#0"; "MSHFLXGD.OCX"
Begin VB.Form Form2
Caption = "双击网格cell设定当前rst对象位置"
ClientHeight = 9150
ClientLeft = 60
ClientTop = 345
ClientWidth = 7905
LinkTopic = "Form2"
ScaleHeight = 9150
ScaleWidth = 7905
StartUpPosition = 3 'Windows Default
Begin VB.ComboBox Combo1
Height = 315
Left = 1080
Style = 2 'Dropdown List
TabIndex = 1
Top = 0
Width = 2055
End
Begin MSHierarchicalFlexGridLib.MSHFlexGrid MSHFlexGrid1
Height = 8415
Left = 240
TabIndex = 0
Top = 480
Width = 5175
_ExtentX = 9128
_ExtentY = 14843
_Version = 393216
Rows = 0
FixedRows = 0
FixedCols = 0
HighLight = 0
AllowUserResizing= 3
_NumberOfBands = 1
_Band(0).Cols = 2
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
AutoSize = -1 'True
Caption = "Page"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Left = 480
TabIndex = 2
Top = 0
Width = 495
End
End
Attribute VB_Name = "Form2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option ExplicitPrivate AdoConn As New ADODB.Connection
Private AdoRst As New ADODB.Recordset
Private Sub Combo1_Click() Dim i As Long
AdoRst.AbsolutePage = Combo1.Text
MSHFlexGrid1.Rows = 0
For i = 1 To AdoRst.PageSize
If Not AdoRst.EOF And Not AdoRst.BOF Then
MSHFlexGrid1.Rows = i
MSHFlexGrid1.TextMatrix(i - 1, 0) = AdoRst![OrderID]
MSHFlexGrid1.TextMatrix(i - 1, 1) = AdoRst![ProductID]
AdoRst.MoveNext
Else
Exit For
End If
Next i
End SubPrivate Sub Form_Load()
Dim i As Long
With AdoConn
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
End With
With AdoRst
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
End With
AdoRst.PageSize = 30
AdoRst.Open "Select * from [Order Details]", AdoConn
Combo1.Clear
For i = 1 To AdoRst.PageCount
Combo1.AddItem i
Next i
Combo1.ListIndex = 0
End Sub
Private Sub MSHFlexGrid1_DblClick() Dim i As Integer
Dim ls As String
With MSHFlexGrid1
AdoRst.Filter = "[OrderID] = " & .TextMatrix(.Row, 0) & " AND [ProductID] = " & .TextMatrix(.Row, 1) For i = 0 To AdoRst.Fields.Count - 1
ls = ls & vbCrLf & AdoRst.Fields(i).Value
Next i
MsgBox ls
End With
End Sub
可以用For 循环控制
for i=1 to 30
msflexgrid1.TextMatrix(i,0)=rs!字段1
msflexgrid1.TextMatrix(i,1)=rs!字段2
next i
一般是有两个For 语句结合起来写的。把下面这句放在第一个For的结尾就可以了。
mshflexgrid1.rows=mshflexgrid1.rows+1
Private Sub MSHFlexGrid1_EnterCell()
With MSHFlexGrid1
If .MouseRow = 0 Or .MouseCol = 0 Then
Text1.Visible = False
Exit Sub
End If
Text1.Text = ""
Text1.Visible = False
Text1.Top = .Top + .CellTop
Text1.Left = .Left + .CellLeft
Text1.Width = .CellWidth
Text1.Height = .CellHeight
Text1.Text = .Text
Text1.Visible = True
Text1.SetFocus
Text1.SelStart = Len(Trim(Text1.Text))
End With
End SubPrivate Sub MSHFlexGrid1_LeaveCell()
MSHFlexGrid1.Text = Text1.Text
End SubPrivate Sub Form_Load()MSHFlexGrid1.Row = 1
MSHFlexGrid1.Col = 1
MSHFlexGrid1.AllowBigSelection = FalseEnd sub现在的问题是,我的text1初值是空的,但我一启动程序的时候,msflexgrid总是选中了某一行(没有规律),所以当我换个cell的时候,把这个空值赋给了一整行,所以那一行就清空了,
怎么样让他不选中了,也就是没有焦点在mshflexgrid上呢?
我修改过后的grid里的数据怎么回写到数据库里面呢???谢谢,麻烦大家了,解决了,我会再开贴谢大家的.
谢谢!!!
2,sql语句,根据关键字段更新数据库
也就是GRID要20多个表,这样重新赋值就比较困难.
有没有什么方法让GRID启动时不需要选中某一行呢???先结贴吧,gpo2002能否在结贴后也告知呢??
谢谢!!!
留言或者有相关的例子发[email protected]再次感谢!!!