Datagrid HighLigth (VB6)
Publicado por PitBTons (1 intervención) el 09/07/2010 13:29:06
Hola a Todos, No sé si alguien me podrá ayudar...
Estoy haciendo un programa con un datagrid y pretendo resaltar una de las filas cuando el valor de una columna coincida con un dato previo, he creado la función Buscar que la llamo varias veces, por un lado la llamo al modificar el filtro del RecordSet y todo funciona correctamente, y por el otro (lo que no funciona) la llamo desde el evento Activate del form, en este caso sí me indica la fila con el puntero de Recordset (el triangulito en la columna Derecha del Data grid) pero no me la muestra resaltada.
El caso es que si paro la depuración dentro de esta función y miro el form si aparece resaltado pero si quito el break deja de estarlo.
Creo que tiene que ver con la forma de dibujar el form o con los eventos del datagrid pero algo se me pasa, he hecho un montón de pruebas y no doy con ello.
Alguien puede ayudarme??
Gracias de Antemano
Un Saludo,
Pit
P.D. Este es el código de la función que uso. Funciona correctamente si el form está activo, pero no funciona la primera vez que lo cargas
Private Sub Buscar()
Dim rsDat As ADODB.Recordset
Set rsDat = Me.DataGrid1.DataSource
Me.Label1.Caption = rsDat.RecordCount & " Repuestos Encontrados en el Almacén"
If (Me.DataGrid1.SelBookmarks.Count <> 0) Then
Me.DataGrid1.SelBookmarks.Remove 0
End If
If Datos.Material <> "**********" Then
rsDat.MoveFirst
Do While Not rsDat.EOF
If rsDat.Fields("CodSAP").Value = Datos.Material Then
Me.DataGrid1.SelBookmarks.Add rsDat.Bookmark
Exit Do
End If
rsDat.MoveNext
Loop
Else
rsDat.MoveLast
If Not rsDat.EOF Then rsDat.MoveNext
End If
Me.DataGrid1.Columns(0).Width = 1000
Me.DataGrid1.Columns(1).Width = 1000
If Me.DataGrid1.Columns.Count > 2 Then
Me.DataGrid1.Columns(2).Width = 1000
Me.DataGrid1.Columns(3).Width = 1000
Me.DataGrid1.Columns(4).Width = 1000
Me.DataGrid1.Columns(5).Width = 6300
End If
Set rsDat = Nothing
End Sub
Estoy haciendo un programa con un datagrid y pretendo resaltar una de las filas cuando el valor de una columna coincida con un dato previo, he creado la función Buscar que la llamo varias veces, por un lado la llamo al modificar el filtro del RecordSet y todo funciona correctamente, y por el otro (lo que no funciona) la llamo desde el evento Activate del form, en este caso sí me indica la fila con el puntero de Recordset (el triangulito en la columna Derecha del Data grid) pero no me la muestra resaltada.
El caso es que si paro la depuración dentro de esta función y miro el form si aparece resaltado pero si quito el break deja de estarlo.
Creo que tiene que ver con la forma de dibujar el form o con los eventos del datagrid pero algo se me pasa, he hecho un montón de pruebas y no doy con ello.
Alguien puede ayudarme??
Gracias de Antemano
Un Saludo,
Pit
P.D. Este es el código de la función que uso. Funciona correctamente si el form está activo, pero no funciona la primera vez que lo cargas
Private Sub Buscar()
Dim rsDat As ADODB.Recordset
Set rsDat = Me.DataGrid1.DataSource
Me.Label1.Caption = rsDat.RecordCount & " Repuestos Encontrados en el Almacén"
If (Me.DataGrid1.SelBookmarks.Count <> 0) Then
Me.DataGrid1.SelBookmarks.Remove 0
End If
If Datos.Material <> "**********" Then
rsDat.MoveFirst
Do While Not rsDat.EOF
If rsDat.Fields("CodSAP").Value = Datos.Material Then
Me.DataGrid1.SelBookmarks.Add rsDat.Bookmark
Exit Do
End If
rsDat.MoveNext
Loop
Else
rsDat.MoveLast
If Not rsDat.EOF Then rsDat.MoveNext
End If
Me.DataGrid1.Columns(0).Width = 1000
Me.DataGrid1.Columns(1).Width = 1000
If Me.DataGrid1.Columns.Count > 2 Then
Me.DataGrid1.Columns(2).Width = 1000
Me.DataGrid1.Columns(3).Width = 1000
Me.DataGrid1.Columns(4).Width = 1000
Me.DataGrid1.Columns(5).Width = 6300
End If
Set rsDat = Nothing
End Sub
Valora esta pregunta


0