FLEXGRID AO GANHAR FOCO SELECIONA 1A. LINHA

WEBIER 08/06/2010 22:36:28
#344303
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:
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?
MICROSCHEME 09/06/2010 12:22:37
#344355

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

. . .

WEBIER 09/06/2010 14:55:11
#344382
Eu fiz uma pequena alteração no que vc disse:

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?
PERCIXANDO 09/06/2010 15:57:22
#344391
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.
WEBIER 11/06/2010 21:39:52
#344658
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?
LIZANDER 11/06/2010 22:20:04
#344659
Resposta escolhida
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!
WEBIER 12/06/2010 10:43:51
#344669
não era bem o que queria nao!

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 ?
LIZANDER 12/06/2010 13:14:08
#344676
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.
Tópico encerrado , respostas não são mais permitidas