vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

Fragen & Antworten rund um sev-Komponenten
Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: JoSa
Datum: 07.03.16 14:33

Hallo Dieter,

ich muss nochmal nerven...

Gibt es eine einfache Möglichkeit die Spaltenbreite automatisch anzupassen, so dass auch die Spaltenüberschrift mit einbezogen wird? Das ist mit DoColumnAutoSize ja nicht der Fall soweit ich gesehen habe.

Danke!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: ModeratorDieter (Moderator)
Datum: 07.03.16 14:34

Diese Möglichkeit ist nicht vorgesehen.
Du könntest aber die MinWidth-Eigenschaft der Spalten verwenden.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: JoSa
Datum: 07.03.16 14:37

Du bist echt so unglaublich schnell mit dem Antworten - Super!

Über die MinWidth-Eigenschaft habe ich auch schon nachgedacht, nur ist es schwierig hier die richtige Breite zu finden.

Wenn die Überschrift "llll" lautet ist das je nach Schriftart kürzer als "OOOO" sodass ich hier nicht die Anzahl der Buchstaben als Maßstab nehmen kann. Oder habe ich hier einen Denkfehler?

Beitrag wurde zuletzt am 07.03.16 um 14:38:31 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: ModeratorDieter (Moderator)
Datum: 07.03.16 14:39

Das ist korrekt. Da musst du einen Mittelwert finden.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: Franki
Datum: 08.03.16 02:45

Hallo,

warum machst du dir diesen Stress?

Das Optimum kannst du sowieso nicht erreichen, da für die Anzeige in Windows ganz allgemein ja auch die Einstellungen des Users eine wichtige Rolle spielen.

Also was hat der User für eine Auflösung, was für eine (benutzerdefinierte) Schriftgröße usw. usw. eingestellt, das kannst du nicht wissen.

Ich mache das mit dem Grid so, dass ich im Code einigermassen vernünftige Werte vorgebe, aber der User die Spaltenbreiten (und auch Reihenforlge) selbst seinen Bedürfnissen nach einstellen kann. Die werden beim Beenden des Formulars gespeichert und beim nächsten Aufruf wieder eingelesen.

So bist du völlig unabhängig von den Vorlieben des Users.
Also wie breit jetzt ein I, X oder O ist spielt keine Rolle.

Und spätestens dann wenn du das Grid auf eine dir unbekannte DB des Users los lässt wo du die Spaltenüberschriften nicht kennst, kannst du sowieso nichts machen mit festen Breiten der Spalten.

Der einfachste Weg ist, dem User die Möglichkeit zu geben das selbst zu konfigurieren.

Gruß
Frank




Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: JoSa
Datum: 08.03.16 07:06

Hallo Frank, danke für deine Antwort.
Wir veröffentlichen meine Anwendung per Citrix XenApp und da hat der User keine wirkliche Möglichkeit irgendwas an den Schriftarten einzustellen.

Natürlich hast du in gewisser Weise schon Recht. Da muss man eben einen guten Mittelweg finden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: Manfred X
Datum: 08.03.16 14:45

Hallo!

Bei Proportionalschriften kannst Du durchzählen,
wie viele Buchstaben in einer Spalten-Überschrift
jeweils vorliegen, die breit bzw. schmal dargestellt werden.
Aus der Summation dieser Breiten-Faktoren über alle
Zeichen läßt sich eine "halbwegs" geeignete Spaltenbreite
ermitteln.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: Danny Grobe
Datum: 21.04.16 10:53

Hier unser Quellcode für das Problem:

' wenn keine Spalte angebeben, werden die Spalten anhand ihres Inhaltes und der 
' Überschrift angepasst
' wenn eine Spalte oder mehrere (durch Komma getrennt) übergeben werden, dann 
' wird der verbleibende
'   Platz auf diese Spalten aufgeteilt; alle anderen Spalten bleiben unverändert
Public Sub sevGridSpaltenbreiteAnGridAnpassen(ByVal Grid As sevGrid, Optional _
  ByVal Spalte, _
                                              Optional ByVal _
                                              MindestSpaltenbreite As Long = _
                                              1000, _
                                              Optional ByVal _
                                              ZeilenFürSpaltenbreitenanpassung _
                                              As Integer = 30)
   Dim w As Long
   Dim i As Integer
   Dim j As Integer
   Dim Spaltenanzahl As Integer
   Dim Spalten() As String
   Dim Breite As Long
   Dim Key
   w = 0
 
   Grid.LockUpdate True
 
   If Not IsMissing(Spalte) Then
      Spalten = Split(Spalte, ",")
      Spaltenanzahl = UBound(Spalten) + 1
 
      For i = 1 To Grid.Cols
         If Grid.Columns(i).visible Then
            w = w + Grid.Columns(i).Width
         End If
      Next
 
      For Each Key In Spalten
         If Not Grid.Columns(Key) Is Nothing Then
            If Grid.Columns(Key).visible Then
               w = w - Grid.Columns(Key).Width
            Else
               Spaltenanzahl = Spaltenanzahl - 1
            End If
         End If
      Next
 
      If Grid.ScrollBars = SB_VERTICAL Or Grid.ScrollBars = SB_BOTH Or _
         (Grid.ScrollBars = SB_AUTO And Grid.Rows >= Grid.ScreenRows) Then
         w = w + 20 * Screen.TwipsPerPixelX
      Else
         w = w + 4 * Screen.TwipsPerPixelX
      End If
 
      If Grid.FixedCol Then
         w = w + Grid.FixedColCount * Grid.FixedColWidth
      End If
 
      For Each Key In Split(Spalte, ",")
         If Not Grid.Columns(Key) Is Nothing Then
            If Grid.Columns(Key).visible Then
               Breite = Int((Grid.Width - w) / Spaltenanzahl)
               If Breite < MindestSpaltenbreite Then
                  Grid.Columns(Key).Width = MindestSpaltenbreite
               Else
                  Grid.Columns(Key).Width = Breite
               End If
               w = w + Grid.Columns(Key).Width
               Spaltenanzahl = Spaltenanzahl - 1
            End If
         End If
      Next
   Else
      With Grid
         For i = 1 To .Cols
            If .Columns(i).visible Then
               On Error Resume Next
               w = Max(MindestSpaltenbreite, Grid.Parent.TextWidth(.Columns( _
                 i).Caption))
               For j = 1 To Min(.Rows, IIf(ZeilenFürSpaltenbreitenanpassung = _
               0, .Rows, ZeilenFürSpaltenbreitenanpassung))
                  w = Max(Grid.Parent.TextWidth(.Text(j, i)), w)
               Next
               On Error GoTo 0
               .Columns(i).Width = w + 10 * Screen.TwipsPerPixelX
            End If
         Next
      End With
   End If
 
   Grid.LockUpdate False
   Grid.RefreshEx
End Sub
Public Function Max(Wert1, Wert2) As Variant
   If Wert1 > Wert2 Then Max = Wert1 Else Max = Wert2
End Function
 
Public Function Min(Wert1, Wert2) As Variant
   If Wert1 > Wert2 Then min = Wert2 Else min = Wert1
End Function


Beitrag wurde zuletzt am 21.04.16 um 10:54:07 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: JoSa
Datum: 27.04.16 14:01

Danke für deinen Beitrag!

Ich wollte deinen Code testen, leider kennt er den Parameter "Width" des Grids nicht. Ebenso Grid.Parent scheint er nicht zu kennen.

Zur Anmerkung: Ich nutze Microsoft Access 2010

Grüße!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Spaltenbreite mindestens so breit wie Spaltenüberschrift 
Autor: Danny Grobe
Datum: 27.04.16 14:05

Ja, das kann sein. Der Quellcode ist für VB6.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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