Aula 7- Criando a consulta usando o B4A e o MySQL

7.1 Criando o layout

1) Iremos criar a tela do layout  da consulta de professor.  Inicialmente clique na Activity "telaconsultarprofessor"  conforme indicado pela figura 1.

Figura 01. Ativando a activity telaconsultarprofessor

2) Essa activity deverá ficar aberta pois ela que vai receber as codificações. Agora vá até o menu "Designer", em seguida clique em "Abrir Designer" e na janela que se abrir, abra o layout "telaconsultarprofessor" conforme indicado pela figura 2.

Figura 02. Selecionando o layout telaconsultarprofessor

3) Na tela que aparecer, na região acinzentada mais escura, à direita, vamos adicionar os componentes de maneira que fique parecida com a figura 3.

Figura 03. Objetos inseridos no layout telaconsultarprofessor

Montando a tela e Mudando propriedades do layout "telacadastroprofessorum"

Insira os seguintes componentes:

 

5) Veremos mais a frente que o componente CustomListView é uma ListView que podemos customizar e assim como o componente ScrollView também pode se relacionar com panels em outros layouts.  Agora vá até o menu "Ferramentas" e em seguida clique em "Gerar Membros". Em seguida gere os objetos e os eventos relacionados aos objetos mais importantes presentes na tela, conforme demonstrado pela figura 4.

Figura 04. Gerando os objetos e métodos do layout telaconsultarprofessor

6) Ainda com o layout aberto, salve as alterações feitas indo até ao menu "Arquivo" e logo em seguida, "Salvar".

7) Agora vá novamente até o menu "Arquivo", em seguida clique em "lprofessor" conforme indicado pela figura 5.

Figura 05. Selecionando o layout lprofessor

8) Na tela que aparecer, na região acinzentada mais escura, à direita, adicione os objetos de forma a ficar parecido com o demonstrado pela figura 6.

Figura 06. Objetos inseridos no layout lprofessor

 

Montando a tela e Mudando propriedades do layout "lprofessor"

Insira os seguintes componentes:

9) Você pode checar que todos os componentes labels inseridos são elementos filhos do componente panel. Para isso clique em "Árvore de views". O resultado da ação deverá ficar semelhante ao demonstrado pela figura 7.

Figura 7. Árvore de views do layout "lprofessor"

10) Agora vá até o menu "Ferramentas" e em seguida clique em "Gerar Membros". Em seguida gere os objetos mais importantes presentes na tela, com a exceção do panel que será usado de uma forma diferente nesta aula. A figura 8 destaca como deve ser feito.

Figura 8. Geração dos objetos relacionados ao layout "lprofessor"

11) Os objetos contidos neste layout serão carregados, a cada exibição de registro, dentro do componente "customlistview" adicionado ao layout "telaconsultarprofessor", componente este adicionado no passo 3 desta aula.

12) Feche a janela "Gerar Membros".  Antes de sair do layout, uma etapa importante! Clique no componente "panel" e anote os valores relacionados às propriedades width e height conforme destacado pela figura 9.

Figura 9. Propriedades Width e Height do panel

 

 

13) Feche a janela do Visual Designer, confirmando as alterações realizadas, e, em seguida, retornaremos aos códigos da Activity "telaconsultarprofessor".

7.1 Criando as codificações

13) Com a  Activity "telaconsultarprofessor" aberta Vá até a seção Sub Globals e acrescente uma variável(i ) conforme demonstrado pela figura 10.

Figura 10.Declaração da variável i

14) Logo abaixo do fim da  "sub globals", após a linha correspondente ao "End Sub", insira as codificações abaixo:

'função que retornará o panel dentro da customlistview clv
Private Sub CLV_act As Panel
    Dim Panel1 As Panel
    Panel1.Initialize("")
    Dim height,width As Int
    'Substitua os números pelos valores que você anotou das respectivas propriedades
    'anteriormente no passo 12
    width=380dip
    height=490dip
    Panel1.SetLayoutAnimated(0, 0, 0, width, height)
    Panel1.LoadLayout("lprofessor")
    'atribui a cada label uma informação associada ao registro apontado

    lblcodigo.Text = Starter.rs1.GetString2("prof_codigo")
    lblnome.Text = Starter.rs1.GetString2("prof_nome")
    lblendereco.Text =Starter.rs1.GetString2("prof_end")
    lblbairro.Text =Starter.rs1.GetString2("prof_bairro")
    lblcidade.Text =Starter.rs1.GetString2("prof_cidade")
    lblestado.Text =Starter.rs1.GetString2("prof_estado")
    lblfone.Text =Starter.rs1.GetString2("prof_fone")
    lblemail.Text =Starter.rs1.GetString2("prof_mail")
    Return Panel1
End Sub


'método que preenche a customlistview a cada registro listado pela consulta
Sub preencher
    'loop que vai percorrer cada registro da consulta e preencher a customlistview com o panel e os valores retornados
   
For i=0 To Starter.rs1.RowCount - 1
        Starter.rs1.Position = i
        clv.Add(CLV_act,i)
    Next
End Sub

15) Segue abaixo a implementação da sub "Activity_Create(FirstTime As Boolean)" ( anteriormente nessa sub a gente apenas vinculava o layout através do loadlayout, mas nesse caso em específico deveremos implementar mais coisas a serem executadas no momento da criação da Activity)

 

'na criação da activity
Sub Activity_Create(FirstTime As Boolean)
    Dim vsql As String
    'chamando o método global de conexão
   
ConexaoGeral.conectar
    vsql = "SELECT * FROM professor"
    'executando a consulta
    Starter.rs1 = Starter.mh1.Query(vsql)
    'posicionando o resultset já no primeiro registro
    Starter.rs1.Position=0
    'vinculando a activity com o layout de consulta
    Activity.LoadLayout("telaconsultarprofessor")
    'chamando o método que vai preencher a customlistview
    preencher
End Sub

 

16) Segue agora as implementações do evento TextChanged do componente edittext  "edtpesq" e também do botão "sair".

'evento Textchanged relacionado com qualquer mudança no componente edtpesq
Sub edtpesq_TextChanged (Old As String, New As String)
    Dim vsql As String
    'limpar a customlistview
    clv.Clear
    'se a consulta for por código
   
If (rdbcodigo.Checked) Then
        vsql = "SELECT * FROM professor where Prof_codigo = "&edtpesq.Text
    'senão se for por nome
    Else
        vsql = "SELECT * FROM professor where Prof_nome like '"&edtpesq.Text&"%'"
    End If
    'chamando o método query que executará a consulta de acordo com o que foi armazenado em vsql
   
Starter.rs1 = Starter.mh1.Query(vsql)
    'se a consulta apresentar alguma falha
   
If Starter.rs1.IsInitialized = False Then
        Msgbox("ResultSet is empty" & CRLF & Starter.mh1.SQLError, "Warning")
        Return
    End If
    'chamando o método que vai preencher a customlistview com os resultados atualizados
   
preencher
End Sub
 

'botão sair
Sub btnsair_Click
    Activity.Finish
End Sub

 

17) Teste as funcionalidades da tela de consulta de professor  no seu dispositivo ou no emulador. Você pode configurar a exibição dos dados com cores,  fontes, bordas da maneira que desejar. Para isso ir até o layout "lprofessor" e altere as propriedades do panel e dos labels.  A figura 11 demonstra a tela de cadastro de professor já em funcionamento no emulador Genymotion.

Figura 11.Tela de consulta de professor

 

 

 

 


 

 

 

 

.