PDA

View Full Version : INPUT MASK trong VB



realtimesystem
21-11-2004, 16:54
Có Bác nào biết làm inputmask trong VB không. ví dụ nhập vào textbox ngày tháng như sau: 21112004 tự động chuyển thành 21/11/2004, như trong Access đó. Chỉ giúp tui với.

thanhphong122
21-11-2004, 21:04
De hien thi nhu cach ban noi ban lam nhu sau:
- Chon Thuoc tinh InputMask trong cua so thuoc tinh, go nhu sau: "__/__/____". Tuc 2 so cho ngay, 2 so cho thang va 4 so cho nam.
- Code:
mskTest.text=format(mskTest,"dd/mm/yy")
Lau qua cung quen roi, hinh nhu la vay do. Thu xem nhe! Neu lam ko duoc thi mail cho toi nhe: thanhphong122@yahoo.com. Chuc thanh cong.

PHAMTAM
24-11-2004, 09:37
Cùng lắm lấy chuổi trong đó ra xử lý cắt ra thêm vào rồi ghép lại biến thành dạng ngày xong hhihiihi tôi dốt lằm đừng cười tui nha!

realtimesystem
25-11-2004, 16:27
Cùng lắm lấy chuổi trong đó ra xử lý cắt ra thêm vào rồi ghép lại biến thành dạng ngày xong hhihiihi tôi dốt lằm đừng cười tui nha!

Ý của Bac là

Private sub cmdketqua_click()
ngay=left(txt1.text,2)
thang=mid(txt1.text,3,2)
nam=left(txt1.text,4)
txt1.text=ngay & "/" & thang & "/" & nam
End sub

Ý kiến của Bác cũng hay. nhưng ví dụ tui điều khiển bằng nút cmdketqua chẳng hạn
khi chưa nhấn 25112004
nhấn lần thứ nhất 25/11/2004
nhấn lấn thứ hai không còn giữ nguyên 25/11/2004 mà là 25////2004
Nhấn lần thứ ba....
Có cách nào để chặn lại không, Bác làm ơn sử dụng cái "dốt" của bác để chỉ tiếp cho tui đi
hay bất cứ một ai đó

haitu
26-11-2004, 10:33
theo tôi thì không nên để nhấn commandbutton thì xử lý mà bạn nên để ở thuộc tính lostfocus của textbox thì hay hơn:
VD: bạn gõ vào chuỗi 21112004 trong text box và khi nhấn tab để qua diều khiển khác thì sẽ hiển thị thành 21/11/2004 thì bạn làm như sau:

Private sub txt1_LostFocus()
Dim ngay As String, thang As String, nam As String

If Len(txt1.text) = 8 Then 'nếu không muốn có thể không cần kiểm tra
ngay = Left(txt1.text, 2) '21
thang = Mid(txt1.text, 3, 2) '11
nam = Right(txt1.text,4) '2004
txt1.text = ngay & "/" & thang & "/" & nam '21/11/2004
Else 'nếu không muốn có thể không cần kiểm tra
MsgBox"Dữ liệu nhập vào không phù hợp"
End If
End sub

nếu có gì trục trặc bạn cứ chỉnh lại đôi chút vì mình viết trên diễn đàn nên cũng có thể có vài chỗ không đúng cú pháp hoặc gởi mail cho tôi haitu83@yahoo.com.

realtimesystem
26-11-2004, 16:18
Ý cua Bác haitu khá hay nhưng khi nhấn tab nhiều lần thì cũng xảy ra trường hợp...
khi chưa nhấn tab 25112004
nhấn lần thứ nhất 25/11/2004
nhấn lấn thứ hai không còn giữ nguyên 25/11/2004 mà là 25////2004
Nhấn lần thứ ba....

spaceman
29-11-2004, 08:52
Các cao thủ VB đâu rồi trả lời cho reatimesystem đi chứ, tui thì bó tay rùi.

thanhphong122
29-11-2004, 09:39
thi lam giong nhu tui vay do (co ghi o tren roi), su dung input mask la duoc lien ma. Co tab bao nhieu lan cung khong bi dau

buikiem
02-12-2004, 13:20
Mình thấy ý của haitu rất hay. Tong sự kiện txt1_LostFocus nếu len()<>8 thì không cho thoát khỏi ô text vì đã nhập sai định dạng. Nhưng khi txt_gotFosus thì ta lại phải đổi text về dang ban đầu(dạng nhập vào). làm vậy có lẽ sẽ không sai đâu. Mình nghĩ ngoài ra cần kiểm tra xem ngày thnág như vậy là có hợp lên hay không.

buikiem
02-12-2004, 13:30
Mình thấy ý của haitu rất hay. Tong sự kiện txt1_LostFocus nếu len()<>8 thì không cho thoát khỏi ô text vì đã nhập sai định dạng. Nhưng khi txt_gotFosus thì ta lại phải đổi text về dang ban đầu(dạng nhập vào). làm vậy có lẽ sẽ không sai đâu. Mình nghĩ ngoài ra cần kiểm tra xem ngày thnág như vậy là có hợp lên hay không.

haitu
07-12-2004, 09:26
pác realtimesystem nói là nhấn tab nhiều lần nhưng không biết pác nhấn tab lúc con trỏ để ở những điều khác hay là ở điều khiển đang xử lý

realtimesystem
07-12-2004, 14:30
Cảm ơn Bác haitu,mọi việc tốt rồi

thuyenlenhdenh
08-01-2005, 15:54
chẳng hỉu gì cả sao ko dùng inputmask của VB có phải vừa nhanh vừa dễ ko, chẳng phải code gì cả