PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Problema com Radiogroup, Speedbuttons e outros... #371200

14/06/2009

0

[b:2cece8dc2c]Vou explicar o melhor possivel para que possam compreender e me ajudar...[/b:2cece8dc2c]

1º Eu criei um cadastro, coloquei os EDITs, o RADIOGROUP e o COMBOBOX no PANEL de cima e no PANEL de baixo coloquei os SPEEDBUTTONs.
Coloquei um comando pra ao sair, por exemplo do EDIT, pressionando enter vá para o próximo campo
ex:
procedure TFrmCadCli.EdtCodigoKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13
   then edtRazao.SetFocus;
end;


o problema é, tenho um MASKEDIT e depois dele vem o RADIOGROUP. Não consigo com esse comando mandar o foco para o RADIO, o máximo que consegui foi:

procedure TfrmCadCli.mskTelKeyPress(Sender: TObject; var Key: Char);
begin
  if key = 13
   then rdbSexo.ItemIndex := 0;
end;


O máximo que faz é marcar o item mas o foco continua no MASKEDIT,só vai se depois disso eu pressionar TAB. E por sequência (do TAB ORDER) depois do RADIO vem o PANEL com os SPEEDBUTTONS e não consigo fazer com que o 1°botão receba o foco.
Fiz um comando para que fizesse com que todos os campos fossem de preenchimento obrigatório, e nem tentando mandar o foco do MASKEDIT,sem passar pelo RADIO, direto para o PANEL, o botão não recebe o foco.
ex:
procedure TfrmCadCli.mskTelExit(Sender: TObject);
begin
  if not (ActiveControl is TButton)
    then begin
      if mskTel.text = ´(  )    -    ´
       then begin
         MessageDlg(´Campo obrigatório´, mtError, [mbOK],0);
         mskTel.SetFocus
       end else
         pnlBotoes.SetFocus;
      end;
end;


2º Eu fiz uma PROCEDURE (Limpar) para limpar todos os campos e uma FUNCTION (Integridade) para verificar se todos os campos obrigatórios foram preenchidos, caso o usuário no meio do caminho tente gravar os dados sem preencher tudo.
No botão gravar fiz o seguinte :

procedure TfrmCadCli.spbGravarClick(Sender: TObject);
begin
  if Integridade
   then begin
     ShowMessage(´Dados gravados com sucesso!´);
     Limpar;
   end else
     showmessage(´Todos os campos são obrigatórios´);
end;



Problema 1 - na função integridade,logo abaixo, estou com dificuldade de criar um comando para que verifique se o RADIO foi marcado:

function TfrmCadCli.Integridade: Boolean;
begin
  if (trim (EdtCodigo.text) <> ´´) and (trim (edtNome.text) <> ´´) and (trim (CmbUF.text) <> ´´) and (trim (mskNascimento.text) <> ´´) and (trim (mskTel.text) <> ´´)
   then  Result := True
   else  Result := False;
end;


Problema 2 - Depois de executar o programa, preencher os dados e clicar no botão gravar acontece o seguinte:
a)Ele exibe a mensageem ´Dados gravados com sucesso!´, clico em ok e ele me exibe a mensagem ´Campo Obrigatório´, e o foco, como programado na PROCEDURE LIMPAR, não volta para o primeiro campo, ele está permanecendo no RADIOGROUP.

b)Depurando o programa e entrando dentro desta PROCEDURE notei que todos os campos estão recebendo o valor´inaccesible value´
ex:
edtCodigo.Clear = inaccesible value

[b:2cece8dc2c]Agradeço desde já a ajuda em qualquer item do problema![/b:2cece8dc2c]


Soninhamax

Soninhamax

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar