vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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

Visual-Basic Einsteiger
VB (A) Listview Spaltebreite automatisch - Font = Bold 
Autor: woerny
Datum: 17.08.14 22:44

HAllo @ all,

bei der Suche nach einer Funktion welche die Spalten im Listview Controll automatisch setzt, habe ich folgende gefunden. Wenn ich allerdings die Schrift auf Fett stelle, wird die Breite
immer noch auf die *alte* Breite gestetzt.

Wie kann ich den die Funktion anpassen, dass sich die Breite trotzdem anpasst?

Option Explicit
 
Private Declare Function SendMessage Lib "user32" Alias _
                "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
                                ByVal wParam As Long, lParam As Any) As Long
'API Constants
Private Const LVM_FIRST = &H1000
 
'  Public Sub stellt die Breite der Spalten im Listview automatisch
Public Sub LV_AutoSizeColumn(LV As Object, Optional Column _
                                 As ColumnHeader = Nothing)
 Dim C As ColumnHeader
 If Column Is Nothing Then
  For Each C In LV.ColumnHeaders
    SendMessage LV.hWnd, LVM_FIRST + 30, C.Index - 1, -1
  Next
 Else
    SendMessage LV.hWnd, LVM_FIRST + 30, Column.Index - 1, -1
 End If
 LV.Refresh
End Sub
Gruß
woerny



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB (A) Listview Spaltebreite automatisch - Font = Bold 
Autor: Franki
Datum: 20.08.14 01:25

Hallo,

die Frage ist warum das überhaupt machen möchtest. Denn es ist ja so, dass du keinerlei Einfluss auf das Betriebssystem bzw. dessen Einstellungen beim User hast.

Das führt dann dazu, dann z.B. Arial 12 bei Usern durchaus unterschiedlich breit ist je nachdem welches Betriebssystem sie mit welchen Einstellungen verwenden. Das analysieren zu wollen ist ein Kampf gegen Windmühlen.

Ich mache das so, dass ich einen gewissen Sicherheitspuffer einbaue beim ersten Programmstart nach Installation, dem User gestatte, dass er die Spalten selbst in der Breite verändern darf und beim Beenden des Formulars mit dem LV werden die Spaltenbreiten gespeichert und beim nächsten Start wieder eingelesen.

Das automatische Setzen anhand des Inhalts kann auch zu Problemen führen wenn da mal unerwartete Inhalte in einer "Zelle" sind, dann kann sich die ganze Spalte in der Breite unnötig ausdehnen und das ganze LV ist irgendwie unbrauchbar wenn man das nicht komplett dynamisch durch programmiert hat und auch in der Funktion Obergrenzen gesetzt hat.

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

Re: VB (A) Listview Spaltebreite automatisch - Font = Bold 
Autor: Blackbox
Datum: 20.08.14 17:18

Hi,

kampf gegen Windmühlen ist doch geil Die wehren sich wenigstens.
Aber im Ernst: Er braucht doch nur den Ex-Style: LVS_AUTOSIZECOLUMNS setzen.
Und wie das Setzen von Styles und Ex-Styles geht gibt es Beispiele in Tipps und Tricks.

Auch ohne diesen Ex-Style ließe sich die Breite einer Column neu definieren. Auch
mit diversen Einstellungen der OS. Dazu braucht man nur die
GetTextExtentPoint32 Win-Api-Funktion, die die Größe des Text in Pixel ausgibt.

Der Wert von LVS_AUTOSIZECOLUMNS (erst ab OS Vista verfügbar) =

Const LVS_AUTOSIZECOLUMNS As LONG = &H10000000

Beitrag wurde zuletzt am 20.08.14 um 17:41:27 editiert.
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