Nun haben Sie unseren Workshop ausprobiert und sind wie viele Andere darauf gestoßen, dass diese 4 Klassen nicht mit dem SSTab-Control zusammenarbeiten wollen, da dieses Control doch ein gewisses Eigenleben beweist, was seine darauf gesetzten Controls betrifft. Aus diesem Grund haben wir den Code entsprechend erweitert und angepasst, so dass das autom. Resizing der Form nun auch mit dem SSTab-Control funktioniert. Bezüglich des Resize-Problems und dem SSTab-Control gab es viele Fragen im Forum, so dass wir uns zusammengesetzt haben und Ihnen nun eine Erweiterung präsentieren können, mit der dieses Problem keines mehr ist und Sie nicht mehr auf das beliebte SSTab-Control verzichten müssen, wenn Sie unsere 4 Klassen einsetzen möchten. Zuerst benötigen wir ein wenig Hintergrundwissen bezüglich des SSTab-Controls. Was macht das SSTab es mit seinen Controls ? OK, was macht die Klasse mit den Controls ? 1. Abschnitt Initialisierung der Klasse Die Klasse merkt sich die Urprungskoordinaten aller Controls auf der Form. -> Wir müssen also als Erstes von allen Controls die gewünschten Koordinaten erhalten, ob sie nun verschoben sind oder nicht. Wir fügen also in die Klasse clsResize im Abschnitt Initialize vor die Schleife folgenden Code ein: Public Sub Initialize() Dim mCol_SSTAB As Collection Set mCol_SSTAB = New Collection ... Innerhalb der Schleife direkt nach der On Error Anweisung fügen wir noch folgenden Code ein: ... ' vom SSTab verborgene Controls merken und in den ' sichtbaren Bereich verschieben If oControl.Left < 0 Then mCol_SSTAB.Add oControl ' merken oControl.Left = oControl.Left + 75000 ' verschieben End If ... Zu guter Letzt müssen wir die ursprünglichen Koordinaten wiederherstellen. Dazu fügen wir nach der Schleife noch folgende Zeilen ein: ... ' Alle vorher verschobenen Controls wieder zurückverschieben For Each oControl In mCol_SSTAB oControl.Left = oControl.Left - 75000 Next ... Was machen nun diese zusätzlichen Zeilen Code genau? 2. Abschnitt DoResize Auch hier verfahren wir wieder ähnlich. Als erstes prüfen wir bei jedem Control, ob es nach links verschoben ist, wenn ja nehmen wir es in eine Collection auf. Nun verändern wir Größe und Position aller Controls. Danach verschieben wir alle betroffenen Controls um 75000 Twips nach links. Wir fügen also in die Klasse clsResize im Abschnitt DoResize folgenden Code ein: Public Sub DoResize() Dim mCol_SSTAB As Collection Set mCol_SSTAB = New Collection ... In die Schleife fügen wir als erstes die folgenden Zeilen ein: ... If oControl.Left < 0 Then mCol_SSTAB.Add oControl End If ... Nach der Schleife fügen wir dann wiederum die folgenden Zeilen ein: ... For Each oControl In mCol_SSTAB oControl.Left = oControl.Left - 75000 Next ... Wie genau funktioniert nun das Ganze ?Wiederum gehen wir davon aus, dass, wenn ein Control eine negative Left-Eigenschaft hat, dieses Control als Eltern ein SSTab-Control besitzt, und momentan nicht sichtbar ist. Wir brauchen uns nun nur noch diese Controls zu merken, denn durch unseren Trick in der Funktion Initialize haben alle Controls nach dem Resize neue Koordinaten und Größen im sichtbaren Bereich. Deshalb müssen wir alle Controls, die vorher nicht sichtbar waren, wieder nach links aus dem sichtbarem Bereich herausverschieben. Dazu haben wir uns nur noch gemerkt, welche Controls das genau sind und diese verschieben wir dann um 75000 Twips nach links. 3. Abschnitt DoResize_First Hier brauchen Sie nur in vollkommener Analogie zum 2. Abschnitt zu verfahren. Fertig: Unsere 4 Klassen beherrschen nun auch das SSTab-Control und das alles ohne Hexerei Wir wünschen Ihnen viel Spaß mit diesen Klassen. Sollten Sie Fragen zu diesem Workshop haben, so können Sie diese gerne in unser Diskussionsforum stellen. Dieser Workshop wurde bereits 22.387 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Workshops finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
|||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |