找回密码
 立即注册
搜索
查看: 266|回复: 8

一个VB问题!

[复制链接]

42

主题

108

回帖

198

积分

海星

积分
198
发表于 2002-9-19 20:47:01 | 显示全部楼层 |阅读模式
帮个忙,请教一下,谢谢!

想要获得一个万年历的效果

Option Explicit                        //这里的定义不知道对不对
Dim yr, mon As Integer
Private Const rnum = 7
Private Const cnum = 7


Public Sub setfomat()                  //设置MSFlexGrid1控件的属性
Dim i, j, w, h As Integer
MSFlexGrid1.ScrollBars = 0            
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Rows = rnum                 //行列为7
MSFlexGrid1.Cols = cnum
w = (MSFlexGrid1.Width - 10) / cnum
h = MSFlexGrid1.Height / rnum
For i = 0 To rnum - 1                    //设置方格的高宽
MSFlexGrid1.ColWidth(i) = w
MSFlexGrid1.RowHeight(i) = h
MSFlexGrid1.FixedAlignment(i) = 2
Next
End Sub

Public Sub sethead()              //设置表头的内容
Dim i, j As String
Dim dayname(cnum - 1) As String
dayname(0) = "星期日"
dayname(1) = "星期一"
dayname(2) = "星期二"
dayname(3) = "星期三"
dayname(4) = "星期四"
dayname(5) = "星期五"
dayname(6) = "星期六"
MSFlexGrid1.Row = 0
For i = 0 To cnum - 1
MSFlexGrid1.Col = i
MSFlexGrid1.CellForeColor = RGB(255, 0, 0)
MSFlexGrid1.Text = Day(i)
Next
End Sub

Public Sub calendar()
Dim i, firstday, num_day As Integer
Dim d As Data
firstday = DateSerial(yr, mon, 1)
num_day = DatePart("w", firstday)

MSFlexGrid1.Row = 1
MSFlexGrid1.Col = num_day - 1

For i = 1 To 31

d = DateSerial(yr, mon, i)          //这里老出错,是不是和上面定义有关
If Month(d) <> mon Then
  Exit For
Else
  If MSFlexGrid1.Col = 6 And i <> i Then
     MSFlexGrid1.Row = MSFlexGrid1.Row + 1
     MSFlexGrid1.Col = 0
   ElseIf i <> 1 Then
     MSFlexGrid1.Col = MSFlexGrid1.Col + 1
   End If
End If
   MSFlexGrid1.Text = i
If Day(Name) = i Then
MSFlexGrid1.CellBackColor = RGB(255, 255, 0)
End If
Next
MSFlexGrid1.Row = rnum - 1
MSFlexGrid1.Col = cnum - 2
MSFlexGrid1.Text = yr & "年"
MSFlexGrid1.Col = cnum - 1
MSFlexGrid1.Text = mon & "月"

End Sub

Private Sub Form_Load()
MSFlexGrid1.Clear
setfomat
sethead
yr = Year(Date)
mon = Month(Date)
calendar
End Sub

Private Sub MSFlexGrid1_DblClick()
Dim s, filename As String
s = MSFlexGrid1.Text
If Len(s) > 0 Then
filename = yr & mon & s & ".txt"
Shell "notepad" & "" & filename, vbNormalFocus
End If
End Sub

程序里有个MSFlexGrid控件-》MICROSOFT FIEXGRID CONTROL6.0
col=7,row=7
fixcol=0
fixrow=1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

0

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2002-9-22 19:20:17 | 显示全部楼层

放上完整的源码

缺少frm文件!
另外上面代码不要插入图片,看也看不清!
回复

使用道具 举报

42

主题

108

回帖

198

积分

海星

积分
198
 楼主| 发表于 2002-9-22 19:28:05 | 显示全部楼层

SORRY,少放了个文件

谢谢看一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2002-9-22 19:44:49 | 显示全部楼层

粗粗看了一下 没看逻辑 只看代码

Public Sub calendar()
Dim i, firstday, num_day As Integer
'Dim d As Data 定义错误 粗心了吧
Dim d As Date

firstday = DateSerial(yr, mon, 1)
num_day = DatePart("w", firstday)

MSFlexGrid1.Row = 1
MSFlexGrid1.Col = num_day - 1

For i = 1 To 31

