PDA

Vollständige Version anzeigen : Wheelmouse Problem in Unterformular


Randa-Michi
24.09.2003, 07:46
Hallo Forum!
Habe Access 2000.
Mit großer Freude hab ich die mousewheel.dll von Günther Kramer (Dankeschön!!!javascript:smilie(':)')
javascript:smilie(':)')) eingebunden und festgestellt, dass es prima funzt. Leider hab ich noch ein kleines Problem.
Wenn ich auf einem Unterformular das scrollen unterbinden will, sperrt mir Access alle Felder und Buttons die sich auf dem Unterformular befinden.
Das Unterformular ist ein normales Formular in der Formularansicht, auf dem ich Daten für einen Verkaufsbeleg eingeben kann. Im oberen Bereich des Formulars (nicht ufo) kann ich dann über ein Kombifeld die Nummer des Verkaufsbelegs auswählen um ihn z.B. einem verkauften Gerät zuzuweisen.
Das ufo wird angezeigt nachdem auf dem Hauptformular ein Seitenwechsel (durch klicken von einem Button) veranlasst wird.

Ich hab versucht, das Mausrad auf dem ufo bei verschiedenen Ereignissen abzuschalten, aber ich bin auf keinen Trichter gekommen...L. Als ich erst „beim Klicken“ das Mausrad abgeschalten habe, konnte ich zwar Daten eingeben, hab dann aber bei verschiedenen Ereignissen verschiedene Access-Fehlermeldungen bekommen, die sogar soweit gingen, dass Access geschlossen werden musste.

Ich hoff ich hab mich verständlich ausgedrückt. Ich weiß jetzt grad leider nicht so recht weiter... Wär schön, wenn jemand eine Idee hätte!
Ich danke euche!
Grüßle

Michi
:)

Randa-Michi
24.09.2003, 09:50
Hallo Forum!
Ich hab noch was bemerkt, wofür ich noch keine Lösung gefunden hab.
Ich hab auf meinen Formularen nen Button zum Beenden von Access. Wenn ich den drücke bekomme ich die Meldung:
Laufzeitfehler "91"
Objektvariable ode With-Blockvariable nicht festgelegt

Die Variablen sind aber definiert.
Hab versucht die Mausradsperrung aufzuheben noch bevor die Anwendung geschlossen wird, habe aber dann trotzdem die gleiche Fehlermeldung bekommen.
Hab ne globale Variable definiert, über die abgefragt wird, wer das beenden veranlasst.

Meinen Code für das Beendenproblem poste ich jetzt einfach mal dazu:
Code von but_beenden:
Private Sub but_beenden_Softwareerfassen_Click()
On Error GoTo Err_but_beenden_Softwareerfassen_Click

boolbeenden = True 'globale Variable zum prüfen wer speichern iniziiert
If boolbeenden = True Then
clsMouseWheel.SubClassUnHookForm
Set clsMouseWheel.Form = Nothing
Set clsMouseWheel = Nothing

DoCmd.Quit 'beenden
End If
Exit_but_beenden_Softwareerfassen_Click:
Exit Sub

Err_but_beenden_Softwareerfassen_Click:
MsgBox err.Description
Resume Exit_but_beenden_Softwareerfassen_Click

End Sub

Code von Ereignis form_close:
Private Sub Form_Close()
If boolbeenden = False Then
clsMouseWheel.SubClassUnHookForm
Set clsMouseWheel.Form = Nothing
Set clsMouseWheel = Nothing
End If
End Sub


Ich danke euch für eure Hilfe!
Grüßle

Michi

AMueller
24.09.2003, 12:44
sieh` dir das mal an: http://www.lebans.com/mousewheelonoff.htm
hab`s gerade erst bei mir eingebaut und funzt prächtig

gruz
andreas

Randa-Michi
02.10.2003, 13:57
Servus Andreas!
Hat ein bisschen länger gedauert, bis ich jetzt wieder zu diesem Thema zurückgekommen bin.
Danke für deinen Tipp!!
Leider klappts damit auch nicht so richtig. Hatte mir die A97MouseWheelHook.zip runtergeladen. Hab das Modul reinkopiert…
Trotzdem kann ich immer noch einmal scrollen, wenn ich die Sperrung aktiviere!?? Einmal… und das ist leider schon zuviel. Zudem fängt mein Formular sich an zwischen den Seiten zu bewegen? Soll heißen, wenn ich auf der zweiten Seite meines Formulars bin und den Button zum scrollen-stoppen drücke und danach scroll, dann rollt das gesamte Formular.
Ich komm irgendwie nicht weiter. :bawling:

