MSHFlexGrid zu einer bestimmten Zeile scrollen

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Agent.

    MSHFlexGrid zu einer bestimmten Zeile scrollen

    Ich habe ein MSHFlexGrid und da leg ich irgendwo die Größe fest, zb MSHFlexGrid1.Rows=100
    Nun möchte ich zu einer bestimmten Zeile scrollen (mit VB) so das diese sichtbar ist, aber mit MSHFlexGrid1.Row = 50 legt man nur fest, das der Cursor dort positioniert wird und man muss manuell dort hin scrollen.

    Jetzt meine Frage, wie kann ich mit VB zu einer bestimmten Zeile scrollen?
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hi,

    beim MSFlexGrid gibt es ne Funktion TopRow (oder so ähnlich) die festlegt, dass die übergebene Zeile sichtbar ist. Ob das beim MSHFlexGrid auch gibt weiss ich nicht, gehe aber davon aus.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Das mit SendKeys funktioniert leider nicht.

    TopRow gibt es, aber dann ist immer nur die letze Zeile zu sehen, gibt es noch auch sowas wie LastRow oder BottomRow?
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hi,

    leider gibt es sowas wie LastRow od. BottomRow nicht. Du kannst doch aber anhand der Höhe der Zeilen über der die Du am unteren Rand und der Höhe des Steuerelementes abzüglich der Höhe FixedCols berechnen welche Zeile Du als TopRow angeben musst.!!

    Beispiel:
    Höhe Steuerelement: 200
    Höhe pro Zeile: 50 (der einfachheit sind alle Zeile 50 hoch)
    FixedCols: 1, Höhe: 50
    angezeigt werden soll Zeile 17

    Rechnung:
    x = Höhe Steuerelement - [Höhe FixedCols] - Höhe(Zeile 17)
    Do
    c = c + 1
    x = x - Höhe (Zeile 17 - c) ' also Zeile 16 (dann 15)
    Loop until X <= 0
    FlexGrid.TopRow = Zeile 17 - c 'also Zeile 15

    Und schon wird Zeile 17 am unteren Rand angezeigt.


    bye ...

    LaMa5.

    P.S. Ist nicht getestet. Ich hoffe es funktioniert. ;)
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Ja das man TopRow berechnen kann damit die letzte Zeile unten steht ist mir auch schon in den Sinn gekommen, dachte aber eigentlich das es auch einfacher geht. Aber dann muss ich wohl doch wieder Umwege in kauf nehmen ;)
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    ok thx für den rechenansatz, hab die formeln noch bissel optimiert denn falls nur sehr wenig Einträge im FlexGrid sind kommt da dort ein Fehler weil Toprow nicht negativ sein kann...

    Visual Basic-Quellcode

    1. Private Sub FlexGrid_SetRow(ByVal lRow As Long)
    2. Dim tmp as Long
    3. tmp = (lRow - Fix(FlexGrid1.Height / FlexGrid1.CellHeight)) + 3
    4. FlexGrid1.TopRow = IIf(tmp < 1, 1, tmp)
    5. End Sub
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau