Visual Basic - Ancho columna

Life is soft - evento anual de software empresarial
 
Vista:

Ancho columna

Publicado por ppg (42 intervenciones) el 21/02/2008 20:01:58
En un datagrid se puede cambiar el ancho de la columna, no a todo, solo una columna ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ancho columna

Publicado por Ivan (1039 intervenciones) el 21/02/2008 21:09:27
Para un Datagrid, es la colección Columns, indicando el número de columna (empiezan a numerarse desde la CERO), y usas la propiedad With, algo así:
DataGrid1.Columns(ColIndex).Width = longitud
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Propiedad Width

Publicado por ivan (1039 intervenciones) el 21/02/2008 21:10:45
(Faltó una "d", aunque sí está en el ejemplo) es "Width"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ancho columna

Publicado por ED (70 intervenciones) el 22/02/2008 04:33:23
agrega los siguientes controles al formulario:
boton = Command1
datagrid = datagrid1
adodc = adodc1
solo copia el codigo y ejecutalo

espero q te sirva y me avises al mail, suerte.


Public Sub Ajustar_Columna_DataGrid(un_DataGrid As DataGrid, _
Ado As Adodc, Optional AccForHeaders As Boolean)

Dim TempCol() As Integer
Dim Nregistros As Integer, NCampos As Integer
Dim Fila As Long, Col As Long, width As Single
Dim maxWidth As Single, celdaText As String
Dim saveFont As StdFont, oldScaleMode As Integer

'Variables para la cantidad de registros y columnas
Nregistros = Adodc1.Recordset.RecordCount
NCampos = Adodc1.Recordset.Fields.Count

'Array para almacenar el ancho de cada columna
ReDim TempCol(NCampos)


' Si el número de registros es igual a 0 salimos
If Nregistros = 0 Then Exit Sub

' Guardamos la fuente del DataGrid para luego reestablecerla
Set saveFont = un_DataGrid.Parent.Font
Set un_DataGrid.Parent.Font = un_DataGrid.Font

' Ajustar el ScaleMode en vbTwips para el formulario
oldScaleMode = un_DataGrid.Parent.ScaleMode
un_DataGrid.Parent.ScaleMode = vbTwips

'Movemos al Primer registro
Ado.Recordset.MoveFirst
maxWidth = 0

'Recorremos las columnas
For Col = 0 To NCampos - 1
Ado.Recordset.MoveFirst


If AccForHeaders Then
'Almacenamos el Ancho del texto de la columna
maxWidth = un_DataGrid.Parent.TextWidth _
(un_DataGrid.Columns(Col).Text) + 200
End If


Ado.Recordset.MoveFirst
'Recorremos los registros de esta columna
For Fila = 0 To Nregistros - 1


If NCampos = 1 Then
Else
celdaText = un_DataGrid.Columns(Col).Text
End If

'Almacena el Ancho del texto de la celda del Datagrid
width = un_DataGrid.Parent.TextWidth(celdaText) + 200

'Si el ancho de la celda es mayor se actualiza la variable maxWidth _
y se establece el ancho de la columna
If width > maxWidth Then
maxWidth = width
un_DataGrid.Columns(Col).width = maxWidth
End If

' Movemos el Ado al Siguiente registro
Ado.Recordset.MoveNext
Next Fila
'Almacenamos el ancho de la columna
TempCol(Col) = maxWidth

Next Col

'Recorremos cada columna y le asignamos el ancho
For Col = 0 To NCampos - 1
un_DataGrid.Columns(Col).width = TempCol(Col)
Next

'restablecemos la fuente del DataGrid y el scaleMode
Set un_DataGrid.Parent.Font = saveFont
un_DataGrid.Parent.ScaleMode = oldScaleMode

Ado.Recordset.MoveFirst

Erase TempCol
End Sub

Private Sub Command1_Click()

'Se le pasa al procedimento el control Datagrid, el control Ado _
los registros y los campos
Call Ajustar_Columna_DataGrid(DataGrid1, Adodc1, True)
End Sub

Private Sub Form_Load()
Me.Caption = " Ejemplo para ajustar el ancho de las columnas de un DataGrid "
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar