PRB: MSFLexGrid recircular no puede funcionar correctamente

Seleccione idioma Seleccione idioma
Id. de artículo: 198938 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Después de establecer la propiedad TopRow del MSFlexGrid , al establecer la propiedad volver a dibujar en True no provoca el MSFlexGrid a dibujarse automáticamente.

Causa

Microsoft está investigando este problema y publicará nueva información en Microsoft Knowledge Base cuando esté disponible.

Solución

Hay un par de soluciones a este problema. Puede utilizar el código de estas soluciones en lugar del código mostrado en la sección Más información de este artículo
  1. Si reemplazar el evento MSFlexGrid1_Click() en Más información de la sección con el código siguiente funciona como se esperaba:
       Private Sub MSFlexGrid1_Click()
    
         With MSFlexGrid1
    
           .Redraw = True
           If .Row = .Rows - 1 Then
             .TopRow = 2
             Debug.Print "Right After Setting .Top Row:  " & .TopRow
    
           End If
    
         End With
    
         Debug.Print "After leaving With block: " & MSFlexGrid1.TopRow
    
       End Sub
    					
    - o bien -

  2. Uso de la solución anterior, obtendrá el MSFlexgrid para mover a la posición correcta. Sin embargo, esto por lo que puede hacer que parpadee al rellenar la cuadrícula. Para evitar este parpadeo que se puede utilizar el LockWindowUpdate API llame a como se indica en el siguiente código. En lugar de utilizar el código anterior, reemplace el código del evento MSFlexGrid_Click() con lo siguiente:
       Private Declare Function LockWindowUpdate Lib "user32" _
             (ByVal hwndLock As Long) As Long
    
       Private Sub fgrItemGrid_Click()
    
         lres = LockWindowUpdate(Me.hWnd) 'Lock repaints
    
         With fgrItemGrid
    
           .Redraw = True
           If .Row = .Rows - 1 Then
             .TopRow = 2
             Debug.Print "Right After Setting .Top Row:  " & .TopRow
    
           End If
    
         End With
    
         lres = LockWindowUpdate(0&) 'Release Lock
    
         Debug.Print "After leaving With block: " & fgrItemGrid.TopRow
    
      End Sub
    					
    Nota: la API de LockWindowUpdate puede utilizarse para habilitar o deshabilitar una ventana de actualización. En la solución 2 anterior, se utiliza para impedir que la ventana vuelva a dibujar.

Estado

Microsoft está investigando este problema y publicará nueva información aquí en Microsoft Knowledge Base cuando esté disponible.

Más información

Pasos para reproducir este comportamiento

  1. Iniciar un EXE estándar nuevo de Visual Basic 6.0.
  2. En el menú proyecto , elija componentes y agregue una referencia a la Microsoft FlexGrid Control 6.0 .
  3. Agregue un MSFlexGrid al formulario predeterminado.
  4. Corte y pegue el código siguiente en el formulario:
       Private Sub MSFlexGrid1_Click()
    
         With MSFlexGrid1
    
           .Redraw = False
           If .Row = .Rows - 1 Then
             .TopRow = 2
             Debug.Print "Right After Setting .Top Row:  " & .TopRow
    
           End If
           .Redraw = True
           '.Refresh
    
         End With
    
         Debug.Print "After leaving With block: " & MSFlexGrid1.TopRow
    
       End Sub
    
       Private Sub Form_Load()
         With MSFlexGrid1
           .RowHeightMin = 288
           .Cols = 10
           .Rows = 5
           .TextMatrix(0, 1) = "Row 0"
           .TextMatrix(1, 1) = "Row 1"
           .TextMatrix(2, 1) = "Row 2"
           .TextMatrix(3, 1) = "Row 3"
           .TextMatrix(4, 1) = "Row 4"
           .Width = 4095
           .Height = 1600
         End With
       End Sub
    					
  5. Haga clic en la "fila 4" de celda. El código en el evento Click se ejecutará. Sin embargo, la cuadrícula no actualizar y mover para que el TopRow ahora es 2.

    Nota: Forzar una actualización con el método .Refresh no corrige este problema.

Propiedades

Id. de artículo: 198938 - Última revisión: sábado, 22 de febrero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbnosurvey kbarchive kbmt kbctrl kbprb KB198938 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 198938

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com