如何控制C1中的某列是日期型,就象使用DateTimePicker控件一样,选择日期,然后可以输入时间

weixinzhu 2003-08-22 06:04:13
如何控制C1中的某列是日期型,就象使用DateTimePicker控件一样,选择日期,然后可以输入时间,就是说使C1中的一列象使用DateTimePicker一样
...全文
138 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
foxbuilder 2003-08-26
  • 打赏
  • 举报
回复
.Cols(1).DataType = GetType(System.DateTime)
weixinzhu 2003-08-25
  • 打赏
  • 举报
回复
上面的大哥,我没看到c1有datetimepicker类型呀,怎么操作,可否具体点?多谢了
rock29 2003-08-25
  • 打赏
  • 举报
回复
你把C1格式化成Datetimepicker类型呀就像把它格式化成Combobox一样
isage2002 2003-08-24
  • 打赏
  • 举报
回复
两个grid控件定位不一样,建议使用flex,功能比较多,速度一般,但是比datagrid快
isage2002 2003-08-24
  • 打赏
  • 举报
回复
本身没有附加日期控件,需要在窗体上增加一个日期控件
具体代码
Private Sub C1TrueDBGrid1_RowColChange(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1TrueDBGrid1.RowColChange
' position the datetime picker on the "BirthDate" column only
Dim col As C1.Win.C1TrueDBGrid.C1DataColumn = Me.c1TrueDBGrid1.Splits(0).DisplayColumns(Me.c1TrueDBGrid1.Col).DataColumn
If col.DataField = "BirthDate" Then
' get the area of the cell
Dim r As Rectangle = Me.c1TrueDBGrid1.Splits(0).GetCellBounds(Me.c1TrueDBGrid1.Row, Me.c1TrueDBGrid1.Col)
' change to screen coordiantes
r = Me.c1TrueDBGrid1.RectangleToScreen(r)
' map the screen coordinates to the forms client coordinates
Me.dateTimePicker1.Location = Me.RectangleToClient(r).Location
' size it to fit inside the cell
Me.dateTimePicker1.Size = r.Size
' default the dateTimePicker to the date in the cell
Me._bIgnoreChange = True
Me.DateTimePicker1.Value = col.CellValue(Me.C1TrueDBGrid1.Row)
Me._bIgnoreChange = False
' display it
Me.dateTimePicker1.Visible = True
Else
Me.dateTimePicker1.Visible = False
End If

End Sub

' update the grid with the users selection
Private Sub DateTimePicker1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker1.TextChanged
If Me._bIgnoreChange Then
Exit Sub
End If
' get the column
Dim col As C1.Win.C1TrueDBGrid.C1DataColumn = Me.C1TrueDBGrid1.Splits(0).DisplayColumns(Me.C1TrueDBGrid1.Col).DataColumn
' update the the grid
col.Text = Me.DateTimePicker1.Text

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.OleDbDataAdapter1.Fill(Me.DataSet11)
' set the grid's row height to the height of the dateTimePicker
Me.C1TrueDBGrid1.RowHeight = Me.DateTimePicker1.Height
End Sub
weixinzhu 2003-08-24
  • 打赏
  • 举报
回复
上面的大哥,请问c1truedbgrid控件哪个函数里可以进行你说的定义?
Dim rg As CellRange = _flex.GetCellRange(1, 1)
rg.Style = _flex.Styles("emp")

rg = _flex.GetCellRange(2, 1, 3, 1)
rg.Style = _flex.Styles("date")

rg = _flex.GetCellRange(4, 1, 5, 1)
rg.Style = _flex.Styles("curr")

rg = _flex.GetCellRange(6, 1)
rg.Style = _flex.Styles("bool")
上面这段代码定义在哪里?
我用的是c1truedbgrid控件,不是flex控件,如何操作?
多谢大哥指导哦!
isage2002 2003-08-24
  • 打赏
  • 举报
回复
是这样的
例子中的判断列是根据xml格式的dataset控件完成的

当然必须使用.net提供的dataset控件,来完成,
最好看看他的例子,位置在
\Program Files\ComponentOne Studio.NET\C1TDBGrid\Samples\vb\DataTimePicker

其实他的思路很简单,就是获取当前的cell的位置和样式,并以此显示DataTimePicker而已

多看看他的例程 ok?
isage2002 2003-08-24
  • 打赏
  • 举报
回复
上面代码实现了在一列中实现各种输入的形势

涉及日期关键是
rg.Style = _flex.Styles("date")

isage2002 2003-08-24
  • 打赏
  • 举报
回复
_flex 为视图中的控件的名称
Dim rg As CellRange = _flex.GetCellRange(1, 1)
rg.Style = _flex.Styles("emp")

rg = _flex.GetCellRange(2, 1, 3, 1)
rg.Style = _flex.Styles("date")

rg = _flex.GetCellRange(4, 1, 5, 1)
rg.Style = _flex.Styles("curr")

rg = _flex.GetCellRange(6, 1)
rg.Style = _flex.Styles("bool")
weixinzhu 2003-08-24
  • 打赏
  • 举报
回复
c1就是c1truedbgrid
weixinzhu 2003-08-24
  • 打赏
  • 举报
回复
上面的大哥,非常感谢,基本上可以实现了,可是datatimepick不在相应的列上,
If col.DataField = "BirthDate" Then 好象不能判断,它找不到相应的列,
另外Me._bIgnoreChange = True中的_bIgnoreChange是什么?在哪里定义的?多谢大哥了,我让c1可以自动加行,可不可以使需要的列的每行都可以象使用datatimepick一样?也就是怎么控制datatimepick的位置的变化?非常感谢大哥!!!
LongBow007 2003-08-22
  • 打赏
  • 举报
回复
c1是什么?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