Hab immer noch die Lösung von Günther Kramer integriert und damit kann ich das scrollen soweit abfangen. Außer man scrollt schnell. Dann will Access plötzlich irgendwas berechnen (in einer Leiste im unteren Teil des Fenster steht dann kurz „Berechnung läuft“). Sobald dies geschehen ist, kann ich nicht mehr ins Formular eintragen, außer ich schaffs mit der Maus dahin zu scrollen wo ich wieder was eingeben kann.
Klingt sehr abenteuerlich und das ist es auch, denn wenn ich doch auf nem neuen Datensatz steh, dann steh ich da und kann doch eigentlich nicht noch zwischen einem neuen und zehn anderen neuen hin und her scrollen….oder etwa doch?... Ich peil nicht was Access da macht bzw. machen will.

Falls du mir ne Tipp hättest oder irgendeinen Hinweis was Access da versucht, wär ich dir sehr dankbar!
Viele Grüße
Michi :)

Sascha Trowitzsch
02.10.2003, 14:45
Wenn du im (Access-)Forum unter Wheelmouse oder Mausrad suchst, so wirst du eine Vielzahl von Beiträgen zum Thema finden.
Ich für meinen Teil zumindest habe dabei immer darauf hingewiesen, wie prekär die Sache mit dem Subclassing in VBA ist und dass man sich auf eine ordentliche Funktion dieser Codes nicht verlassen kann.
Vor allem dann nicht, wenn man eigentlich gar nicht weiß, wie er funktioniert und was da abgeht.

Dass das Thema nicht trivial ist, lässt allein die Existenz z.B. dieses Buches erkennen:
http://www.oreilly.de/catalog/subhookvb/

Oder etwas Insiderwissen:
http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/SSubTimer/article.asp

Wer das alles rafft, der kann sich evtl. auch an die Lösung von Problemen mit Subclassing machen. Wer nicht, der sollte entweder darauf verzichten oder muss mit den Problemen leben.

Um es kurz zu machen:
Deine Schwierigkeiten sind leider aus der Ferne ohne Ansicht der DB und der Codes und auch weiterer Gegebenheiten nicht zu lösen.

Ciao, Sascha

AMueller
02.10.2003, 19:15
hi michi,

ich kann mich da nur sascha anschliessen - ohne sich die db anzusehen, kann man da wohl nicht viel tun.

das problem das du da beschreibst hatte ich allerdings eingangs auch - bis mir auffiel dass der code einen teil enthält, der je nach der verwendeten access version zu aktivieren bzw. zu deaktivieren ist....

gruz
andreas

Randa-Michi
04.10.2003, 02:02
Hallo Sascha und Andreas!
Ich hab mir die Seiten mal angeschaut und muss sagen, dass es mir einfach zu komplex und zu unrentabel ist mich da jetzt einzuarbeiten...(hab ja auch noch andere Sachen zu tun...grins)
Hab da aber noch die Idee gehabt auf meinem Unterformular ungebundene Textfelder reinzusetzen und die Werte dann auf einen Schlag, wenn alle Felder ausgefüllt sind in die Tabelle zu kopieren. Das Problem ist: Access sagt mir immer, dass die Felder in der Tabelle nicht aktualisiert werden konnten. (Ist schon klar, dass ich die Tabelle nicht so öffnen werde, sondern irgendwie versteckt, hab das aber noch nie probiert (bin absoluter Anfänger...))
Hab mir das einfach mal so vorgestellt

DoCmd.OpenTable "Verkaufsbeleg"
DoCmd.GoToRecord , , acNewRec
verk_beleg_nr = Me!verk_beleg_nr
verk_datum = Me!verk_datum
kaeufer_nr = Me!Kombinationsfeld32

Habt ihr da vielleicht noch ne Idee dazu?? Wär doch suppi wenn’s doch klappen würde, obwohl ich mir kaum vorstellen kann, dass da nicht schon vorher jemand drauf gekommen ist…;-), sonst würds ja schon ne richtig gute und bekannt Lösung geben…

Wenn das auch nicht hilft, dann werd ich wohl das mit dem Unterformular kicken und einfach auf ein normales verweisen.

Ich danke euch!
Grüßle,
Michi :)