ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Desabilitar botões

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
neltonarsi
Novato
Novato


Registrado: Terça-Feira, 15 de Outubro de 2013
Mensagens: 40

MensagemEnviada: Seg Abr 27, 2015 6:32 pm    Assunto: Desabilitar botões Responder com Citação

Boa noite galera!

Primeiramente agradeço a todos do Fórum, pois está sendo muito importante para meu aprendizado.

Estou desenvolvendo um sistema simples de cadastro do Delphi 2010 com BD MySQL 5.6 e não estou conseguindo implementar uma situação que imagino ser simples.

Criei os botões de navegação (Primeiro, Anterior, Próximo e Último) e gostaria de fazer uma comparação com o dado do formulário e os dados do BD. Quando o dado do formulário for igual ao último registro do BD, desabilitar os botões Próximo e Último e quando o dado do formulário for igual ao primeiro registro do BD, desabilitar os botões Primeiro e Anterior.

Acontece que consigo consultar os dados constantes no BD, mas não consigo colocar esta comparação em prática.

Desde já agradeço!

Att.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Ter Abr 28, 2015 1:34 am    Assunto: Responder com Citação

Supondo que vc esteja usando um SQLDataSet para se conectar ao MySql, tenta assim, pra mim funciona:
Código:

begin
        if SQLDataSet1.eof = true then
        begin
          btn_Proximo.enabled := false;
          btn_Ultimo.enabled := false;
        end
        else
        begin
          btn_Proximo.enabled := true;
          btn_Ultimo.enabled := true;
        end;

        // habilita botoes de navegaçao
        if SQLDataSet1.Bof = true then
        begin
          btn_Inicio.enabled := false;
          btn_Anterior.enabled := false;
        end
        else
        begin
          btn_Inicio.enabled := true;
          btn_Anterior.enabled := true;
        end;
      end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
neltonarsi
Novato
Novato


Registrado: Terça-Feira, 15 de Outubro de 2013
Mensagens: 40

MensagemEnviada: Ter Abr 28, 2015 10:46 am    Assunto: Responder com Citação

Eu criei uma procedure para cada botão e vou postar a do botão anterior para ver como está:

procedure TfrmPessoas.btnAnteriorClick(Sender: TObject);
begin
with dmConexao.qrPessoas do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM pessoas, ');
SQL.Add('(SELECT codPessoa CodPrimeiro FROM pessoas ORDER BY codPessoa ASC LIMIT 1)Primeiro, ');
SQL.Add('(SELECT codPessoa CodUltimo FROM pessoas ORDER BY codPessoa DESC LIMIT 1)Ultimo ');
SQL.Add('WHERE codPessoa < :codPessoa ');
SQL.Add('ORDER BY codPessoa DESC ');
dmConexao.qrPessoas.Parameters.ParamByName('codPessoa').Value:= edtCodigo.Text;
Open;
end;
begin
frmPessoas.edtCodigo.Text:= dmConexao.qrPessoas.FieldByName('codPessoa').Text;
// frmPessoas.edtDataCadastro.Text:= converteData(dmConexao.qrPessoas.FieldByName('dataCadastro').Text);
frmPessoas.edtDataCadastro.Text:= dmConexao.qrPessoas.FieldByName('dataCadastro').Text;
frmPessoas.edtDataAtCadastro.Text:= dmConexao.qrPessoas.FieldByName('dataAtCadastro').Text;
frmPessoas.cboTipoPessoa.Text:= dmConexao.qrPessoas.FieldByName('tipoPessoa').Text;
frmPessoas.edtNome.Text:= dmConexao.qrPessoas.FieldByName('nomePessoa').Text;
frmPessoas.edtDataNasc.Text:= dmConexao.qrPessoas.FieldByName('dataNascimento').Text;
frmPessoas.cboEstadoCivil.Text:= dmConexao.qrPessoas.FieldByName('estadoCivil').Text;
frmPessoas.cboSexo.Text:= dmConexao.qrPessoas.FieldByName('sexo').Text;
frmPessoas.edtCPF.Text:= dmConexao.qrPessoas.FieldByName('cpf').Text;
frmPessoas.edtRG.Text:= dmConexao.qrPessoas.FieldByName('rg').Text;
frmPessoas.edtCNPJ.Text:= dmConexao.qrPessoas.FieldByName('cnpj').Text;
frmPessoas.edtInscEstadual.Text:= dmConexao.qrPessoas.FieldByName('InscEstadual').Text;
frmPessoas.edtEndereco.Text:= dmConexao.qrPessoas.FieldByName('endereco').Text;
frmPessoas.edtNumero.Text:= dmConexao.qrPessoas.FieldByName('numero').Text;
frmPessoas.edtComplemento.Text:= dmConexao.qrPessoas.FieldByName('complemento').Text;
frmPessoas.edtBairro.Text:= dmConexao.qrPessoas.FieldByName('bairro').Text;
frmPessoas.edtCEP.Text:= dmConexao.qrPessoas.FieldByName('cep').Text;
frmPessoas.DBcboEstado.KeyValue:= dmConexao.qrPessoas.FieldByName('codEstado').Text;
frmPessoas.DBcboCidade.KeyValue:= dmConexao.qrPessoas.FieldByName('codCidade').Text;
frmPessoas.edtTelefone.Text:= dmConexao.qrPessoas.FieldByName('telefone').Text;
frmPessoas.edtCelular.Text:= dmConexao.qrPessoas.FieldByName('celular').Text;
frmPessoas.edtEmail.Text:= dmConexao.qrPessoas.FieldByName('email').Text;
colorCamposInicio();
if (frmPessoas.cboTipoPessoa.Text = 'FISICA') then
frmPessoas.lblDataInicio.Caption:= 'Data Nasc.'
else
frmPessoas.lblDataInicio.Caption:= 'Data Inicio';

