MSFLEXGRID - MOVENDO LINHAS DO GRID

LEANDROVIP 23/11/2012 18:49:15
#414684
Boa tarde!

Comecei a usar o msflexgrid a pouco tempo e tenho algumas duvidas..

Tenho um Textbox que faço as pesquisas, e no evento keydown deste text verifico se o camarada aperta a tecla pra cima ou para baixo, assim movendo a linha do grid. No Datagrid usava desta maneira para alterar o registro e consequentemente a linha do grid alterava.. e também o scroll caso fosse necessário

ADO1.MoveNext
DataGrid1.SelBookmarks.Add ADO1.Recordset.Bookmark

No flexgrid uso desta maneira para alterar a linha:


If Grid.Row <> Grid.Rows - 1 Then
Grid.Row = Grid.Row + 1
End If
Grid.Col = 0
Grid.ColSel = Grid.Cols - 1


funciona certinho. O problema é quando existe muitos registros e ultrapassa o final do grid. O scroll não aciona automaticamente, acompanhando a linha..

Alguém tem alguma idéia de como posso fazer isto ?

Abraços
LLAIA 25/11/2012 20:00:12
#414759
Já experimentou usar a propriedade TopRow? (no momennto não tem como eu testar no vb6 aqui)

Link:
http://msdn.microsoft.com/en-us/library/aa261273(v=vs.60).aspx

Vc atribuindo o número da linha pra essa propriedade, creio que vá conseguir forçar o scroll.

PS: Procure estudar a documentação do componente. Muita coisa vc vai ficar por dentro, e acaba orientando melhor na definição da sua interface.
LEANDROVIP 26/11/2012 09:44:21
#414776
Já experimentei sim. Em partes até resolve o problema é que mesmo sem precisar movimentar o scroll, se eu utilizar o TopRow ele altera.
Mas obrigado pela informação.

Grato
MARCELO.TREZE 26/11/2012 10:00:25
#414777
Resposta escolhida
eu ainda não entendi direito o problema, tem como você criar um exemplo e postar aqui?

LEANDROVIP 26/11/2012 10:17:43
#414779
Marcelo, tudo bem? Vou descrever novamente o problema mais detalhado..

Tenho um msflexgrid com 100 registros e um TextBox no qual o cursor fica parado.
No evento KeyDown do TextBox tenho uma rotina para movimentar a linha do MsFlexGrid, criando um efeito de busca. A rotina para alterar a linha é:

    If KeyCode = vbKeyDown Then
If Grid.Row <> Grid.Rows - 1 Then
Grid.Row = Grid.Row + 1
End If
Grid.Col = 0
Grid.ColSel = Grid.Cols - 1
End If


Com esta rotina a linha do MsFlexGrid altera normalmente, selecionando as colunas normalmente como quero.
O problema é que quando acaba a visualização do Grid, o scroll não acompanha para dar continuidade na visualização.

Se eu colocar o código:

  Grid.TopRow = Grid.Row 


mesmo se for o primeiro registro do Grid ou o que termina a visualização o scroll se movimenta.

Entendes ?

Abraços
LUIS.HERRERA 26/11/2012 11:01:20
#414783
Já tentou usr .RowSel no lugar do .Row?

RowSel é a linha selecionada.

Grid.TopRow = Grid.RowSel
LEANDROVIP 26/11/2012 11:06:24
#414784
Já tentei sei, porém tenho o mesmo efeito.. Antes de terminar a visualização do Grid o scroll já se movimenta.
No caso eu gostaria que ele se movimentasse apenas quando terminasse a area de visualização.

Abraço
MARCELO.TREZE 27/11/2012 09:54:01
#414828
tenta deste jeito

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
With Grid
If KeyCode = vbKeyDown And .Row < (.Rows - .FixedRows) Then
.Row = .Row + 1
Text1.Text = .TextMatrix(.Row, 1)
.TopRow = .Row
End If

If KeyCode = vbKeyUp And .Row > 1 Then
.Row = .Row - 1
Text1.Text = .TextMatrix(.Row, 1)
.TopRow = .Row
End If

End With
End Sub
Tópico encerrado , respostas não são mais permitidas