• Ẩn form a và hiện form b (đều có popup và modal)
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    ongke0711 > 27-08-18, 09:09 PM

    Vậy không phải là ở textpass khi bạn keydown thì nó SetFocus cho chính nó à? SetFocus từ cái dangnhap_click bạn gọi đó.
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    mrsiro > 28-08-18, 11:34 AM

    đúng là gọi setforcus từ dangnhap_click. Nhưng mà theo cách của bạn thì nó vẫn ko có tác dụng. Xin phép nói thêm là khi ấn nút enter ở txtpass thì mình cho gọi dangnhap_click.
    Tại dangnhap_click này check nếu txtpass là null thì cho setforcus vào txtpass.
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    ongke0711 > 28-08-18, 11:49 AM

    Thì bạn cho SetFocus vô 1 textbox khác rồi mới vô txxtpass.
    Chú ý textbox để null khác với bạn delete nội dung nó nên bạn bẫy Nz không chưa đủ đâu.
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    mrsiro > 28-08-18, 06:14 PM

    http://www.mediafire.com/file/4w651kc3sz...9.mdb/file
    Mình làm theo hướng dẫn rồi nó vẫn ko forcus vào txtpass khi call dangnhap_click ban à.
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    ongke0711 > 28-08-18, 09:02 PM

    Bạn quên đoạn : KeyCode=0

    Private Sub Text0_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = 13 Then
            KeyCode = 0
            Me.Command2.SetFocus
            Call Command2_Click
        End If
    End Sub

    - Thiết lập thuộc tính Form - Key Preview=Yes
  • RE: Ẩn form a và hiện form b (đều có popup và modal)

    tieu_ngao > 08-09-18, 08:14 AM

    (26-08-18, 12:23 PM)ongke0711 Đã viết: Một góp ý khác về logic xử lý của bạn. Tôi thì hay dùng cách này:
    Khi mở form Login sẽ kiểm tra bản quyền, nếu hợp lệ thì tiếp tục Load form Login, nếu không thì đóng nó lại mở Form "Đăng ký bản quyền". Đơn giản vậy thôi

    Private Sub Form_Open(Cancel As Integer)
        If CoBanQuyen = False Then
            DoCmd.OpenForm "Form2", , , , , acDialog
            DoCmd.Close acForm, Me.Name
        Else
            'Tiep tục load form
        End If
    End Sub

    (26-08-18, 01:31 PM)ongke0711 Đã viết:
    (26-08-18, 12:53 PM)mrsiro Đã viết: ...
    vì 1 số lí do dài dòng nên mình chỉ có thể dùng visible chứ ko dùng close được đó bạn.

    Nếu Access không hỗ trợ vụ ẩn modal form đang load thì bạn nghĩ giải pháp khác.
    Không có giải pháp nào ngoài việc phải Invisible sao?
    - Bạn có thể truyền các tham số trong form Login vô biến toàn cục.
    - Bạn có thể truyền tham số qua OpenArgs
    Như vậy thì khi Form đóng rồi bạn vẫn có thể tham chiếu đến các thông tin cần thiết.
    Bạn chia sẽ giải thuật gì của bạn mà buộc phải Invisible cái form Login? Mọi người sẽ góp ý logic xử lý khác hợp lý hơn nếu có.

    (26-08-18, 03:37 PM)ongke0711 Đã viết: Hehe..thì ra cái vấn đề nằm ở cái nút Close. Đóng Form là thoát ứng dụng. Có nhiều cách để xử lý v/đ này của bạn. Tôi đưa ra 3 cách:

    * C1:
    Bạn đổi kiểu thiết kế khác đi. Không dùng nút Close của form mà tự thiết kế gần giống vậy, vẫn đảm bảo đẹp mà. Khi thiết kế Form - Border Style: None.

    [Hình: 43555511374_7910cea62d_o.png]



    * C2: Nút Close có thể Quit hay Close tuỳ trường hợp
    - Dùng thiết kế hiện tại của bạn. 
    - Sửa code của nút Close trên form. Tạo thêm 1 biến tính hiệu (Flag) để khi sự kiện Form_Close (hoặc Unload) kích hoạt sẽ kiểm tra biến tín hiệu này -> sau đó thực hiện Quit hay Close tuỳ theo nó.
    - Khai báo trên Form 1 (frmLogin)


    Mã PHP:
    Option Compare Database
    Option Explicit

    Dim blnQuit 
    As Boolean 

    Mã PHP:
    Private Sub Form_Close()
        If blnQuit True Then
            DoCmd
    .Quit
        End 
    If
    End Sub 

    Mã PHP:
    Private Sub Form_Open(Cancel As Integer)

        Dim CoBanQuyen As Boolean
        
        CoBanQuyen 
    False  'Thay đổi tham số test này tuỳ theo code check bản quyền'

        If CoBanQuyen False Then
            DoCmd
    .OpenForm "Form2", , , , , acDialog
            blnQuit 
    False
            DoCmd
    .Close acForm"Form1"
        Else
            blnQuit True
        End 
    If 


    * C3:

    Một giải pháp khác là vẫn giữ thiết kế như bạn đang làm thêm cái nút lệnh (cmdHidden) khi bấm là ẩn Form 1 và hiện Form 2 như bạn đã test thành công, cho nút đó ẩn đi.

    Khi form Login mở, khi không có bản quyền thì sẽ gọi cái nút lệnh đó (nó gần giống như Sendkey vậy)


    Private Sub Form_Open(Cancel As Integer)
        If CoBanQuyen = False Then
            Call cmdHidden_Click
        Else
            'Tiep tục load form
        End If
    End Sub

    - Chú ý code của nút ẩn form phải là Public Sub

    Public Sub cmdHidden_Click()
        DoCmd.OpenForm "Form2", , , , , acDialog
        Me.Visible = False
    End Sub

    (27-08-18, 06:10 PM)mrsiro Đã viết: bạn hiểu sai ý mình rồi

    Mã:
    đây là sự kiện onlick của nút đăng nhập
    If nz(me.txtpass,0) = 0 then
    msgbox "nhập pass"
    me.txtpass.setforcus
    end if

    Mã:
    đây là tại sự kiện keydown của txtpass
    if keycode = 13 then
    dangnhap_click
    end if

    Anh Bảo có form login đẹp quá, share cho em đi anh