Blog của Lê Văn Luật

Đời người thì có hạn mà sự học thì vô hạn!

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

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

  1. 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!

Gửi phản hồ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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Information

This entry was posted on 09/05/2013 by in Lập trình C# & WPF, Lập trình VBA với Office.

Điều hướng

%d bloggers like this: