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 

Como enviar mensagem para o usuário neste caso?

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


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Qui Jan 30, 2014 6:35 pm    Assunto: Como enviar mensagem para o usuário neste caso? Responder com Citação

Pessoal,

Como faço para enviar uma mensagem para o usuário nesse caso? tenho 1º DbCheckBox se o usuário habilitar o mesmo, obrigatoriamente ele tem que habilitar o 2º DbCheckBox ou 3º DbCheckBox, caso ele não habilite o 2º ou 3º preciso enviar a mensagem quando ele fizer qualquer ação no formulário.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
robertorro
Aprendiz
Aprendiz


Registrado: Domingo, 12 de Junho de 2005
Mensagens: 151

MensagemEnviada: Qui Jan 30, 2014 7:54 pm    Assunto: Eu criaria uma procedure Responder com Citação

procedure VerificaChecks;
Begin
if Dbcheckbox1.checked=true then
begin
if (Dbcheckbox2.checked=false) or (Dbcheckbox3.checked=false)then
begin
Showmessage('É necessário que o DbCheckBox2 e o DbCheckBox3 estejam habilitados');
end;
end;
end;

Depois é só chamar a procedure nos eventos que vc quiser;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Qui Jan 30, 2014 9:40 pm    Assunto: Responder com Citação

amigo o fomulário tem varias opções para o usuário clicar, então preciso criar um método único que evite o usuário fazer qualquer ação caso ele selecionou o Dbcheckbox1 e não selecionou o Dbcheckbox2 ou Dbcheckbox3.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gadeji
Novato
Novato


Registrado: Terça-Feira, 25 de Janeiro de 2011
Mensagens: 26

MensagemEnviada: Qui Jan 30, 2014 10:27 pm    Assunto: Re: Como enviar mensagem para o usuário neste caso? Responder com Citação

Adiciona uma procedure assim:

procedure TForm1.VerificaChecks(var Msg: TMsg; var Handled: Boolean);
begin
if msg.message = 514 then
if Dbcheckbox1.checked=true then
if (Dbcheckbox2.checked=false) or (Dbcheckbox3.checked=false)then
if (msg.HWND <> DBCheckBox2.Handle) and (msg.HWND <> DBCheckBox3.Handle) then
begin
MessageBox(0, 'É necessário que o DbCheckBox2 e o DbCheckBox3 estejam habilitados', 'Erro', mb_Ok);
Msg.message := 0;
end;
end;

E no onCreate do Form coloque isso:

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := VerificaChecks;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
gadeji
Novato
Novato


Registrado: Terça-Feira, 25 de Janeiro de 2011
Mensagens: 26

MensagemEnviada: Qui Jan 30, 2014 10:33 pm    Assunto: Responder com Citação

Um detalhe.. não esqueça de declarar lá em cima a procedure também... deve ficar igual aqui: http://prntscr.com/2o3wbq
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Jan 31, 2014 12:15 am    Assunto: Responder com Citação

gadeji

Funcionou mas permite fazer outras ações no formulário, causando erros, por exemplo quando clico no dbgrid nada acontece, também permite sair do formulário, etc. veja como esta o código:

Código:

procedure TFrmCadTurDisc.VerificaChecks(var Msg: TMsg; var Handled: Boolean);
begin
 if msg.message = 514 then
  if Cb_Transferido.checked = true then
   if (CB_1Semestre.checked = false) and (CB_2Semestre.checked = false)then
 if (msg.HWND <> CB_1Semestre.Handle) and (msg.HWND <> CB_2Semestre.Handle) then
  begin
    MessageBox(0, 'É necessário que o 1º Semestre ou 2º Semestre sejam habilitados', 'Atenção', mb_Ok);
    Msg.message := 0;
    PcAluno2.ActivePageIndex := 2;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Sex Jan 31, 2014 10:26 am    Assunto: Responder com Citação

Talvez seja melhor para o usuário se você ocultar ou inativar o que o usuário não pode mexer, e só exibir o que ele pode.

Exemplo: ao abrir a tela, deixe só o checkbox1 ativo. Ao clicar no checkbox1, os outros 2 checkboxes são habilitados. Então somente ao clicar em um dos 2, habilita o grid.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Jan 31, 2014 11:44 am    Assunto: Responder com Citação

Marciel,
Não dá para fazer como vc sugeriu, após clicar no checkbox1, habilitar também os outros 2 checkbox, trata-se de uma tabela de alunos, supondo que estejamos no 7 aluno, quando habilitar o checkbox1 também habilitaria os outros 2 checkbox, aí eu fecho a tabela e o cursou volta para o 1º aluno, isso confundiria o usuário, porque ele teria que voltar p o 7º aluno outra vez e teria que desabilitar o 2º ou 3º checkbox conforme o caso, outro fato importante, você sugeriu habilitar o grid após clicar em um dos 2 checkbox, não dá para fazer isso, porque esse formulário é o mais importante do sistema e ele tem várias opções para o usuário, teria que ser uma rotina que impedisse do usuário fazer qualquer ação se ele não habilitasse o 2º ou 3º checkbox, claro, caso ele tenha habilitado o checkbox1.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gadeji
Novato
Novato


