MSFLEXGRID - MOVENDO LINHAS DO GRID
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:
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
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
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.
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.
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
Mas obrigado pela informação.
Grato
eu ainda não entendi direito o problema, tem como você criar um exemplo e postar aqui?
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 é:
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:
mesmo se for o primeiro registro do Grid ou o que termina a visualização o scroll se movimenta.
Entendes ?
Abraços
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
Já tentou usr .RowSel no lugar do .Row?
RowSel é a linha selecionada.
Grid.TopRow = Grid.RowSel
RowSel é a linha selecionada.
Grid.TopRow = Grid.RowSel
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
No caso eu gostaria que ele se movimentasse apenas quando terminasse a area de visualização.
Abraço
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