Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nereu1301

[Resolvido] flexgrid

Recommended Posts

bom dia

 

num form tenho duas flex.

pra passar alguns dados da flex1 para a flex2 fiz assim

 

a flex1 um abre povoada no load do form e a flex2 abre vazia e vou povoando direto na flex.

Private Sub Grd1_DblClick()
    Grid2.TextMatrix(1, 1) = Grid1.TextMatrix(1, 0)
    Grid2.SetFocus
End Sub
isso dá certo pra uma linha mas eu quero pra diversas. Alguem poderia me ajudar?

 

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só me tire uma dúvida, se as duas grids serão iguais porque já não preenche a duas ao mesmo tempo com o mesmo código?

 

Caso não possa fazer isso, você precisa montar loop que percorram todas as linhas e colunas de sua grid.

O que você fez ali em cima está certo, agora precisa correr célula a célula trocando os valores da matriz

 

Por exemplo:


for i = 0 to grid1.rows
  for ii = 9 to grid1.cols
    grid2.textmatriz(i,ii) = grid1.textmatriz(i,ii)
  next
next

Tendeste? Tiver dúvidas ou problemas poste ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Claudio

 

seguinte

no grid1 tenho todas os produtos disponiveis e no grid2 vou usar só os que eu necessito, por isso nao preencho as duas no load.

 

entao usei tua dica assim

Private Sub Grid1_DblClick()
Dim i As Integer
Dim ii As Integer
    For i = 0 To Grid1.Rows
        For ii = 4 To Grid1.Cols 'minha grid tem 4 col
        Grid2.TextMatrix(i, ii) = Grid1.TextMatrix(i, ii)
        Next
    Next
    Grid2.SetFocus
End Sub
e me retornou erro "subscript out of range" e sinalizou na linha grid1.textMatrix e nao levou nada pro grid2

 

 

fico no aguardo

 

nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não pode começar seu next do 4 se sua grid tem 4 colunas. Precisa começar da primeira.

 

Mas algo que faltou nos seus loops que podem ter sido o motivo do erro causado foi colocar "grid1.rows -1" e "grid1.cols - 1".

 

Porque funciona assim. grid1.rows vai te indicar a quantidade de linhas que você tem. Mas vamos supor que sua última linha seja a 12 e sua última coluna a 3.

Teoricamente sua matriz ficaria (12,3), correto?

Mas os índices das células começam do zero, então a matriz dessa última célula ficará (11,2), e a primeira de todas (0,0). Entendeu?

 

Sendo assim, seu código tem que ser assim:

 

Private Sub Grid1_DblClick()
Dim i As Integer
Dim ii As Integer
    For i = 0 To Grid1.Rows - 1
        For ii = 0 To Grid1.Cols -1 'minha grid tem 4 col
        Grid2.TextMatrix(i, ii) = Grid1.TextMatrix(i, ii)
        Next
    Next
    Grid2.SetFocus
End Sub

Veja se o erro persiste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio

dessa forma ta indo pro grid2 sempre a primeira linha do grid1 , independente de qual linha do grid1 eu clicar

e continua a mensagem "subscript out of range" sinalizando na linha grid2.textmatrix

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

Consegui resolver com a ajuda do camarada Rubio

 

ficou assim

Private Sub Grid1_DblClick()
Dim a As Long
    For a = 1 To Grid2.Rows - 1
        If Grid2.TextMatrix(a, 0) = "" Then
            Grid2.TextMatrix(a, 0) = Grid1.TextMatrix(Grid1.Row, 0)
            Grid2.TextMatrix(a, 1) = Grid1.TextMatrix(Grid1.Row, 1)
            Grid2.SetFocus
            Exit Sub
        Else
            If a = Grid2.Rows - 1 Then
                Grid2.Rows = a + 2
                Grid2.TextMatrix(a + 1, 0) = Grid1.TextMatrix(Grid1.Row, 0)
                Grid2.TextMatrix(a + 1, 1) = Grid1.TextMatrix(Grid1.Row, 1)
                Exit Sub
                Grid2.SetFocus
            End If
        End If
    Next a
End Sub
Valeu pela paciencia.

 

Obrigado

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.