Meu problema está aqui, quando eu tento comparar o código da pessoa que está sendo visualizado com o primeiro código do BD para desabilitar os botões primeiro e anterior. Neste caso ele não reconhece o 'CodPrimeiro' que foi o apelido dado ao select feito.

if dmConexao.qrPessoas.FieldByName('codPessoa').Value = dmConexao.qrPessoas.FieldByName('CodPrimeiro').Value then
begin
btnUltimo.Enabled:= True;
btnPrimeiro.Enabled:= False;
btnAnterior.Enabled:= False;
btnProximo.Enabled:= True;
end
else
begin
btnUltimo.Enabled:= True;
btnPrimeiro.Enabled:= True;
btnAnterior.Enabled:= True;
btnProximo.Enabled:= True;
end;
end;
end;

Se puder me ajudar, ficarei grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Ter Abr 28, 2015 12:55 pm    Assunto: Responder com Citação

Amigo, não precisa de tudo isso ai não.
faz assim:
Código:

proceure Controla;
begin
if dmConexao.qrPessoas.eof = true then
        begin
          btn_Proximo.enabled := false;
          btn_Ultimo.enabled := false;
        end
        else
        begin
          btn_Proximo.enabled := true;
          btn_Ultimo.enabled := true;
        end;

        // habilita botoes de navegaçao
        if dmConexao.qrPessoas.Bof = true then
        begin
          btn_Inicio.enabled := false;
          btn_Anterior.enabled := false;
        end
        else
        begin
          btn_Inicio.enabled := true;
          btn_Anterior.enabled := true;
        end;
end;

procedure TfrmPessoas.btn_PrimeiroClick(Sender: TObject);
begin
dmConexao.qrPessoas.First;
Controla;
end;

procedure TfrmPessoas.btn_ProximoClick(Sender: TObject);
begin
dmConexao.qrPessoas.Next;
Controla;
end;

procedure TfrmPessoas.btn_AnteriorClick(Sender: TObject);
begin
dmConexao.qrPessoas.Prior;
Controla;
end;

procedure TfrmPessoas.btn_UltimoClick(Sender: TObject);
begin
dmConexao.qrPessoas.Last;
Controla;
end;

Acho que isso resolve seu problema.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
neltonarsi
Novato
Novato


Registrado: Terça-Feira, 15 de Outubro de 2013
Mensagens: 40

MensagemEnviada: Ter Abr 28, 2015 1:30 pm    Assunto: Responder com Citação

Amigo, valeu pela informação. Deu certinho com sua sugestão.

Muito obrigado pela ajuda. Estou tentando aprender um pouco de Delphi, mas ainda estou apanhando muito.

Valeu.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB