Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Qui Jan 30, 2014 6:35 pm Assunto: Como enviar mensagem para o usuário neste caso? |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
robertorro Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 12 de Junho de 2005 Mensagens: 151
|
Enviada: Qui Jan 30, 2014 7:54 pm Assunto: Eu criaria uma procedure |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Qui Jan 30, 2014 9:40 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
gadeji Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 25 de Janeiro de 2011 Mensagens: 26
|
Enviada: Qui Jan 30, 2014 10:27 pm Assunto: Re: Como enviar mensagem para o usuário neste caso? |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
gadeji Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 25 de Janeiro de 2011 Mensagens: 26
|
Enviada: Qui Jan 30, 2014 10:33 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Sex Jan 31, 2014 12:15 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
marcieldeg Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
![](images/avatars/163033283657464727365d9.jpg)
Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Sex Jan 31, 2014 10:26 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Sex Jan 31, 2014 11:44 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
gadeji Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 25 de Janeiro de 2011 Mensagens: 26
|
Enviada: Sex Jan 31, 2014 8:40 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Sex Jan 31, 2014 10:19 pm Assunto: |
|
|
gadeji,
Agradeço pelas dicas, mas está funcionando parcialmente, está causando vários erros. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
gadeji Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 25 de Janeiro de 2011 Mensagens: 26
|
Enviada: Sex Jan 31, 2014 10:52 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Mazo1 Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Dom Fev 16, 2014 6:19 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
|