Como enviar mensagem para o usuário nesse caso?

Delphi

17/02/2014

Pessoal, fiz conforme dica de um amigo, mas está dando erro, alguém tem outra solução?

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;
Osmar

Osmar

Curtidas 0

Respostas

Osmar

Osmar

17/02/2014

Pessoal, fiz conforme dica de um amigo, mas está dando erro, alguém tem outra solução? 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:

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;
GOSTEI 0
Alan Souza

Alan Souza

17/02/2014

((DmDados.IBQryAlunoTurmaSAIU_1SEMESTRE.AsString = ''False'') and
     (DmDados.IBQryAlunoTurmaSAIU_1SEMESTRE.IsNull            ) and
     (DmDados.IBQryAlunoTurmaSAIU_2SEMESTRE.AsString = ''False'') and
     (DmDados.IBQryAlunoTurmaSAIU_2SEMESTRE.IsNull           ))


a condição (string = 'False') AND (IsNull) vai ser sempre falsa.
GOSTEI 0
Osmar

Osmar

17/02/2014

no banco tanto tem False como IsNull, mas se o usuário selecionar o 5 ou 6 DBCheckbox aí recebe True, não sei se entendi o que você quis dizer.
GOSTEI 0
Alan Souza

Alan Souza

17/02/2014

se é nulo não tem conteúdo no campo, então quando você faz o IsNull AND campo.asstring = 'TRUE', essa condição vai sempre retornar Falso, então nunca passará no código que vc colocou dentro do if...
GOSTEI 0
Nelson Santos

Nelson Santos

17/02/2014

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
GOSTEI 0
POSTAR