Ir para conteúdo
Fórum Script Brasil
  • 0

Data Grid - Laço Infinito


Andersonjb

Pergunta

Bem, e de novo o Data Grid, eu estou criando um sistema de busca nele, que ficou dessa maneira:

            For Each linha As DataRow In dthexa.Rows
                For Each coluna As DataColumn In dthexa.Columns
                    If linha(coluna) = acharhexa Then
                        MsgBox("ok")
                        Exit For
                    End If
                Next
            Next

Eu consigo localizar as letras, so que o laço se torna infinito ( A Caixa de Mensagens aparece inumeras vezes ). O que eu estou fazendo de errado?

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0
Bem, eu tenho um formulario que armazena o valor da busca em uma variavel em um modulo, que no caso e essa "acharhexa" ai... e se não me engano tá no evento Form Activate.

Acho que você não deveria utilizar o Activate para isso. Experimentou colocar isso no Click de um botão?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, funciona corretamente. Mas o problema e que tenho que fazer essa busca de outro formulario. Bem, tem como eu acessar um objeto que esta no outro formulário? Se tiver como faço isso? Por exemplo: adicionar há uma data table a propriedade datasource de um DataGrid. há uma possibilidade de eu fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, estou usando esse codigo:

        Dim dthexa As New DataTable

        Dim a As New Form1
        dthexa = a.dghexa.DataSource

        For Each linha As DataRow In dthexa.Rows
            For Each coluna As DataColumn In dthexa.Columns
                If linha(coluna) = acharhexa Then
                    MsgBox("oi")
                End If
            Next
        Next

Bem, não está tudo correto? So que da esse erro:

Additional information: Referência de objeto não definida para uma instância de um objeto.

Bem, em que referencia eu estou errando?

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui...

       Dim a As New Form1
       dthexa = a.dghexa.DataSource

... você está criando um novo (New) Form1 e está utilizando a propriedade DataSource do dghexa contido nele (que ainda não foi inicializado, creio eu). Se você já tem um Form1 instanciado que está sendo utilizado, você deveria pegar o DataSource do dghexa deste (e não criar um novo).

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, mas aonde eu tenho um Form1 já sendo instanciado?

Você pode declarar um campo público no Form2:

public f1 as Form1
E ao chamar o form2 (a partir do Form1, que no caso abaixo é o Me) você definiria esse campo:
dim j as new Form2
j.f1 = Me

Daí, quando você estiver no Form2 e quiser se referir ao Form1 você simplesmente utilizaria o "f1". Sacou? wink.gif

E porque eu preciso inicializar o dghexa em outro formulario se eu estou acessando ele de outro?

Exatamente, você *não* precisa. Mas do jeito que você fez ali em cima seria necessário.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Bem, e no caso, como eu inicializo um objeto que já esta inicializado, ou no caso na minha situação como eu faço para não dar erro no codigo?

Você não faz isso. Se ele já está inicializado, para quê inicializar novamente? Não precisa.

E, você seguiu o que eu disse no post anterior?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, gray, e você sabe algum metodo que faça com que certa celula do datagrid seja seleciona? Bem, eu tentei aqui e não consegui, olhe esse codigo:

         acharhexa = TextBox1.Text

        Dim dthexa As New DataTable
        Dim contl As Integer
        Dim contc As Integer
        Dim linha As DataRow
        Dim coluna As DataColumn

        dthexa = a.dghexa.DataSource

        For Each linha In dthexa.Rows
            contl = contl + 1
            For Each coluna In dthexa.Columns
                contc = contc + 1
                If contc >= 11 Then
                    contc = contc - 10
                End If
                If linha(coluna) = acharhexa Then
                    MsgBox(contl)
                    MsgBox(contc)
                    Exit For
                End If
            Next
            If linha(coluna) = acharhexa Then
                Exit For
            End If
        Next

Eu preciso focar uma certa celula no DataGrid com as coordenadas que estao dentro das variaveis contl e contc, respectivamente. O problema e que esse DataGrid esta no Form1. Como faço isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Aew, funcionou gray, valeu. So não entendi muito bem o lance de f1.a = Me, quer dizer então que o form1 esta dentro do form2? não deveria ser ao contrario?

Não é "estar dentro", mas sim "ter uma referência". Objetos conhecem outros objetos através de referências. Sacou? wink.gif

Bem, gray, e você sabe algum metodo que faça com que certa celula do datagrid seja seleciona?

Não seria a propriedade "CurrentCell" (célula atual)?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
O Problema e que a propriedade Current Cell não tem um metodo focus para mim selecionar o conteudo dela, entendeu?

E não é pra ter... afinal de contas, CurrentCell é uma *propriedade* (property) à qual você deve definir (set) ou obter (get) um valor. No caso...

dgHexa.CurrentCell = New DataGridCell(3, 1)

... irá selecionar a segunda coluna da quarta linha (os índices começam de 0). Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Um, eu não sabia isso sobre propriedades, ohmy.gif ... Bem, e uma coisa muito curiosa, eu preciso tirar 1 das variaveis que se encaixam no parametro da função, e quando faço uma expressão matematica dentro dela ou em qualquer lugar do codigo, ela não seleciona a grade em que esta o caracter. Mas quando não faço modificaçoes matematicas na variavel, ela se comporta bem, porque isso?

Link para o comentário
Compartilhar em outros sites

  • 0
Um, eu não sabia isso sobre propriedades, ohmy.gif ... Bem, e uma coisa muito curiosa, eu preciso tirar 1 das variaveis que se encaixam no parametro da função, e quando faço uma expressão matematica dentro dela ou em qualquer lugar do codigo, ela não seleciona a grade em que esta o caracter. Mas quando não faço modificaçoes matematicas na variavel, ela se comporta bem, porque isso?

Você pode dar um exemplo disso?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...