Visual Basic - DataGrid a la medida

Life is soft - evento anual de software empresarial
 
Vista:

DataGrid a la medida

Publicado por Eduardo Yuptón C (96 intervenciones) el 01/08/2005 17:29:20
HOLA AMIGOS:

¿Cómo hacer para que cuando se presenten los registros de una consulta en un DATAGRID, cada campo quede automáticamente con el ancho de los datos?

Por ejemplo, tengo un campo texto que ocupa 2 caracteres, pero en el resultado se ve muy extenso el ancho de ese campo y los demas se cortan.

MUCHAS GRACIAS
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:DataGrid a la medida

Publicado por miguel (1042 intervenciones) el 01/08/2005 18:24:12
Te paso este ejemplo, en caso de que no puedas realizarlo te envío el ejemplo a tu correo...saludos!!!
Public Sub AdjustDataGridColumns _
(DG As DataGrid, _
adoData As Adodc, _
intRecord As Integer, _
intField As Integer, _
Optional AccForHeaders As Boolean)

'This procedure will adjust DataGrids column width
'based on longest field in underlying source

'DG = DataGrid
'adoData = Adodc control
'intRecord = Number of record
'intField = Number of field
'AccForHeaders = True or False

Dim row As Long, col As Long
Dim width As Single, maxWidth As Single
Dim saveFont As StdFont, saveScaleMode As Integer
Dim cellText As String

'If number of records = 0 then exit from the sub
If intRecord = 0 Then Exit Sub
'Save the form's font for DataGrid's font
'We need this for form's TextWidth method
Set saveFont = DG.Parent.Font
Set DG.Parent.Font = DG.Font
'Adjust ScaleMode to vbTwips for the form (parent).
saveScaleMode = DG.Parent.ScaleMode
DG.Parent.ScaleMode = vbTwips
'Always from first record...
adoData.Recordset.MoveFirst
maxWidth = 0
'We begin from the first column until the last column
For col = 0 To intField - 1
adoData.Recordset.MoveFirst
'Optional param, if true, set maxWidth to
'width of DG.Parent
If AccForHeaders Then
maxWidth = DG.Parent.TextWidth(DG.Columns(col).Text) + 200
End If
'Repeat from first record again after we have
'finished process the last record in
'former column...
adoData.Recordset.MoveFirst
For row = 0 To intRecord - 1
'Get the text from the DataGrid's cell
If intField = 1 Then
Else 'If number of field more than one
cellText = DG.Columns(col).Text
End If
'Fix the border...
'Not for "multiple-line text"...
width = DG.Parent.TextWidth(cellText) + 200
'Update the maximum width if we found
'the wider string...
If width > maxWidth Then
maxWidth = width
DG.Columns(col).width = maxWidth
End If
'Process next record...
adoData.Recordset.MoveNext
Next row
'Change the column width...
DG.Columns(col).width = maxWidth 'kolom terakhir!
Next col
'Change the DataGrid's parent property
Set DG.Parent.Font = saveFont
DG.Parent.ScaleMode = saveScaleMode
'If finished, then move pointer to first record again
adoData.Recordset.MoveFirst
End Sub 'End of AdjustDataGridColumns

Private Sub Form_Load()
Dim intRecord As Integer
Dim intField As Integer
intRecord = Adodc1.Recordset.RecordCount
intField = Adodc1.Recordset.Fields.Count
'call the procedure here...
Call AdjustDataGridColumns _
(DataGrid1, Adodc1, intRecord, intField, True)
End Sub

Private Sub Form_Resize()
On Error Resume Next
DataGrid1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - 700
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

NO FUNCIONA... AYUDENME

Publicado por Eduardo Yuptón C (96 intervenciones) el 02/08/2005 17:25:28
AMIGOS, AYUDENME: NECESITO UN RPOGRAMA O FORMA DE QUE LAS COLUMNAS DE UN DATAGRID SE AJUSTEN AL ANCHO DE CADA CAMPO DE LA CONSULTA AUTOMATICAMENTE.

MUCHAS GRACIAS
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