Ir para conteúdo

POWERED BY:

Arquivado

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

Arjona

[Resolvido] Problema com o componente DBRadioGroup

Recommended Posts

Olá pessoal....

Sou iniciante na programação com Delphi e estou com um problema que não afeta a funcionalidade geral do programa mas, por outro lado, prejudica o aspecto visual e pode dificultar a manipulação do programa pelo usuário final.

Coloquei um componente DBRadioGroup com dois componetes: Pessoa Física e Pessoa Jurídica. Programei no evento "BeforeInsert" da "table" para que o componente iniciasse com nenhum dos radiobuttons ativado, através do flag -1. Dependendo do item selecionado pelo usuário, alguns dados do form são alterados dinamicamente.

O problema é que, depois que eu seleciono um dos botões radiobuttons, quando eu troco de opção eu preciso dar dois cliques sobre o outro botão ao invés de apenas um. O que acontece é que ele primeiro seleciona a label referente ao botão e depois seleciona o botão em si. Tentei fazer o mesmo procedimento pelas setas do teclado e da na mesma. Acredito que o problema possa ser resolvido por alguma propriedade do object inspector, mas ainda não consegui achar solução.

Se alguém puder me ajudar, ficarei muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você não deixa o flag -1 direto na propriedade, quando você for alterar de um para o outro você da um edit e depois um post...assim seria mais simples

Sinceramente, eu não entendi muito bem a tua sugestão. Teria como explicar um pouco mais detalhadamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código que está sendo executado ao clicar no radiogroup por favor... fica difícil sugerir algo sem ele.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha dúvida na verdade é bem simples. Como estou iniciando com programação em delphi, acho que não fui tão claro. O que está acontecendo é que eu não estou conseguindo trocar as opções do radiogroup com apenas um click, como deveria ser eu imagino. Se eu estou com uma opção selecionada e troco para outra opção eu preciso da dois cliques nesta para que o radiobutton fique assinalado. Tá aí uma parte do código. Desde já, obrigado pela atenção de vcs.

 

procedure TFormClientes.TableClientesBeforeInsert(DataSet: TDataSet);

begin

DBRadioGroupTipo.ItemIndex := -1;

ShowMessage('Selecione o tipo: Pessoa Física ou Pessoa Jurídica '+#13+

'antes de preencher o formulário!');

DBEditRazaoSocial.SetFocus;

end;

 

procedure TFormClientes.DBRadioGroupTipoClick(Sender: TObject);

begin

If DBRadioGroupTipo.ItemIndex = 0 then //Opção Pessoa Física selecionada

begin

LabelRazaoSocial.Caption := 'Nome';

LabelFantasia.Caption := 'Apelido';

LabelCGC_CPF.Caption := 'CPF';

LabelInsc_RG.Caption := 'RG';

TableClientesCGC_CPF.EditMask := '999\.999\.999\-99;0;_'; //máscara para o CPF

end

else // Opção Pessoa Jurídica selecionada

begin

LabelRazaoSocial.Caption:= 'Razão Social';

LabelFantasia.Caption := 'Fantasia';

LabelCGC_CPF.Caption := 'CGC';

LabelInsc_RG.Caption := 'Inscrição Estadual';

TableClientesCGC_CPF.EditMask := '99\.999\.999\/9999\-99;0;_';//máscara para o CGC

TableClientesInsc_RG.EditMask := '999\/9999999;0;_'; //máscara para a Insc. Estadual

end;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algum componente que em algum evento seta o valor do radiogroup em questão para -1 por exemplo? Já debugou o código para ver por onde sua rotina está passando ao clicar nele?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema. Não sei se da maneira mais “elegante” mas o que importa é que funcionou.

Fiz o debug , como você havia sugerido, e verifiquei que depois que eu fazia a troca do radiobutton alguma coisa (que eu não sei até agora o que é) zerava a seleção no final da rotina. Dessa forma, eu experimentei “forçar” o valor da variável como está indicado no código abaixo e deu certo.

Muito obrigado aos amigos que contribuíram.

 

 

procedure TFormClientes.DBRadioGroupTipoClick(Sender: TObject);

begin

If DBRadioGroupTipo.ItemIndex = 0 then //Opção Pessoa Física selecionada

begin

LabelRazaoSocial.Caption := 'Nome';

LabelFantasia.Caption := 'Apelido';

LabelCGC_CPF.Caption := 'CPF';

LabelInsc_RG.Caption := 'RG';

TableClientesCGC_CPF.EditMask := '999\.999\.999\-99;0;_'; //máscara para o CPF

DBRadioGroupTipo.ItemIndex := 0; //Linha adicionada

end

else // Opção Pessoa Jurídica selecionada

begin

LabelRazaoSocial.Caption:= 'Razão Social';

LabelFantasia.Caption := 'Fantasia';

LabelCGC_CPF.Caption := 'CGC';

LabelInsc_RG.Caption := 'Inscrição Estadual';

TableClientesCGC_CPF.EditMask := '99\.999\.999\/9999\-99;0;_';//máscara para o CGC

TableClientesInsc_RG.EditMask := '999\/9999999;0;_'; //máscara para a Insc. Estadual

DBRadioGroupTipo.ItemIndex := 1; //Linha adicionada

end;

end;

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.