ACC2000: Jak rozpoznat a zabránit posouvání pomocí záznamů ve formuláři Mouse Wheel

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:278379
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Upřesnit: Vyžaduje poradce kódování, spolupráce a víceuživatelském dovednosti.

Tento článek se týká databází aplikace Microsoft Access (MDB) a projektů aplikace Microsoft Access (ADP).

Souhrn
Bude neposkytuje metodu pro brání uživatelům v použití kolečka myši k posouvání záznamy na formuláři. Tento článek ukazuje, jak programově uživatelům zabránit v použití kolečka myši k posouvání záznamy na formuláři.

Poznámka: Pokud kód v tomto článku nefunguje podle očekávání, může mít nainstalovat nejnovější Microsoft IntelliPoint nebo softwaru výrobců myši. Stáhnout IntelliPoint software, navštivte následující web společnosti Microsoft:
Další informace
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené,. včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele. Ve výchozím mohou uživatelé otáčením kolečka myši procházejte řadu záznamů ve formuláři bude. Pokud chcete tomuto zabránit, můžete použít API Win32 k podtřídy formulářů a ignorovat myši kolečko zprávy odeslané do formuláře. Tím dvěma způsoby. První postup je použít k vytvoření ActiveX DLL, že podtříd Microsoft Visual Basic nebo Microsoft Visual C++ formuláře aplikace Microsoft Access a potom odkazovat, že DLL z aplikace Microsoft Access. Druhá metoda je zápis kódu v rámci bude samotný bez použití ActiveX DLL. Doporučuje z důvodu potíží s subclassing windows po načtení editoru Visual Basic Office vysoce společnost Microsoft ActiveX DLL a, které pak odkazovat DLL z aplikace bude používat Microsoft Visual Basic nebo Microsoft Visual C++.

Vytvoření události MouseWheel pomocí ActiveX DLL jazyka

  1. Spuštění aplikace Microsoft Visual Basic 6.0.
  2. Vytvořte nový projekt ActiveX DLL a otevřete ji.
  3. Přidejte následující kód se zobrazí okna modulu třídy:
    Option Compare TextOption ExplicitPrivate frm As ObjectPrivate intCancel As IntegerPublic Event MouseWheel(Cancel As Integer)Public Property Set Form(frmIn As Object)    Set frm = frmInEnd PropertyPublic Property Get MouseWheelCancel() As Integer    MouseWheelCancel = intCancelEnd PropertyPublic Sub SubClassHookForm()    lpPrevWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, _                                    AddressOf WindowProc)      Set CMouse = Me   End SubPublic Sub SubClassUnHookForm()    Call SetWindowLong(frm.hwnd, GWL_WNDPROC, lpPrevWndProc)End SubPublic Sub FireMouseWheel()    RaiseEvent MouseWheel(intCancel)End Sub					
  4. Nastavte vlastnosti modulu třídy následujícím způsobem:
       Class Module: CMouseWheel   -------------------------   Name: CMouseWheel   Instancing: 5 - MultiUse					
  5. Přidat standardní modul projektu a přidejte následující kód:
    Option Compare TextOption ExplicitPublic CMouse As CMouseWheelDeclare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _    (ByVal hwnd As Long, _    ByVal nIndex As Long, _    ByVal dwNewLong As Long) As LongPublic 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 = -4Public Const WM_MouseWheel = &H20APublic lpPrevWndProc As LongPublic 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 SelectEnd Function					
  6. V nabídce Zobrazit klepněte na příkaz Project Explorer zobrazit Prohlížeč projektu.
  7. Vyberte uzel projektu velmi horní Prohlížeč projektu.
  8. V nabídce Zobrazit klepněte na tlačítko Vlastnosti zobrazit okno vlastností pro projekt.
  9. Nastavit vlastnost název projektu MouseWheel.
  10. V nabídce soubor klepněte na Uložení.
  11. Uložit soubory projektu jako basSubClassWindow.bas, CMouseWheel.cls a MouseWheel.vbp respektive.
  12. V nabídce soubor klepněte na tlačítko Vytvořit MouseWheel.dll a klepněte na tlačítko OK, aby DLL.
  13. Ukončete Microsoft Visual Basic.
  14. Spusťte aplikaci Microsoft Access a otevřete ukázkovou databázi Northwind.mdb.
  15. Otevřete formulář Zákazníci v návrhovém zobrazení.
  16. V nabídce Zobrazit klepněte na tlačítko Kód zobrazení v editoru jazyka modul formuláře.
  17. V nabídce Nástroje klepněte na odkazy.
  18. Klepnutím zaškrtněte políčko vedle MouseWheel vyberte odkaz. Pokud jste tento odkaz uveden, klepněte na tlačítko Procházet, klepněte ve složce jej uložili v kroku 12 MouseWheel.DLL a klepněte na tlačítko Otevřít.
  19. Klepněte na tlačítko OK zavřete dialogové okno odkazy.
  20. Modul formuláře přidejte následující kód:
    Option Compare DatabaseOption ExplicitPrivate WithEvents clsMouseWheel As MouseWheel.CMouseWheelPrivate Sub Form_Load()    Set clsMouseWheel = New MouseWheel.CMouseWheel    Set clsMouseWheel.Form = Me    clsMouseWheel.SubClassHookFormEnd SubPrivate Sub Form_Close()   clsMouseWheel.SubClassUnHookForm   Set clsMouseWheel.Form = Nothing   Set clsMouseWheel = NothingEnd SubPrivate Sub clsMouseWheel_MouseWheel(Cancel As Integer)    MsgBox "You cannot use the mouse wheel to scroll records."    Cancel = TrueEnd Sub					
  21. V nabídce soubor klepněte na tlačítko Zavřít a návrat do aplikace.
  22. Uložte formulář a poté zavřete.
  23. Otevřete formulář Zákazníci ve formulářovém zobrazení.
  24. Otáčením kolečka myši.
Poznámka: zobrazí zpráva:
Kolečko myši nelze použít k posouvání záznamy.
Všimněte si také, že aktuální záznam nebyl změněn, označující zpráva kolečko myši nebyl zpracován aplikací Microsoft Access.

Vytvoření události MouseWheel kompletně kde bude

Upozornění: Pokud je to možné používejte metody uvedené v části "Creating the MouseWheel událostí podle použití jazyka ActiveX DLL" dříve v tomto článku. Můžete použít metodu popsanou v tomto oddílu pouze v situaci, kde uživatelé aplikace není být načítání editoru Visual Basic v rámci Microsoft Access, jako například v aplikaci Microsoft Access run time. Pokud implementovat toto řešení a uživatelům otevřít Editor jazyka, kód v této části způsobit bude přestat reagovat. Navíc musí ukončení a restartování bude před testování Pokud načtený Editor jazyka alespoň jednou během relace bude tento kód. Společnost Microsoft důrazně doporučuje často uložte práci a zachovat aktuální zálohy databáze, pokud použijete tento přístup.

V této části je znázorněn postup ukazuje, jak použít k vytvoření vlastní události MouseWheel, které můžete do formulářů rozpoznat, kdy uživatel má vrácena kolečko myši s názvem modulu třídy vlastní. Vlastní události zpřístupní Storno argument, který můžete použít zabránit zpráva role kolečko myši právě zachycen bude tím brání posouvání záznamu ve formuláři.

