Tạo lịch trên VB6

Thiết kế giao diện:

calendar

Lưu ý:

+ Tên các control: cmdThangTruoc, cmdThangSau, cmbThang, txtNam

+ Để hiển thị các ngày trong tháng ta dùng một mảng control (control array) các button. Cách tạo như sau: tạo một button, đặt tên là cmdNgay. Định dạng button cho vừa ý -> Copy button -> Paste, VB6 sẽ hỏi có muốn tạo control array không? -> Yes -> di chuyển button mới để sát bên phải button cũ -> Paste -> di chuyển,…. Tạo 6dòng, 7 cột button như hình trên.

Các hàm ngày, tháng sử dụng:

+ DateSerial(Năm, Tháng, Ngày) – Tạo một ngày từ năm, tháng, ngày.
VD:
DateSerial(2013, 5, 28) ‘ cho ngày 28/5/2013
+ DateAdd(“d”, Số, Ngày) – cộng hoặc trừ Ngày với Số.
VD:
DateAdd(“d”, 3, DateSerial(2013, 5, 9)) ‘ cho ngày 12/5/2013
+ Weekday(Ngày, vbMonday) – cho thứ trong tuần của Ngày. Khi tham số thứ hai là vbMonday thì kết quả trả về là: 1 – thứ hai, 2 – thứ ba, … 7 – Chủ nhật
+ Lịch tạo dưới dạng 7 cột (7 ngày trong tuần, từ thứ 2 đến chủ nhật) và 6 dòng – ứng với 6 tuần (đa số các tháng chỉ có đến 5 tuần, nhưng đôi khi có tháng có tới 6 tuần). Các ngày thuộc tháng hiện tại có màu đậm, các ngày không thuộc tháng hiện tại có màu nhạt (bị disable).
+ Để xác định ngày hiển thị trong ô đầu tiên (thường là ngày ở tháng trước) ta dùng công thức:
Ngày đầu = Ngày đầu tháng – Thứ trong tuần của ngày + 1
VD:

Tháng

Tính toán

Ngày đầu

1/2013 Ngày 1/1/2013 là thứ 3 (Weekday = 2) =1/1/2013 – 2 + 1 = 31/12/2012
2/2013 Ngày 1/2/2013 là thứ 6 (Weekday = 5) =1/2/2013 – 5 + 1 = 28/1/2013
5/2013 Ngày 1/5/2013 là thứ 4 (Weekday = 3) =1/5/2013 – 3 + 1 = 29/4/2013

Mã lệnh:

Private Sub cmbThang_Change()
    TaoLich cmbThang.ListIndex + 1, Val(txtNam.Text)
End Sub

Private Sub cmdThangSau_Click()
    If cmbThang.ListIndex < 11 Then
        cmbThang.ListIndex = cmbThang.ListIndex + 1
    ElseIf Val(txtNam.Text) < 9999 Then         cmbThang.ListIndex = 0         txtNam.Text = Val(txtNam.Text) + 1     End If End Sub Private Sub cmdThangTruoc_Click()     If cmbThang.ListIndex > 0 Then
        cmbThang.ListIndex = cmbThang.ListIndex - 1
    ElseIf Val(txtNam.Text) > 1 Then
        cmbThang.ListIndex = 11
        txtNam.Text = Val(txtNam.Text) - 1
    End If
End Sub

Private Sub Form_Load()
    txtNam.Text = Year(Date)
    cmbThang.ListIndex = Month(Date)
End Sub

Sub TaoLich(Thang As Integer, Nam As Integer)
<span style="font-family: 'Courier 10 Pitch', Courier, monospace; font-size: 13px;">    Dim i As Integer</span>
    Dim d As Date

    If Thang >= 1 And Thang <= 12 And Nam >= 1 And Nam <= 9999 Then
        d = DateSerial(Nam, Thang, 1) ' Lay ngay dau thang
        d = DateAdd("d", -Weekday(d, vbMonday) + 1, d) ' Lay ngay dau tien phai hien thi
        i = 1
        Do
            Me.cmdNgay(i).Caption = Day(d)
            If Month(d) <> Thang Then
                cmdNgay(i).Enabled = False
            End If
        Loop Until i = 42
    End If
End Sub

Private Sub txtNam_Change()
    TaoLich cmbThang.ListIndex + 1, Val(txtNam.Text)
End Sub
Advertisements

One thought on “Tạo lịch trên VB6

  1. chuyen day lap trinh pham mem

    Greetings from California! I’m bored at work so I decided to browse your blog on my iphone during lunch break.
    I lofe the info you present ere and can’t wait to take a look
    when I get home. I’m surprised at how fast youhr blog loaded on my mobile ..
    I’m not even using WIFI, just 3G .. Anyways, excellent site!

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s