FLEXGRID AO GANHAR FOCO SELECIONA 1A. LINHA
tenho um textbox (txtDesc) e um flexgrid (grid)
antes eu usava um dbgrid e rodava blz, mudei e agora para flexgrid tó com essas duvidas:
duvida:
estou com o foco no txtdesc, quando eu der um ENTER é para ele dar o foco para o grid e selecionar a primeira linha do grid.
antes quando era DBGRID eu fazia simplesmente assim:
e agora com o flexgrid ele dar o foco, mas nao seleciona a primeira linha do grid, ele só marca com uma linha pontilhada a ultima celula da primeira linha.
como eu faço para selecionar (marcar de preto) a linha toda?
antes eu usava um dbgrid e rodava blz, mudei e agora para flexgrid tó com essas duvidas:
duvida:
estou com o foco no txtdesc, quando eu der um ENTER é para ele dar o foco para o grid e selecionar a primeira linha do grid.
antes quando era DBGRID eu fazia simplesmente assim:
Private Sub txtdesc_KeyPress(KeyAscii As Integer)
If KeyCode = 13 Then
grid.SetFocus
End If
End Sub
e agora com o flexgrid ele dar o foco, mas nao seleciona a primeira linha do grid, ele só marca com uma linha pontilhada a ultima celula da primeira linha.
como eu faço para selecionar (marcar de preto) a linha toda?
Private Sub txtdesc_KeyPress(KeyAscii As Integer)
If KeyCode = vbkeyreturn Then
nomedasuagrid.SetFocus
noedasuagrid.row = 1
noedasuagrid.col = 0
End If
End Sub
Primeira coluna e primeira linha depois do cabeçaclho da sua grid
. . .
Eu fiz uma pequena alteração no que vc disse:
ele dar o foco ao grid, mas não seleciona a primeia linha não.... só após apertar no tecla seta para baixo ele seleciona (marca de preto) a segunda linha...
como eu faço para quando dar o foco no grid ele automaticamente selecionar a primeira linha?
Private Sub txtDescricao_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Grid.SetFocus
Grid.Row = 1
Grid.Col = 0
ElseIf KeyAscii = 27 Then
Unload Me
End If
End Sub
ele dar o foco ao grid, mas não seleciona a primeia linha não.... só após apertar no tecla seta para baixo ele seleciona (marca de preto) a segunda linha...
como eu faço para quando dar o foco no grid ele automaticamente selecionar a primeira linha?
Olha, cara, acredito que o problema está nas configurações da FlexGrid.
Eu tenho um sistema aqui que funciona dessa maneira que você quer. Só não sei te dizer qual a configuração que você deve alterar no seu para obter esse resultado. As configurações diferentes que estão na minha FlexGrid são as seguintes:
Clique botão direito na FlexGrid e escolha Propriedades - altere o seguinte:
FocusRect=0
SelectionMode = By Row
AllowBigSelection está desmarcada.
Qualquer coisa, porte novamente.
Espero ter ajudado.
Até mais.
Eu tenho um sistema aqui que funciona dessa maneira que você quer. Só não sei te dizer qual a configuração que você deve alterar no seu para obter esse resultado. As configurações diferentes que estão na minha FlexGrid são as seguintes:
Clique botão direito na FlexGrid e escolha Propriedades - altere o seguinte:
FocusRect=0
SelectionMode = By Row
AllowBigSelection está desmarcada.
Qualquer coisa, porte novamente.
Espero ter ajudado.
Até mais.
FocusRect=0 [ô]nao estava, mas coloquei agora
SelectionMode = By Row [ô]já estava
AllowBigSelection está desmarcada. [ô]nao estava, mas coloquei agora
resultado: a mesma coisa que citei antes!
Mais alguem?
SelectionMode = By Row [ô]já estava
AllowBigSelection está desmarcada. [ô]nao estava, mas coloquei agora
resultado: a mesma coisa que citei antes!
Mais alguem?
Bom... vamos lá...
O FlexGrid não seleciona uma linha toda... ele seleciona um par linha, coluna. Por isso ele aparece pontilhado na célula (o par linha, coluna).
Agora se o que vc quer é destacar uma linha inteira, vc pode mudar a cor da célula, de forma que a mesma pareça selecionada.
Por exemplo:
Private Sub marca_linha_grid()
Dim linha As Long
Dim nIndice As Long
Dim nIndiceMax As Long
linha = seuflexgrid.Row
If iLinha2Ant > 0 And iLinha2Ant < seuflexgrid.Rows Then
[ô]aqui verifica se tem alguma linha selecionada, então no load do form vc precisa fazer iLinha2Ant=0
[ô] se tiver linha selecionada ele devolve a cor branca a ela...
With seuflexgrid
.Row = iLinha2Ant
nIndiceMax = .Rows - 1
For nIndice = 0 To nIndiceMax
.Col = nIndice
.CellBackColor = vbWhite
Next
End With
End If
seuflexgrid.Row = linha
[ô]a partir daqui ele marca de amarela a linha selecionada.
With seuflexgrid
.FillStyle = flexFillRepeat
.Row = linha
nIndiceMax = .Rows - 1
For nIndice = 0 To nIndiceMax
.Col = nIndice
.CellBackColor = vbYellow
Next
.FillStyle = flexFillSingle
End With
iLinha2Ant = linha
End Sub
Então, no evento click do flexgrid vc chama essa sub para marcar a linha selecionada.
Espero ter ajudado!
O FlexGrid não seleciona uma linha toda... ele seleciona um par linha, coluna. Por isso ele aparece pontilhado na célula (o par linha, coluna).
Agora se o que vc quer é destacar uma linha inteira, vc pode mudar a cor da célula, de forma que a mesma pareça selecionada.
Por exemplo:
Private Sub marca_linha_grid()
Dim linha As Long
Dim nIndice As Long
Dim nIndiceMax As Long
linha = seuflexgrid.Row
If iLinha2Ant > 0 And iLinha2Ant < seuflexgrid.Rows Then
[ô]aqui verifica se tem alguma linha selecionada, então no load do form vc precisa fazer iLinha2Ant=0
[ô] se tiver linha selecionada ele devolve a cor branca a ela...
With seuflexgrid
.Row = iLinha2Ant
nIndiceMax = .Rows - 1
For nIndice = 0 To nIndiceMax
.Col = nIndice
.CellBackColor = vbWhite
Next
End With
End If
seuflexgrid.Row = linha
[ô]a partir daqui ele marca de amarela a linha selecionada.
With seuflexgrid
.FillStyle = flexFillRepeat
.Row = linha
nIndiceMax = .Rows - 1
For nIndice = 0 To nIndiceMax
.Col = nIndice
.CellBackColor = vbYellow
Next
.FillStyle = flexFillSingle
End With
iLinha2Ant = linha
End Sub
Então, no evento click do flexgrid vc chama essa sub para marcar a linha selecionada.
Espero ter ajudado!
não era bem o que queria nao!
voltando ao assunto:
seleciona a celula 3 da primeira linha.
tem como modificar esse codigo aqui para selecionar da coluna 1 até a coluna 5 ?
voltando ao assunto:
If KeyAscii = 13 Then
Grid.SetFocus
Grid.Col = 3
Grid.Row = 1
end if
seleciona a celula 3 da primeira linha.
tem como modificar esse codigo aqui para selecionar da coluna 1 até a coluna 5 ?
Bom Weber... Fica difÃcil...Pra não dizer impossÃvel.
Como vc mesmo frisou:
Grid.Col = 3
Grid.Row = 1
Não tem como fazer Grid.Col ser igual a 0, 1, 2, 3 e 4 ao mesmo tempo. Foi o que eu te falei, o Flexgrid somente permite um par linha, coluna selecionado.
Como vc mesmo frisou:
Grid.Col = 3
Grid.Row = 1
Não tem como fazer Grid.Col ser igual a 0, 1, 2, 3 e 4 ao mesmo tempo. Foi o que eu te falei, o Flexgrid somente permite um par linha, coluna selecionado.
Tópico encerrado , respostas não são mais permitidas