ACC97: Nasıl bir form içinde kayıtlar boyunca kaydırma için fare tekerleğini kullanımını engelle

Makale çevirileri Makale çevirileri
Makale numarası: 308636 - Bu makalenin geçerli olduğu ürünleri görün.
Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı becerileri gerektirir.

Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, kullanıcıların bir form üzerinde kayıtlar arasında kaydırma yapmak için fare tekerleğini kullanmalarını engellemek için bir ActiveX DLL oluşturma açıklanmaktadır.

Daha fazla bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Varsayılan olarak, kullanıcılar, bir dizi kayıtlarında, bir Access formu kaydırmak için fare tekerleğini geri dönebilirsiniz. Microsoft, bu eylemi engellemek için bir yol sağlamaz, ancak formları için bir alt sınıfı Win32 API kullanarak ve fare tekerleğini giriş formu yoksaymak, Access'in bu eylemi engelleyebilirsiniz.

Tüm gerekli kodu kullanmadan bir ActiveX DLL Access içinde kendisi de yazabilirsiniz, ancak Microsoft, Microsoft Visual Basic veya Visual C++ Microsoft bir ActiveX DLL alt formları Access ve sonra bu DLL başvuru oluşturmak oluşturmakta kullandığınız önerir.

Visual Basic'te bir ActiveX DLL DOSYASı oluşturma

  1. Visual Basic 6. 0'ı başlatın.
  2. Yeni bir proje ActiveX DLL'I oluşturun ve sonra projeyi açın.
  3. Görüntülenen sınıf modülünde penceresi aşağıdaki kodu ekleyin:
    Option Compare Text
    Option Explicit
    
    Private frm As Object
    Private intCancel As Integer
    Public Event MouseWheel(Cancel As Integer)
    
    Public Property Set Form(frmIn As Object)
        Set frm = frmIn
    End Property
    
    Public Property Get MouseWheelCancel() As Integer
        MouseWheelCancel = intCancel
    End Property
    
    Public Sub SubClassHookForm()
        lpPrevWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, _
                                        AddressOf WindowProc)
          Set CMouse = Me
       End Sub
    
    Public Sub SubClassUnHookForm()
        Call SetWindowLong(frm.hwnd, GWL_WNDPROC, lpPrevWndProc)
    End Sub
    
    Public Sub FireMouseWheel()
        RaiseEvent MouseWheel(intCancel)
    End Sub
    					
  4. Sınıf modülü özelliklerini aşağıdaki gibi ayarlayın:
       Class Module: CMouseWheel
       -------------------------
       Name: CMouseWheel
       Instancing: 5 - MultiUse
    					
  5. Standart modül projeye ekleyin ve sonra aşağıdaki kodu ekleyin:
    Option Compare Text
    Option Explicit
    
    Public CMouse As CMouseWheel
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
        (ByVal hwnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long
    
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
        (ByVal lpPrevWndFunc As Long, _
         ByVal hwnd As Long, _
         ByVal msg As Long, _
         ByVal wParam As Long, _
         ByVal lParam As Long) As Long
         
    Public Const GWL_WNDPROC = -4
    Public Const WM_MouseWheel = &H20A
    Public lpPrevWndProc As Long
    Public Function WindowProc(ByVal hwnd As Long, _
        ByVal uMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long
        Select Case uMsg
            Case WM_MouseWheel
                CMouse.FireMouseWheel
                If CMouse.MouseWheelCancel = False Then
                    WindowProc = CallWindowProc(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
                End If
                
            Case Else
               WindowProc = CallWindowProc(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
        End Select
    End Function
    					
  6. Görünüm menüsünde Project Explorer'ı görüntülemek için Project Explorer ' ı tıklatın.
  7. Çok Proje Gezgini üstündeki <a2>Proje</a2> düğümü tıklatın.
  8. Görünüm menüsünde, proje için özellik sayfasını görüntülemek için Özellikler ' i tıklatın.
  9. Projenin adı özelliği için MouseWheel ayarlayın.
  10. Dosya menüsünde Kaydet Project ' i tıklatın.
  11. Proje dosyaları basSubClassWindow.basCMouseWheel.cls ve MouseWheel.vbp sırasıyla kaydedin.
  12. Dosya menüsünde MouseWheel.dll yap'ı tıklatın ve DLL yapmak için Tamam ' ı tıklatın.
  13. Microsoft Visual Basic'nden çıkın.

ActiveX DLL DOSYASı için bir başvuru oluşturma

  1. Microsoft Access'i başlatın ve sonra da Northwind.mdb örnek veritabanını açın.
  2. Müşteriler formu Tasarım görünümünde açın.
  3. Görünüm menüsünde kodu modüle formunun Visual Basic Düzenleyicisi'nde görüntülemek için tıklatın.
  4. Araçlar menüsünde, Başvurular ' ı tıklatın.
  5. Başvuruyu seçmek için MouseWheel yanındaki onay kutusunu seçmek için tıklatın. Bu başvuru listeleniyorsa, Gözat ' ı tıklatın, (adım 12'de, yukarıdaki yordamı) kaydettiğiniz klasöre MouseWheel.dll ' ı tıklatın ve sonra ' ı tıklatın.
  6. <a0>Başvurular</a0> iletişim kutusunu kapatmak için Tamam ' ı tıklatın.
  7. Formun modüle aşağıdaki kodu ekleyin:
    Option Compare Database
    Option Explicit
    
    Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel
    
    Private Sub Form_Load()
        Set clsMouseWheel = New MouseWheel.CMouseWheel
        Set clsMouseWheel.Form = Me
        clsMouseWheel.SubClassHookForm
    End Sub
    
    Private Sub Form_Close()
       clsMouseWheel.SubClassUnHookForm
       Set clsMouseWheel.Form = Nothing
       Set clsMouseWheel = Nothing
    End Sub
    
    Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
        MsgBox "You cannot use the mouse wheel to scroll records."
        Cancel = True
    End Sub
    					
  8. Dosya menüsünde Kapat ve Microsoft Access'e dön'ı tıklatın.
  9. Kaydetmek ve Müşteriler formunu kapatın.
  10. Sonuçları görüntülemek için <a0></a0>, Müşteriler formu Form görünümünde açın ve fare tekerini kullanarak kaydırma deneyin. Not aşağıdaki iletiyi alırsınız:
    Kayıtları kaydırmak için fare tekerleğini'ni kullanamazsınız.
    Ayrıca, geçerli kaydın, Access fare tekerleğini alınıyor işlemek olduğunu gösterir değişmediğini unutmayın.

Özellikler

Makale numarası: 308636 - Last Review: 31 Ocak 2007 Çarşamba - Gözden geçirme: 4.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbprogramming KB308636 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:308636
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com