Vytvoření vlastní procedury, postupujte takto:
  1. Upozornění: Pokud postupujte podle kroků v tomto příkladu, změníte ukázkovou databázi Northwind.mdb. Můžete chtít zálohovat soubor Northwind.mdb a postupujte podle těchto kroků na kopii databáze.

  2. Spusťte aplikaci Microsoft Access.
  3. Otevřete ukázkovou databázi Northwind.mdb.
  4. V nabídce Vložit klepněte na modul vytvořte nový modul v editoru jazyka.
  5. Do modulu přidejte následující kód:
    Option Compare DatabaseOption ExplicitDeclare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _    (ByVal hwnd As Long, _    ByVal nIndex As Long, _    ByVal dwNewLong As Long) As LongPublic 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 = -4Public Const WM_MouseWheel = &H20APublic lpPrevWndProc As LongPublic CMouse As CMouseWheelPublic Function WindowProc(ByVal hwnd As Long, _    ByVal uMsg As Long, _    ByVal wParam As Long, _    ByVal lParam As Long) As Long    'Look at the message passed to the window. If it is    'a mouse wheel message, call the FireMouseWheel procedure    'in the CMouseWheel class, which in turn raises the MouseWheel    'event. If the Cancel argument in the form event procedure is    'set to False, then we process the message normally, otherwise    'we ignore it.  If the message is something other than the mouse    'wheel, then process it normally    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 SelectEnd Function					
  6. V nabídce soubor klepněte na tlačítko Uložit < název projektu >. Uložte modul jako basSubClassWindow.
  7. V nabídce Vložit klepněte na Modul třídy.
  8. Přidejte následující kód modul třídy:
    Option Compare DatabaseOption ExplicitPrivate frm As Access.FormPrivate intCancel As IntegerPublic Event MouseWheel(Cancel As Integer)Public Property Set Form(frmIn As Access.Form)    'Define Property procedure for the class which    'allows us to set the Form object we are    'using with it. This property is set from the    'form class module.    Set frm = frmInEnd PropertyPublic Property Get MouseWheelCancel() As Integer    'Define Property procedure for the class which    'allows us to retrieve whether or not the Form    'event procedure canceled the MouseWheel event.    'This property is retrieved by the WindowProc    'function in the standard basSubClassWindow    'module.    MouseWheelCancel = intCancelEnd PropertyPublic Sub SubClassHookForm()    'Called from the form's OnOpen or OnLoad    'event. This procedure is what "hooks" or    'subclasses the form window. If you hook the    'the form window, you must unhook it when completed    'or Access will crash.        lpPrevWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, _                                    AddressOf WindowProc)      Set CMouse = Me   End SubPublic Sub SubClassUnHookForm()    'Called from the form's OnClose event.    'This procedure must be called to unhook the    'form window if the SubClassHookForm procedure    'has previously been called. Otherwise, Access will    'crash.    Call SetWindowLong(frm.hwnd, GWL_WNDPROC, lpPrevWndProc)End SubPublic Sub FireMouseWheel()    'Called from the WindowProc function in the    'basSubClassWindow module. Used to raise the     'MouseWheel event when the WindowProc function    'intercepts a mouse wheel message.    RaiseEvent MouseWheel(intCancel)End Sub					
  9. V nabídce soubor klepněte na tlačítko Uložit < název projektu >. Uložit jako CMouseWheel modulu třídy.
  10. Otevřete formulář Zákazníci v návrhovém zobrazení.
  11. V nabídce Zobrazit klepněte na tlačítko Kód zobrazení modulu třídy formuláře.
  12. Přidejte následující kód modulu třídy formuláře:
    Option Compare DatabaseOption Explicit'Declare a module level variable as the custom class'and give us access to the class's eventsPrivate WithEvents clsMouseWheel As CMouseWheelPrivate Sub Form_Load()    'Create a new instance of the class,    'and set the class's Form property to    'the current form      Set clsMouseWheel = New CMouseWheel    Set clsMouseWheel.Form = Me    'Subclass the current form by calling    'the SubClassHookForm method in the class    clsMouseWheel.SubClassHookFormEnd SubPrivate Sub Form_Close()    'Unhook the form by calling the     'SubClassUnhook form method in the     'class, and then destroy the object    'variable      clsMouseWheel.SubClassUnHookForm    Set clsMouseWheel.Form = Nothing    Set clsMouseWheel = NothingEnd SubPrivate Sub clsMouseWheel_MouseWheel(Cancel As Integer)     'This is the event procedure where you can     'decide what to do when the user rolls the mouse.     'If setting Cancel = True, we disable the mouse wheel     'in this form.     MsgBox "You cannot use the mouse wheel to scroll through records."     Cancel = TrueEnd Sub
  13. V nabídce soubor klepněte na tlačítko Zavřít a návrat do aplikace.
  14. Uložte formulář a poté zavřete.

    Poznámka: Neotevírejte formuláře ve formulářovém zobrazení v tomto okamžiku. Pokud tak učiníte, budou přestane odpovídat protože zaveden Editor jazyka.
  15. Ukončení aplikace Microsoft Access.
  16. Restartujte aplikace a otevřete ukázkovou databázi Northwind.mdb.
  17. Otevřete formulář Zákazníci ve formulářovém zobrazení.
  18. Otáčením kolečka myši.
Poznámka: zobrazí zpráva:
Kolečko myši nelze použít k procházení záznamů.
Všimněte si také, že aktuální záznam nebyl změněn, označující zpráva kolečko myši nebyl zpracován aplikací Microsoft Access.
Informace

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 278379 - Poslední kontrola: 12/05/2015 22:32:15 - Revize: 3.2

Microsoft Access 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto KB278379 KbMtcs
Váš názor