Registrado: Terça-Feira, 25 de Janeiro de 2011
Mensagens: 26

MensagemEnviada: Sex Jan 31, 2014 8:40 pm    Assunto: Responder com Citação

Queria te pedir mil perdões, foi um erro tosco meu pensar que o único evento seria clicar...

Apenas substitua a sua procedure por essa:

Código:
procedure TFrmCadTurDisc.VerificaChecks(var Msg: TMsg; var Handled: Boolean);
begin
  if Cb_Transferido.checked = true then
   if (CB_1Semestre.checked = false) or (CB_2Semestre.checked = false) then
     if (msg.HWND <> CB_1Semestre.Handle) and (msg.HWND <> CB_2Semestre.Handle) then
    begin
      if msg.message = 514 then
        MessageBox(0, 'É necessário que o 1º Semestre ou 2º Semestre sejam habilitados', 'Atenção', mb_Ok);
      Msg.message := 0;
      PcAluno2.ActivePageIndex := 2;
    end;
end;


Mazo1 escreveu:
gadeji

Funcionou mas permite fazer outras ações no formulário, causando erros, por exemplo quando clico no dbgrid nada acontece, também permite sair do formulário, etc. veja como esta o código:

Código:

procedure TFrmCadTurDisc.VerificaChecks(var Msg: TMsg; var Handled: Boolean);
begin
 if msg.message = 514 then
  if Cb_Transferido.checked = true then
   if (CB_1Semestre.checked = false) and (CB_2Semestre.checked = false)then
 if (msg.HWND <> CB_1Semestre.Handle) and (msg.HWND <> CB_2Semestre.Handle) then
  begin
    MessageBox(0, 'É necessário que o 1º Semestre ou 2º Semestre sejam habilitados', 'Atenção', mb_Ok);
    Msg.message := 0;
    PcAluno2.ActivePageIndex := 2;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Jan 31, 2014 10:19 pm    Assunto: Responder com Citação

gadeji,
Agradeço pelas dicas, mas está funcionando parcialmente, está causando vários erros.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gadeji
Novato
Novato


Registrado: Terça-Feira, 25 de Janeiro de 2011
Mensagens: 26

MensagemEnviada: Sex Jan 31, 2014 10:52 pm    Assunto: Responder com Citação

Amigo, se você não quer fazer dessa forma então vai ter que desativar os outros componentes como o amigo ai disse e definir o CanClose do form como false no onCloseQuery até que marque os CheckBox...

Mazo1 escreveu:
gadeji,
Agradeço pelas dicas, mas está funcionando parcialmente, está causando vários erros.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Dom Fev 16, 2014 6:19 pm    Assunto: Responder com Citação

gadeji,
Tive que fazer novas implementações, só que estou tendo problemas, ou seja, agora são 6 DBCheckbox:

1 TRANSFERIDO
2 DESISTENTE
3 FALECIDO
4 ABANDONO

Se o usuário selecionar qualquer um DBCheckbox acima, obrigatoriamente ele tem que selecionar o 5 ou 6 DBCheckbox

5 SAIU_1SEMESTRE
6 SAIU_2SEMESTRE

Veja como está o código:


Código:

procedure TFrmCadTurDisc.VerificaChecks(var Msg: TMsg; var Handled: Boolean);
begin
 if msg.message = 514 then
  if (((DmDados.IBQryAlunoTurmaTRANSFERIDO.AsString   = 'True') or
     (DmDados.IBQryAlunoTurmaDESISTENTE.AsString      = 'True' ) or
     (DmDados.IBQryAlunoTurmaFALECIDO.AsString        = 'True' ) or
     (DmDados.IBQryAlunoTurmaABANDONO.AsString        = 'True' )) and

     ((DmDados.IBQryAlunoTurmaSAIU_1SEMESTRE.AsString = 'False') and
     (DmDados.IBQryAlunoTurmaSAIU_1SEMESTRE.IsNull            ) and
     (DmDados.IBQryAlunoTurmaSAIU_2SEMESTRE.AsString = 'False') and
     (DmDados.IBQryAlunoTurmaSAIU_2SEMESTRE.IsNull           ))) then
 if (msg.HWND <> CB_1Semestre.Handle) and (msg.HWND <> CB_2Semestre.Handle) then
  begin
    PcAluno2.ActivePageIndex := 2;
    MessageBox(0, 'É necessário que o 1º Semestre ou 2º Semestre sejam habilitados, ou não foi clicado no botão salvar!' , 'Atenção', mb_Ok);
    Msg.message := 0;
  end;
end;
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