d = DateSerial(yr, mon, i)

    If Month(d) <> mon Then
       Exit For
    Else
        '我不知道 i<>i 是什么意思?
        
        If MSFlexGrid1.Col = 6 Then 'And i <> i Then
            MSFlexGrid1.Row = MSFlexGrid1.Row + 1
            MSFlexGrid1.Col = 0
        ElseIf i <> 1 Then
            MSFlexGrid1.Col = MSFlexGrid1.Col + 1
        End If
    End If
   
    MSFlexGrid1.Text = i

   '我不知道原来的 day(name) 是什么意思?
   
   If Day(Now) = i Then
           MSFlexGrid1.CellBackColor = RGB(255, 255, 0)
   End If
Next i

MSFlexGrid1.Row = rnum - 1
MSFlexGrid1.Col = cnum - 2
MSFlexGrid1.Text = yr & "年"
MSFlexGrid1.Col = cnum - 1
MSFlexGrid1.Text = mon & "月"

End Sub
回复

使用道具 举报

0

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2002-9-22 19:46:32 | 显示全部楼层

靠!

原来小于号 会变脸的!
我错怪你了:(

注释部分你看一下
<<<<
回复

使用道具 举报

42

主题

108

回帖

198

积分

海星

积分
198
 楼主| 发表于 2002-9-23 18:54:08 | 显示全部楼层

OK了

Option Explicit
Dim yr, mon As Integer
Private Const rnum = 7
Private Const cnum = 7
Public Sub sethead()
Dim i, j As Integer
Dim dayname(cnum - 1) As String
dayname(0) = "星期日"
dayname(1) = "星期一"
dayname(2) = "星期二"
dayname(3) = "星期三"
dayname(4) = "星期四"
dayname(5) = "星期五"
dayname(6) = "星期六"
MSFlexGrid1.Row = 0
For i = 0 To cnum - 1
MSFlexGrid1.Col = i
MSFlexGrid1.CellForeColor = RGB(255, 0, 0)
MSFlexGrid1.Text = dayname(i)
Next
End Sub


Public Sub calendar()
Dim i, firstday, num_day As Integer
Dim d As Date
firstday = DateSerial(yr, mon, 1)
num_day = DatePart("w", firstday)

MSFlexGrid1.Row = 1
MSFlexGrid1.Col = num_day - 1

For i = 1 To 31
d = DateSerial(yr, mon, i)
If Month(d) <> mon Then
  Exit For
Else
  If MSFlexGrid1.Col = 6 Then
     MSFlexGrid1.Row = MSFlexGrid1.Row + 1
     MSFlexGrid1.Col = 0
   ElseIf i <> 1 Then
     MSFlexGrid1.Col = MSFlexGrid1.Col + 1
   End If
      MSFlexGrid1.Text = i
      If Day(Date) = i Then
MSFlexGrid1.CellBackColor = RGB(255, 255, 0)
End If
End If
Next
MSFlexGrid1.Row = rnum - 1
MSFlexGrid1.Col = cnum - 2
MSFlexGrid1.Text = yr & "年"
MSFlexGrid1.Col = cnum - 1
MSFlexGrid1.Text = mon & "月"
End Sub

Private Sub Form_Load()
MSFlexGrid1.Clear
setfomat
sethead
yr = Year(Date)
mon = Month(Date)
calendar
End Sub

Private Sub MSFlexGrid1_DblClick()
Dim s, filename As String
s = MSFlexGrid1.Text
If Len(s) > 0 Then
filename = yr & mon & s & ".txt"
Shell "notepad" & "" & filename, vbNormalFocus
End If
End Sub


Public Sub setfomat()
Dim i, j, w, h As Integer
MSFlexGrid1.ScrollBars = 0
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Rows = rnum
MSFlexGrid1.Cols = cnum
w = (MSFlexGrid1.Width - 10) / cnum
h = MSFlexGrid1.Height / rnum
For i = 0 To rnum - 1
MSFlexGrid1.ColWidth(i) = w
MSFlexGrid1.RowHeight(i) = h
MSFlexGrid1.FixedAlignment(i) = 2
Next
End Sub

原程序通过测试!(文件自己建立)
谢谢你的帮助拉!
回复

使用道具 举报

0

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2002-9-23 21:09:19 | 显示全部楼层
OK!
若编程方面在有什么问题
一起讨论吧
回复

使用道具 举报

3

主题

147

回帖

198

积分

海星

积分
198
发表于 2002-9-26 13:14:19 | 显示全部楼层
可以“在帖子中禁止表情符号”
回复

使用道具 举报

发表于 2002-9-26 13:38:32 | 显示全部楼层
呵呵呵呵呵,代码中的表情好可笑拉:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-19 01:26 , Processed in 0.092005 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表