| ||||
este codigo te prodria ayudar
Código:
en esta parte te das cuenta que el ancho del listado es divido segun yo quiero que se el tamaño de cada columna, en este caso tengo 8 columnas en mi listado(MsFlexgrid)Private Sub AjustarColumnas() Me.ListadoPago.ColWidth(0) = 500 Me.ListadoPago.ColWidth(1) = Me.ListadoPago.Width / 12 Me.ListadoPago.ColWidth(2) = Me.ListadoPago.Width / 5 Me.ListadoPago.ColWidth(3) = Me.ListadoPago.Width / 12 Me.ListadoPago.ColWidth(4) = Me.ListadoPago.Width / 6 Me.ListadoPago.ColWidth(5) = Me.ListadoPago.Width / 8 Me.ListadoPago.ColWidth(6) = Me.ListadoPago.Width / 8 Me.ListadoPago.ColWidth(7) = Me.ListadoPago.Width / 12 Me.ListadoPago.ColWidth(8) = Me.ListadoPago.Width / 12 End Sub si tenes dudas avisame ... nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| |||
Mira, no se pueden ajustar automáticamente, pero si se pueden fusionar, esto quiere decir que puedes combinar el alto de las celdas. Aqui te envio un ejemplo: En un form debes crear los siguientes controles: MsFlexGrid Flex (con tres columnas y 2 filas) ControlData Data1 CommonDialog CommonDialog1 Una Base de Datos de Ejemplo llamada Biblio.mdb Por si acaso, este ejemplo se encuentra tambien en el Disco 1 de MSDN Option Explicit Private Sub flex_DragDrop(Source As VB.Control, X As Single, Y As Single) If flex.Tag = "" Then Exit Sub flex.Redraw = False flex.ColPosition(Val(flex.Tag)) = flex.MouseCol DoSort flex.Redraw = True End Sub Private Sub flex_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) flex.Tag = "" If flex.MouseRow <> 0 Then Exit Sub flex.Tag = Str(flex.MouseCol) flex.Drag 1 End Sub Private Sub Form_Load() On Error GoTo FormLoad_Err Data1.DatabaseName = CurDir & "\biblio.mdb" flex.Redraw = False DoInitialSettings DoSql DoSort Data1.Refresh flex.Redraw = True FormLoad_Exit: Exit Sub FormLoad_Err: 'se requiere un control de errores avanzado si no se ha encontrado la base de datos, 'como indicaría el error 3024. If Err = 3024 Then 'establece las propiedades de CommonDialog antes de mostrarlo With CommonDialog1 .DialogTitle = "No se encuentra la ubicación del archivo biblio.mdb" .Filter = "(*.mdb)|*.mdb" .InitDir = CurDir .FileName = "biblio.mdb" .Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or cdlOFNPathMustExist .ShowOpen 'asegura que el nombre del archivo no está vacío If .FileName <> "" Then 'asegura que el nombre del archivo de la base de datos es realmente biblio.mdb If Right(UCase(.FileName), Len("biblio.mdb")) = "BIBLIO.MDB" Then Data1.DatabaseName = .FileName End If Resume Else Unload Me End If End With ElseIf Err <> 0 Then ' otro error MsgBox "Error inesperado: " & Err.Description End End If Resume FormLoad_Exit End Sub Sub DoInitialSettings() Dim i% flex.Row = 0 flex.ColAlignment(0) = 7 For i = 0 To flex.Cols - 1 flex.Col = i flex.CellFontSize = 14 flex.CellAlignment = 4 flex.MergeCol(i) = True ' Permite la fusión en las columnas entre 0 y 3 flex.ColWidth(i) = 2000 ' Establece la anchura de la columna Next i flex.MergeCells = flexMergeRestrictColumns End Sub Sub DoSql() Dim mysql$ mysql$ = "SELECT " mysql = mysql & "Publishers.[Company Name], " mysql = mysql & "Authors.Author, " mysql = mysql & "Titles.Title " mysql = mysql & "FROM Authors INNER JOIN " mysql = mysql & "(Publishers INNER JOIN ([title author] INNER JOIN Titles ON [title author].ISBN = Titles.ISBN) ON Publishers.PubID = Titles.PubID) " mysql = mysql & "ON Authors.Au_ID = [title author].Au_ID " mysql = mysql & "WHERE Authors.Au_ID < 30 " Data1.RecordSource = mysql End Sub Sub DoSort() flex.Col = 0 flex.ColSel = flex.Cols - 1 flex.Sort = 1 ' orden ascendente End Sub |
| |||
Mira, no se pueden ajustar automáticamente, pero si se pueden fusionar, esto quiere decir que puedes combinar el alto de las celdas. Aqui te envio un ejemplo: En un form debes crear los siguientes controles: MsFlexGrid Flex (con tres columnas y 2 filas) ControlData Data1 CommonDialog CommonDialog1 Una Base de Datos de Ejemplo llamada Biblio.mdb Por si acaso, este ejemplo se encuentra tambien en el Disco 1 de MSDN Option Explicit Private Sub flex_DragDrop(Source As VB.Control, X As Single, Y As Single) If flex.Tag = "" Then Exit Sub flex.Redraw = False flex.ColPosition(Val(flex.Tag)) = flex.MouseCol DoSort flex.Redraw = True End Sub Private Sub flex_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) flex.Tag = "" If flex.MouseRow <> 0 Then Exit Sub flex.Tag = Str(flex.MouseCol) flex.Drag 1 End Sub Private Sub Form_Load() On Error GoTo FormLoad_Err Data1.DatabaseName = CurDir & "\biblio.mdb" flex.Redraw = False DoInitialSettings DoSql DoSort Data1.Refresh flex.Redraw = True FormLoad_Exit: Exit Sub FormLoad_Err: 'se requiere un control de errores avanzado si no se ha encontrado la base de datos, 'como indicaría el error 3024. If Err = 3024 Then 'establece las propiedades de CommonDialog antes de mostrarlo With CommonDialog1 .DialogTitle = "No se encuentra la ubicación del archivo biblio.mdb" .Filter = "(*.mdb)|*.mdb" .InitDir = CurDir .FileName = "biblio.mdb" .Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or cdlOFNPathMustExist .ShowOpen 'asegura que el nombre del archivo no está vacío If .FileName <> "" Then 'asegura que el nombre del archivo de la base de datos es realmente biblio.mdb If Right(UCase(.FileName), Len("biblio.mdb")) = "BIBLIO.MDB" Then Data1.DatabaseName = .FileName End If Resume Else Unload Me End If End With ElseIf Err <> 0 Then ' otro error MsgBox "Error inesperado: " & Err.Description End End If Resume FormLoad_Exit End Sub Sub DoInitialSettings() Dim i% flex.Row = 0 flex.ColAlignment(0) = 7 For i = 0 To flex.Cols - 1 flex.Col = i flex.CellFontSize = 14 flex.CellAlignment = 4 flex.MergeCol(i) = True ' Permite la fusión en las columnas entre 0 y 3 flex.ColWidth(i) = 2000 ' Establece la anchura de la columna Next i flex.MergeCells = flexMergeRestrictColumns End Sub Sub DoSql() Dim mysql$ mysql$ = "SELECT " mysql = mysql & "Publishers.[Company Name], " mysql = mysql & "Authors.Author, " mysql = mysql & "Titles.Title " mysql = mysql & "FROM Authors INNER JOIN " mysql = mysql & "(Publishers INNER JOIN ([title author] INNER JOIN Titles ON [title author].ISBN = Titles.ISBN) ON Publishers.PubID = Titles.PubID) " mysql = mysql & "ON Authors.Au_ID = [title author].Au_ID " mysql = mysql & "WHERE Authors.Au_ID < 30 " Data1.RecordSource = mysql End Sub Sub DoSort() flex.Col = 0 flex.ColSel = flex.Cols - 1 flex.Sort = 1 ' orden ascendente End Sub |