Problem beim Scrollen in Endlosformular

16/07/2008 - 17:13 von Paul Rohorzka | Report spam
Hallo liebe Leute!

(A2k, WinXP - jeweils aktuelle SPs, HP-Maus an Standard-WinXP-
Maustreiber)

Ich habe ein Endlosformular in dem mehre Datensàtze angezeigt werden.
Das Formular ist aber hoch genug, um alle Datensàtze auf einmal ohne
Scrollen darstellen zu können. Ich kann nun dennoch mit dem Mausrad
den Datenbestand ein wenig auf und ab schieben - je nach dem mit wie
viel Schwung ich vorgehe. Das Problem ist, dass ich es aber nicht mehr
schaffe so weit zurückzuscrollen, dass auch der erste Datensatz wieder
sichtbar wird. Den kann ich nur anzeigen, indem ich mit Shift-Tab die
Einfügemarke verschiebe oder am vertikalen Scrollbalken den Pfeil nach
oben bemühe.

Habt ihr eine Idee, wie ich dieses Verhalten abstellen kann? Mir
fallen zwar einige Umgehungsmöglichkeiten ein (Scrollen per Mausrad
für solche Fàlle abschalten, auf Knopfdruck SelTop setzen, ...), aber
eigentlich hàtte ich gerne das geplante Standardverhalten.

Ich danke euch für's Mitdenken.

LG, Paul
 

Lesen sie die antworten

#1 Gottfried Lesigang
16/07/2008 - 18:03 | Warnen spam
Hallo liebe Leute!



Hallo, lieber Paul!

[Problem mit Scrollverhalten]



Lustig! Ich kann das sofort nachstellen... Ein Grund mehr, warum ich in
meinen Anwendungen bis dato nicht ein einziges EFo habe ;-)

Es hàngt ganz offenkundig mit der Formularhöhe zusammen, da das
Mouse-Wheel-Verhalten bei weniger Platz korrekt ist. Deshalb folgender
Workaround:

Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
Dim tmpX As Long, tmpY As Long, tmpW As Long, tmpH As Long
If Me.Recordset.RecordCount * Me.Detailbereich.Height < Me.WindowHeight
Then
tmpX = Me.WindowLeft
tmpY = Me.WindowTop
tmpW = Me.WindowWidth

'Hier müsstest du etwas mehr Mühe in den optimalen Wert stecken
'er ist abhàngig von Menü, Kopf- und Fußhöhe etc.
'Also nur zum Testen...
tmpH = Me.Recordset.RecordCount * Me.Detailbereich.Height

Call Me.Move(tmpX, tmpY, tmpW, tmpH)
End If
End Sub

Bissi ugly but working ;-)

Wahrscheinlich könntest du auch per SubClassing das Mousewheel-Event vorab
fangen, das Formular verkleinern und dann wieder zurückstellen. Mit "Echo
False" würde das wohl nicht mal flackern...

lg
Gottfried

Home: www.develes.net
Mail:

Ähnliche fragen