-
Ẩn form a và hiện form b (đều có popup và modal)
mrsiro > 25-08-18, 11:08 AM
Chào mọi người, mình có 2 form đều set modal và popup là yes.
Tại event form load của form1 mình viết: me.visible = false, docmd.openform "form2". Nhưng lúc này nó hiển thị luôn cả 2 form mà không ẩn form1.
Còn nếu mình tạo 1 button ở form1 rồi chuyển code kia vào event click. Thì lúc này chạy tốt, form1 ẩn và form2 hiện.
Không biết lí do vì sao, ai biết giúp mình với. -
RE: Ẩn form a và hiện form b (đều có popup và modal)
ongke0711 > 25-08-18, 12:57 PM
Bạn đưa nó vào sự kiện On Activate.
Khi nó đang Load hay Open, nó không thể tự ẩn chính nó. -
RE: Ẩn form a và hiện form b (đều có popup và modal)
mrsiro > 25-08-18, 02:25 PM
chuyển sang on active cũng ko được bạn ơi. -
RE: Ẩn form a và hiện form b (đều có popup và modal)
tranthanhan1962 > 25-08-18, 02:27 PM
Tại event form load của form1 viết: docmd.openform "form2"
Tại event form load của form2 viết: Form_form1.visible = False -
RE: Ẩn form a và hiện form b (đều có popup và modal)
mrsiro > 25-08-18, 02:33 PM
-
RE: Ẩn form a và hiện form b (đều có popup và modal)
ongke0711 > 25-08-18, 07:09 PM
Bài toán của bạn là mở Form1, ẩn đi rồi mở tiếp Form2 vậy tại sao bạn không dùng cách:
- Mở Form 1 từ Form3 (hoặc từ một nút lệnh nào đó) với mode "Hidden"
- Mở tiếp Form 2.
Vd: Code trong nút lệnh của Form3
Docmd.OpenForm "Form1", , , , , acHidden
Docmd.OpenForm "Form2" -
RE: Ẩn form a và hiện form b (đều có popup và modal)
mrsiro > 25-08-18, 08:37 PM
trường hợp của mình ko thể giải quyết theo kiểu mở form1 và 2 từ form 3 được, bởi vì cái form1 mở lên có nhiệm vụ check cái gì đó có hợp lệ hay ko, hợp lệ thì vô phần mềm, ko hợp lệ thì ẩn đi mở form2 lên. Xin nói thêm là ko dùng close form1 rồi mở form2, bởi vì có 1 số lí do ko dùng close phải dùng visible.
Cụ thể ở đây là form login khi mở lên sẽ check bản quyền, ko hợp lệ thì ẩn form login cho hiện form đăng ký bản quyền, và với 1 số lí do dài dòng nên xin minh phép là chỉ có thể dùng visible chứ ko dùng close form login. -
RE: Ẩn form a và hiện form b (đều có popup và modal)
ongke0711 > 25-08-18, 11:10 PM
Trường hợp của bạn cả 2 form không cần Pop up hay Modal =Yes.
Trong lệnh OpenForm bạn thêm tham số Windows Mode: acDialog là được rồi. Form nó sẽ nằm trên cùng và giữ rịt con trỏ trong nó chi đến khi bạn Close hoặc Hidden nó.
Docmd.OpenForm "Form2", , , , , acDialog -
RE: Ẩn form a và hiện form b (đều có popup và modal)
MTNQ > 26-08-18, 12:19 AM
(25-08-18, 08:37 PM)mrsiro Đã viết: trường hợp của mình ko thể giải quyết theo kiểu mở form1 và 2 từ form 3 được, bởi vì cái form1 mở lên có nhiệm vụ check cái gì đó có hợp lệ hay ko, hợp lệ thì vô phần mềm, ko hợp lệ thì ẩn đi mở form2 lên. Xin nói thêm là ko dùng close form1 rồi mở form2, bởi vì có 1 số lí do ko dùng close phải dùng visible.
Cụ thể ở đây là form login khi mở lên sẽ check bản quyền, ko hợp lệ thì ẩn form login cho hiện form đăng ký bản quyền, và với 1 số lí do dài dòng nên xin minh phép là chỉ có thể dùng visible chứ ko dùng close form login.
Từ AC 2007 thì không thể ẩn form khi đang mở hoặc đang load
-Tại sự kiện Onload của form1 bạn gọi lệnh mở form2, khi nào form2 hiển thị thì form1 mới kết thúc sự kiện OnLoad (form1 sẽ hiển thị sau form2). Do đó bạn cũng không thể gọi lệnh ẩn form1 ở sự kiện Onload của form2 vì lúc này form1 vẩn đang dừng ở Onload
Ta có thể giải quyết vấn đề bằng 2 cách sau:
1/Mở form2 ở chế độ Dialog:
-Tại sự kiện Onload của form1 bạn gọi lệnh mở form2 như sau:
Sau khi đóng form2, các lệnh tiếp theo mới được thực hiện và kết thúc sự kiện Onload, lúc này form1 sẽ hiển thịMã:Private Sub Form_Load()
' Các lệnh kiểm tra... nếu thỏa điều kiện nào đó thì:
DoCmd.OpenForm "Form2", , , , , acDialog
'các lệnh dưới nảy sẽ được tạm dừng để chuyển sang thực thi các lệnh trên form2. Sau khi đóng form2 các dòng lệnh tiếp theo mới được thực thi
End Sub
2/Ẩn form ở sự kiện Form_Timer()
-Tại sự kiện Onload của form1 ta set TimerInterval = 1
Mã:Private Sub Form_Load()
Me.TimerInterval = 1
End Sub
-Sự kiện Form_Timer() của form1:
Mã:Private Sub Form_Timer()
Me.TimerInterval = 0
Me.Visible = False
DoCmd.OpenForm "Form2"
End Sub
-
RE: Ẩn form a và hiện form b (đều có popup và modal)
mrsiro > 26-08-18, 08:58 AM
chào các bạn, nếu ko set modal thì trường hợp của mình ko được các bạn à. Bởi vì bên dưới của form có cái thanh menubar tự tạo để vào các form sử dụng chương trình, nếu ko set modal thì mặc dù chưa đăng nhập hoặc chưa đăng kí bản quyền thì vẫn có thể click vào thanh menubar. Vì thế cho nên phải set modal cho 2 form này với mục đích chỉ login thành công hoặc đăng kí bản quyền thành công thì mới có thể click vào thanh menubar.
Dĩ nhiên nếu theo cách set dialog thì vẫn có cách là cho ẩn thanh menubar tự tạo khi nào login thì mới cho hiện, nhưng nếu làm thế thì cảm thấy bức rức quá,
À, xin phép được nói thêm là mình dùng 2003, và có 1 điều đáng nói là đoạn code me.visible= false tại form1 vẫn có tác dụng nếu mình chuyển nó vào tại sự kiện click của 1 button, tức là nếu mình click vào button này nó vẫn có tác dụng ẩn form1 và hiện form2. Còn đặt tại onload của form1 thì lại ko tác dụng.