vba_gpe
Thành viên thường trực
- Tham gia
- 15/12/10
- Bài viết
- 296
- Được thích
- 44
- Nghề nghiệp
- Thất nghiệp
Chào anh chị trong diễn đàn.
Em có build các control bằng cách dùng phương thức Me.Controls.Add.
Tuy nhiên, em có vấn đề này vẫn chưa rõ nên nhờ anh/chị trong diễn đàn mình tư vấn.
1. Khi build nhiều control thì chỉ gắn sự kiện được cho controls cuối cùng:
Em bị vướng:
- Hiện tại em chỉ gắn sự kiện được cho image số 10 (image cuối cùng). (Click vào imge 10 thì nó chạy sự kiện). Bây giờ em muốn 9 cái còn lại cũng đều hiểu sự kiện luôn .
- Nếu thay vì em phải sét 10 cái img khác nhau trên đầu cùng của code này thì có cách nào khác không ạ?
2. Cũng như trường hợp 1, nhưng thay vì sự kiện click chuột, thì có cách nào gắn thêm nhiều sự kiện khác tương ứng với các sự kiện mặc định phải có tương ứng của control mình vừa tạo (ví dụ: mouseUp, MouseDown..v.v.) ..thì kỹ thuật gắn thế nào ạ?
Trong .net có cách AddHandler theo cấu trúc AddHandler (Object as Event, Object as delegate) nhưng trên vba thì em tìm không ra ạ.
Em cảm ơn mọi người. Chúc mọi người 1 kỳ nghĩ lễ vui và thành công.
Em có build các control bằng cách dùng phương thức Me.Controls.Add.
Tuy nhiên, em có vấn đề này vẫn chưa rõ nên nhờ anh/chị trong diễn đàn mình tư vấn.
1. Khi build nhiều control thì chỉ gắn sự kiện được cho controls cuối cùng:
Mã:
Option Explicit
Private WithEvents IMG As Image
Private Sub bt_ok_Click()
AddControl
End Sub
'Sự kiện khi image click
Private Sub img_Click()
MsgBox "Image Click"
End Sub
'Sự kiện thêm cotrol vào form
Private Sub AddControl()
Dim i As Long
' 10: Là số image em muốn add
For i = 1 To 10
'Đây là ví dụ của em
CreateImg "img" & i, i * 2 + 4, i * 3 + 10, i + 10, i + 2
' CreateImg "img" & i, Left, Top, Width, height
' Trong đó: Các thông số left, top, width, height: Là thông số để xác định vị trí, kích thước của các image mới được tạo (Thông số do mình thiết đặt. Trên code là ví dụ thôi ạ )
' "img" & i: Là tên c?a controls
Next
End Sub
'Sự kiện tạo image
Private Sub CreateImg(cName As String, cLeft As Single, cTop As Single, cWidth As Single, cHeight As Single)
Set IMG = Me.Controls.Add("Forms.Image.1", cName, True)
With IMG
.Name = cName
.Top = cTop
.Left = cLeft
.Width = cWidth
End With
End Sub
- Hiện tại em chỉ gắn sự kiện được cho image số 10 (image cuối cùng). (Click vào imge 10 thì nó chạy sự kiện). Bây giờ em muốn 9 cái còn lại cũng đều hiểu sự kiện luôn .
- Nếu thay vì em phải sét 10 cái img khác nhau trên đầu cùng của code này thì có cách nào khác không ạ?
2. Cũng như trường hợp 1, nhưng thay vì sự kiện click chuột, thì có cách nào gắn thêm nhiều sự kiện khác tương ứng với các sự kiện mặc định phải có tương ứng của control mình vừa tạo (ví dụ: mouseUp, MouseDown..v.v.) ..thì kỹ thuật gắn thế nào ạ?
Trong .net có cách AddHandler theo cấu trúc AddHandler (Object as Event, Object as delegate) nhưng trên vba thì em tìm không ra ạ.
Em cảm ơn mọi người. Chúc mọi người 1 kỳ nghĩ lễ vui và thành công.