Foros del Web » Programación para mayores de 30 ;) » Programación General »

Msflexgrid

Estas en el tema de Msflexgrid en el foro de Programación General en Foros del Web. Como puedo ajustar automaticamente los cols. Gracias...
  #1 (permalink)  
Antiguo 22/09/2004, 09:14
 
Fecha de Ingreso: septiembre-2004
Mensajes: 3
Antigüedad: 20 años, 2 meses
Puntos: 0
Msflexgrid

Como puedo ajustar automaticamente los cols. Gracias
  #2 (permalink)  
Antiguo 22/09/2004, 09:42
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 11 meses
Puntos: 53
este codigo te prodria ayudar
Código:
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
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)
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
  #3 (permalink)  
Antiguo 22/09/2004, 10:00
 
Fecha de Ingreso: septiembre-2004
Ubicación: Machala - El Oro - Ecuador
Mensajes: 22
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #4 (permalink)  
Antiguo 22/09/2004, 10:05
 
Fecha de Ingreso: septiembre-2004
Ubicación: Machala - El Oro - Ecuador
Mensajes: 22
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 22/09/2004, 10:36
 
Fecha de Ingreso: septiembre-2004
Mensajes: 3
Antigüedad: 20 años, 2 meses
Puntos: 0
GeoAvila, no me quedaron dudas, es mas me resulto. Te lo agradezco mucho .........
Muchas Gracias

Última edición por ckaza; 22/09/2004 a las 10:38
  #6 (permalink)  
Antiguo 22/09/2004, 10:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 3
Antigüedad: 20 años, 2 meses
Puntos: 0
Loquillo, gracias, pero las revise en orden y ya me habia resultado. De todas maneras te lo agradezco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:30.