vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder 
Autor: Woellmi
Datum: 10.11.16 21:33

Hallo zusammen, (nur zur Info)

für mein Programm habe ich 2 weitere Funktionen benötigt um festzustellen
ob eine Spalte vollständig sichtbar ist, damit ich eine eigene TextBox vollständig
in der gewünschten Spalte platzieren kann.
Sichtbar heißt in diesem Fall "nicht nach links bzw. rechts aus dem sichtbaren Bereich
des DataGrid herausgeschoben.

Als Ergebnis der Funktionen wird immer die "PositionsID", d.h. der Spaltenindex im
Ursprungszustand der Tabelle zurückgegeben. Hat man das Verschieben der Spalten erlaubt,
wandert dieser Index ja mit der verschobenen Spalte mit.

Für die Nutzung der Eigenschaft "oGrid.CellLeft(ID)" benötigt man nun aber genau
diese "ID" und nicht die lfd.-Nr. der Spalte im Grid.

Diese Funktion ermittelt die "ID" der ersten linken Spalte, welche vollständig sichtbar ist.
Public Function f_nGridGetFirstFullVisibleCol(ByRef po_Grid As Object) As Long
    Dim nIdx As Long
    Dim nCol As Long
    Dim nPos As Long
    Dim nFixColsWidth As Long
 
    nFixColsWidth = 0&
    If po_Grid.FixedColCount > 0& Then
       For nIdx = 1 To po_Grid.FixedColCount
            nFixColsWidth = nFixColsWidth + po_Grid.FixedColumns(nIdx).Width
       Next nIdx
    End If
 
    nPos = 0
 
    With po_Grid
       For nIdx = 1 To .Cols
         With .Columns(nIdx)
           If nPos = 0 Or .Position < nPos Then
              If po_Grid.ColIsVisible(nIdx) And _
                 po_Grid.CellLeft(po_Grid.Columns(nIdx).Position) >= _
                 nFixColsWidth Then
                 nCol = nIdx
                 nPos = .Position
              End If
           End If
         End With
       Next nIdx
    End With
 
    f_nGridGetFirstFullVisibleCol = nCol
 
End Function
Diese Funktion ermittelt die "ID" der letzten rechten Spalte, welche vollständig sichtbar ist.
Public Function f_nGridGetLastFullVisibleCol(ByRef po_Grid As Object) As Long
    Dim nIdx As Long
    Dim nCol As Long
    Dim nPos As Long
    Dim nFixColsWidth As Long
    Dim nMaxWidth As Long
    Dim nRightBorder As Long
    Dim nRightCellBoder As Long
 
    nFixColsWidth = 0&
    If po_Grid.FixedColCount > 0& Then
       For nIdx = 1 To po_Grid.FixedColCount
           nFixColsWidth = nFixColsWidth + po_Grid.FixedColumns(nIdx).Width
       Next nIdx
    End If
 
    nPos = 0
 
    With po_Grid
       nRightBorder = .Width - Screen.TwipsPerPixelX * .ScrollBarSize
 
       For nIdx = 1 To .Cols
 
         With .Columns(nIdx)
           If nPos = 0 Or .Position > nPos Then
              nRightCellBoder = po_Grid.CellLeft(po_Grid.Columns( _
                nIdx).Position) + _
                                po_Grid.CellWidth(po_Grid.Columns( _
                                nIdx).Position)
              If po_Grid.ColIsVisible(nIdx) And nRightCellBoder <= nRightBorder _
              Then
                 nCol = nIdx
                 nPos = .Position
              End If
           End If
         End With
       Next nIdx
    End With
 
    f_nGridGetLastFullVisibleCol = nCol
 
End Function
Mit dieser Funktion wird die "ID" der ersten (linken) wirklich, ggf. auch nur teilweise
sichtbaren Spalte ermittelt.
Public Function f_nGridGetFirstRealVisibleCol(ByRef po_Grid As Object) As Long
    Dim nIdx As Long
    Dim nCol As Long
    Dim nPos As Long
 
    nPos = 0
 
    With po_Grid
       For nIdx = 1 To .Cols
         With .Columns(nIdx)
           If po_Grid.ColIsVisible(nIdx) And (nPos = 0 Or .Position < nPos) Then
              nCol = nIdx
              nPos = .Position
           End If
         End With
       Next nIdx
    End With
 
    f_nGridGetFirstRealVisibleCol = nCol
 
End Function
Für alle, die diesen Thread verfolgen und ggf. vor ähnlichen Fragen stehen.

Tschaui
Woellmi

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder2.232Woellmi27.10.16 21:14
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder1.035ModeratorDieter28.10.16 07:43
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder955Woellmi28.10.16 08:35
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder1.099Woellmi28.10.16 10:16
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder1.246ModeratorDieter28.10.16 10:20
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder1.058Woellmi28.10.16 11:56
Re: sevDataGrid3 und .CellLeft(nCol) nach ColumnReorder894Woellmi10.11.16 21:33

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