Ohne Zweifel gehört das Doch wie lässt sich das Realisieren? Um das zu bewerkstelligen, müssen ein paar Dinge berücksichtigt werden:
Hier die Routine. Fügen Sie den nachfolgenden Code in ein Modul ein: Public Sub AutoColSevGrid(oForm As Form, oGrid As sevDataGrid.Grid, _ Optional WithColHeaders As Boolean = True) Dim xCol As Long Dim yRow As Long Dim xColValue() As Long Dim xColHeaderValue() As Long Dim AktColWidth As Long Dim OldFont As StdFont With oGrid ' Prüfen, ob es Zeilen und Spalten ' zum Einstellen gibt... If .Rows < 1 Or .Cols < 1 Then Exit Sub ' Eigenschaften der Form und Grid ' in Variablen retten Screen.MousePointer = 11 Set OldFont = New StdFont OldFont = oForm.Font Set oForm.Font = .Font ReDim xColValue(1 To .Cols) ReDim xColHeaderValue(1 To .Cols) .LockUpdate True ' Erst die Schriftbreite der ColHeaders ermitteln ' und in das Array übertragen If WithColHeaders Then For xCol = 1 To .Cols xColHeaderValue(xCol) = oForm.TextWidth(.Columns(xCol).Caption) If .AutoSort And .ShowSortSymbols Then _ xColHeaderValue(xCol) = xColHeaderValue(xCol) + 250 If .Columns(xCol).Image > 0 Then _ xColValue(xCol) = xColValue(xCol) + 250 Next xCol End If ' Jetzt die Schriftbreite der einzelnen Zellen ' ermitteln und in das Array übertragen. Dabei ' wird überprüft, ob die aktuelle Breite größer ' ist, als der bisher größte Wert im Array, und ' ggf. ins Array übertragen. For yRow = 1 To .Rows For xCol = 1 To .Cols AktColWidth = oForm.TextWidth(.Text(yRow, xCol)) If AktColWidth > xColValue(xCol) Then _ xColValue(xCol) = AktColWidth Next xCol Next yRow ' Jetzt die Spaltenbreite aus dem Array Einstellen For xCol = 1 To .Cols If xColHeaderValue(xCol) > xColValue(xCol) Then _ xColValue(xCol) = xColHeaderValue(xCol) .Columns(xCol).Width = xColValue(xCol) + 100 Next xCol ' Formparameter zurücksetzen Set oForm.Font = OldFont Set OldFont = Nothing Screen.MousePointer = 0 ' Grid neu zeichnen .LockUpdate False .Refresh End With End Sub Aufrufbeispiel aus der Form, auf der sich Ihr Grid befindet: ' Spaltenheader berücksichtigen AutoColSevGrid Me, Grid1 Oder: ' Spaltenheader nicht berücksichtigen AutoColSevGrid Me, Grid1, False Hinweis: Die Geschwindigkeit der Funktion ist Abhängig von der Anzahl der Spalten und Zeilen. Auf meinem Testrechner (Pentium IV, 1.4 GHz) benötigt eine Tabelle mit 15 Spalten und knapp 4000 Records ca. 3 Sekunden. Die Funktion überprüft nicht, ob in den einzelnen Zellen ein Icon vorhanden ist. Ich habe aus Performance-Gründen bewusst darauf verzichtet. Dieser Tipp wurde bereits 9.338 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (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. |
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 Tipp des Monats Stefan Mähr Das XMLDom in VB6 benutzen Sicher hat jeder schon etwas vom gro?en "XML-Hype" mitbekommen. XML wird als das Datenaustauschformat gefeiert. Wie man XML Dateien mit VB6 richtig liest und erstellt wird dieser Tipp zeigen. sevDTA32 Pro ![]() DTA mit Kontonummernpr?fung Erstellen von DTA-Dateien mit integriertem BLZ-Verzeichnis und Konto- nummern-Pr?fverfahren, so dass ung?ltige Bankdaten bereits im Vorfeld ermittelt werden k?nnen. |
||||||||||||||||
|
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. |
|||||||||||||||||



AutoSize f?r das sevDataGrid


