Diskussion zum Artikel "DoEasy. Steuerung (Teil 19): Verschieben der Registerkarten in TabControl, Ereignisse im WinForms-Objekt"

 

Neuer Artikel DoEasy. Steuerung (Teil 19): Verschieben der Registerkarten in TabControl, Ereignisse im WinForms-Objekt :

In diesem Artikel werde ich die Funktionsweise zum Verschieben (scrolling) von Registerkartenüberschriften in TabControl mithilfe von Scroll-Schaltflächen erstellen. Die Funktionalität ist dazu gedacht, Tabulator-Kopfzeilen in einer einzigen Zeile auf beiden Seiten des Steuerelements zu platzieren.

Kompilieren Sie den EA und starten Sie ihn auf einem Chart:


Wie wir sehen können, funktioniert alles wie vorgesehen.

Es gibt jedoch zwei Unzulänglichkeiten: Wenn man mit dem Mauszeiger über den ausgeblendeten Kopfbereich der Registerkarte fahren, ändert die Kopfzeile ihre Farbe, als ob sie in diesem Bereich sichtbar wäre. Aus diesem Grund ändert sich die Größe des aktiven Bereichs des Steuerelements nicht, wenn die Größe des sichtbaren Bereichs geändert wird. Um dies zu beheben, muss ich den aktiven Bereich berechnen und in der Größe an den sichtbaren Bereich anpassen.

Die zweite Unzulänglichkeit besteht darin, dass zwei Pixel der ausgeblendeten Kopfzeile angezeigt werden, wenn man die ausgewählte Kopfzeile außerhalb des Containers bewegen und das Bedienfeld verschieben. Dies hat mit der Größenbestimmung der Registerkarte für die Bereichsberechnung zu tun, da die ausgewählte Kopfzeile auf jeder Seite um zwei Pixel größer wird. Um dies zu beheben, muss ich eine Möglichkeit finden, die Größe der angrenzenden Kopfzeile innerhalb des Registerkartenkopf-Objekts zu ermitteln, anhand derer die Größe des Sichtbarkeitsbereichs berechnet wird.

Autor: Artyom Trishkin