找回密码
 立即注册

QQ登录

只需一步,快速开始

miyaminn

论坛元老

48

主题

121

帖子

2万

积分

论坛元老

积分
22182

活字格认证

[已处理] Spread日期列

miyaminn
论坛元老   /  发表于:2014-7-25 08:46  /   查看:12038  /  回复:15
该列类型为日期类型,想实现按F4弹出一个日历框,
可以选择日期。这个要怎么实现呢?
谢谢!

15 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-7-25 18:22:00
沙发
回复 1楼miyaminn的帖子

以下代码可以实现你的需求:

  1.             FarPoint.Win.Spread.CellType.DateTimeCellType dt = new FarPoint.Win.Spread.CellType.DateTimeCellType();
  2.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = dt;
复制代码
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-25 18:59:00
板凳
回复 2楼iceman的帖子

原来设置成日期类型就可以啊!谢谢啊!
追问一个问题,当选中Cell的EditMode为False的时候,
F2,F3,F4等动作无响应当EditMode为True的时候才
会相应,要如何实现呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-28 17:50:00
地板
回复 3楼miyaminn的帖子

可以尝试在 KeyDown 事件中判断:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.CellType.DateTimeCellType dt = new FarPoint.Win.Spread.CellType.DateTimeCellType();
  4.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = dt;

  5.             this.fpSpread1.KeyDown += fpSpread1_KeyDown;
  6.         }

  7.         void fpSpread1_KeyDown(object sender, KeyEventArgs e)
  8.         {
  9.             if (e.KeyCode== Keys.F4)
  10.             {

  11.             }
  12.         }
复制代码
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-29 11:07:00
5#
回复 4楼iceman的帖子

Private Sub FpSpread1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyDown

        If FpSpread1.EditMode = False Then
            Dim im, im1 As FarPoint.Win.Spread.InputMap
            im1 = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
            im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
            im.Put(New FarPoint.Win.Spread.Keystroke(Keys.F4, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
            im1.Put(New FarPoint.Win.Spread.Keystroke(Keys.F4, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
        End If

    End Sub

以上是我写的测试代码,可是这样写后当EditMode = True的时候,F2,F3,F4就没有响应了。
要怎么封装好呢?求教,急急急!!!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-29 19:16:00
6#
回复 5楼miyaminn的帖子

我尝试调查下,看能否实现,如果可以上传代码给你。
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-29 22:40:00
7#
回复 6楼iceman的帖子

谢谢,一直以来很耐心的回答我的问题,在此非常感谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-30 18:14:00
8#
回复 7楼miyaminn的帖子

不客气,这是我们应该做的,我制作好后会上传到论坛。
回复 使用道具 举报
miyaminn
论坛元老   /  发表于:2014-7-31 15:17:00
9#
回复 8楼iceman的帖子

今天客户提出了一个Bug,问我们F4弹出的日历选中的日期不是当前日期
是DateDefault里面的填写的日期,要弹出的日历选中当前日期要设置什
么吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-31 19:20:00
10#
回复 9楼miyaminn的帖子

你好,
我理解这是个需求,显示当前单元格的日期是Spread产品设计。不过自动设置到当前日期应该可以做到,这是我当前的调查进度:

  1.         private void fpSpread1_SubEditorOpening(object sender, FarPoint.Win.Spread.SubEditorOpeningEventArgs e)
  2.         {
  3.             FpCalendar cal = e.SubEditor.Controls[0] as FpCalendar;
  4.             cal.CurrentDate = DateTime.Now;
  5.             cal.BackColor = Color.Red;
  6.             FpButton fb = e.SubEditor.Controls[2] as FpButton;
  7.             fb.PerformClick();
  8.         }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部