Arjona 0 Denunciar post Postado Fevereiro 25, 2009 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
hammergod 0 Denunciar post Postado Fevereiro 25, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
Arjona 0 Denunciar post Postado Fevereiro 25, 2009 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
Chrnos 30 Denunciar post Postado Fevereiro 25, 2009 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
Arjona 0 Denunciar post Postado Fevereiro 25, 2009 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
Chrnos 30 Denunciar post Postado Fevereiro 25, 2009 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
Arjona 0 Denunciar post Postado Fevereiro 26, 2009 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