Scrollprobleme mit ListView und ScrollBox



  • Hallo Leute,

    ich habe ein blödes Problem mit mehreren ListView-Komponenten untereinander in einer ScrollBox. Die VScrollBar ist sichtbar, da alle ListView nicht in der ScrollBar reinpassen - das ist auch gut so. Man muss herunterscrollen um z.B. an das 3. ListView heranzukommen.

    Mein Problem ist zum, dass ich OnClick-Ereignisse machen will. Wenn ich auf einen halbsichtbaren ListView klicke, dann scrollt die ScrollBox etwas nach oben und ich erwische nicht beim ersten Mal einen Eintrag richtig, wenn ich draufklicke. Ist es möglich dieses Scrollen der ScrollBox irgendwie abzuschalten?

    Hoffe, ihr versteht mein Problem.

    Gruß
    Hawk



  • Nun, da leider keiner hier eine Lösung dafür hatte, habe ich eben das

    AutoScroll=false
    

    gesetzt und eine extra vertikale ScrollBar neben der ScrollBox gesetzt und steuere das ganze jetzt über die externe ScrollBar.

    Das Hin-und Herspringen wegen dem Fokus ist nicht mehr vorhanden und das Problem ist gelöst.

    Ich denke, dass es zwar keine elegante Lösung ist, aber wenn jedoch jemand trotzdem eine bessere hat, dann bitte her damit!

    Gruß
    Hawk



  • Wie wäre es denn, wenn du dann deine komplette Lösung hier reinpostest? Von den anderen hast du immerhin auch eine Lösung erwartet.



  • Nun,

    OK hier also meine Lösung nachdem ich

    ScrollBox1->AutoScroll=false
    

    gesetzt habe:

    In der externen ScrollBar, die neben der ScrollBox vertikal platziert ist, habe ich im OnScroll-Ereignis folgendes eingetragen:

    void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode,
    		  int &ScrollPos)
    {
        //---- Die X-Koordniate von ScrollBy ist Null, da ich nur vertikal scrollen möchte	
        ScrollBox1->ScrollBy(0,-(ScrollPos-ScrollBar1->Position));
    }
    

    Wenn ich die ScrollBar bewege/scrolle, dann scrollt auch die ScrollBox wie es sein sollte und der Focus lässt die ScrollBox nicht hin und her springen. 👍

    Gruß
    Hawk


Anmelden zum Antworten