vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen & Antworten rund um sev-Komponenten
Re: sevDataGrid - Spaltenbreiten 
Autor: Wolfgang M.
Datum: 15.06.04 16:06

Hallo,

bei dem Tipp, auf dem Du bezug nimmst, handelt es sich um ein anderes Ziel. Dieser Code soll bewirken, dass die Spalten optimal hinsichtlich der gegenwärtigen Einträge eingestellt wird. Bei fast 4000 Datensätzen kann ich mir schon vorstellen, dass es seine Zeit dauert, bis die optimalen Spaltenbreiten ermittelt sind.

Bei meinem Beispiel geht es darum, die Spalten prozentual einzustellen, was dann unabhängig von den Daten geschieht. Demzufolge muss mein Code nicht erst den breitesten Text in einer Spalte ermitteln und davon die erforderliche Spaltenbreite ableiten. Das bedeutet, mein Code müsste bei 4000 Zeilen genauso schnell zum Ergebnis kommen als bei nur 5 Zeilen. Probiere es einfach mal aus.

Inzwischen habe ich meinen Code noch geringfügig verändert. Auf grund von Rundungsdifferenzen kann es bei der prozentualen Einstellung vorkommen, dass zwischen letzter Spalte und senkrechtem Rollbalken ein kleine Lücke gibt. Deshalb hatte ich die letzte sichtbare Spalte noch einmal angepasst. Beim veränderten Code kann ich nun eine Spalte als Argument übergeben und genau diese wird am Ende des Codes angepasst, also geringfügig breiter oder schmaler gemacht.

Public Sub ColWidthProzent(Grid As sevDataGrid.Grid, _
                           ByVal ColWidthArray As Variant, _
                           nCol As Integer)
 
' Prüfung, ob Arrays übergeben wurden
  If Not IsArray(ColWidthArray) Then Exit Sub
 
  Dim MaxW%, n%, i%
  Dim ColW  As Long
 
' maximal verfügbare Breite berechnen
' und in der Variable MaxW speichern
 
  With Grid
' FixedCol?
     MaxW = .Width - 4 * Screen.TwipsPerPixelX
     If .FixedCol Then MaxW = MaxW - .FixedColWidth
 
' ScrollBar?
     If .ScrollBars <> SB_HORIZONTAL And .ScrollBars <> SB_NONE Then _
       MaxW = MaxW - GetSystemMetrics(SM_CXVSCROLL) * Screen.TwipsPerPixelX
 
' GridLines?
     n = 0
     For i = 1 To .Cols
       If .Columns(i).Visible Then
         MaxW = MaxW - (.CellSpacing * 2) * Screen.TwipsPerPixelX
       End If
     Next i
 
' Spaltenbreiten berechnen und einstellen
     ColW = 0
     For n = 1 To .Cols
       If ColWidthArray(n - 1) > 0 Then
         .Columns(n).Width = (MaxW * ColWidthArray(n - 1)) \ 100
          ColW = ColW + .Columns(n).Width
       Else
         .Columns(n).Visible = False
       End If
     Next n
 
' Spalte anpassen
     ColW = ColW - .Columns(nCol).Width
    .Columns(nCol).Width = MaxW - ColW
 
  End With
 
End Sub
Der Aufruf dieser Funktion erfolgt mit folgendem Code. Die Prozentwerte für die einzelnen Spalten werden als Array übergeben, die zum Schluss anzupassende Spalten als Spaltenindex.

Dim cWidth As Variant
cWidth = Array(30, 25, 25, 20, 0)
ColWidthProzent BaustelleDlg.Grid1, cWidth
Viel Spaß beim Ausprobieren und vielleicht gibst Du mal bekannt, wie das Geschwindigkeitsverhalten bei Deinen 4000 Zeilen ist.

Gruß
Wolfgang
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
sevDataGrid - Spaltenbreiten1.325Wolfgang M.08.06.04 16:06
Re: sevDataGrid - Spaltenbreiten789ModeratorDieter08.06.04 16:35
Re: sevDataGrid - Spaltenbreiten814Wolfgang M.08.06.04 16:39
Re: sevDataGrid - Spaltenbreiten884ModeratorDieter08.06.04 17:00
Re: sevDataGrid - Spaltenbreiten686Wolfgang M.08.06.04 19:02
Re: sevDataGrid - Spaltenbreiten719ModeratorDieter08.06.04 19:18
Re: sevDataGrid - Spaltenbreiten818Wolfgang M.08.06.04 19:27
Re: sevDataGrid - Spaltenbreiten790T.i.m.15.06.04 11:53
Re: sevDataGrid - Spaltenbreiten892Wolfgang M.15.06.04 16:06
Re: sevDataGrid - Spaltenbreiten759Wolfgang M.15.06.04 16:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel