Mais de 1 Condição Delphi

21/09/2020

9

Olá bom dia a todos!
Estou com um simples probleminha, tenho um formulário de cadastro de cidade projetado no Delphi, aonde quero verificar quando o usuário for gravar as informações inseridas do formulário no banco de dados, se os respectivos campos estão vazios, para isso criei as condições.

Codigo:

procedure TFrmCadasCidade.SpeedButtonGravarClick(Sender: TObject);
begin
if Trim(DBEditDescCidade.Text) = ' ' then
begin
MessageBox(Handle,' Campo descrição cidade não pode ser vazio! Por favor proceda a correção.','Sistema Unilite',MB_OK or MB_ICONEXCLAMATION);
DBEditDescCidade.SetFocus;
if Trim(DBEditIbge.Text) = ' ' then
begin
MessageBox(Handle,' Campo IBGE não pode ser vazio! Por favor proceda a correção.','Sistema Unilite',MB_OK or MB_ICONEXCLAMATION);
if Trim(DBComboBox1.Text) = ' ' then
begin
MessageBox(Handle,' Campo UF não pode ser vazio! Por favor proceda a correção.','Sistema Unilite',MB_OK or MB_ICONEXCLAMATION);
end
end
end
else
begin
FDQryCidade.Post;
UnitDataModule.DMUnilite.FDUniLite.Commit;
SpeedButtonEditar.Enabled := true;
SpeedButtonNovo.Enabled := true;
SbPesquisa.Visible := true;
DBEditDescCidade.SetFocus;
DBEditDescCidade.ReadOnly := true;
DBEditCep.ReadOnly := true;
DBEditIbge.ReadOnly := true;
DBComboBox1.ReadOnly := true;
MessageBox(Handle,'Cidade cadastrada com sucessso!','Sistema Unilite',MB_OK or MB_ICONINFORMATION);
end;
end;


O problema é quando, os respectivos campos da primeira é ultima condição são preenchidos a aplicação permita que o usuário salva.

Sou iniciante da plataforma Delphi, e sei que errei em algum ponto do código. Se poderem me ajudar agradeço.


Obs:
Modo de conexão do projeto com o banco: Firefac
Responder

Posts

tente algo assim:
procedure TFrmCadasCidade.SpeedButtonGravarClick(Sender: TObject);
const
	KENTER = #13#10;
var
	strMsg: string;
	nCpo: integer;
	function iif(condition: boolean; iftrue, iffalse:variant): variant;
	begin
		if condition then
			result := iftrue
		else
			result := iffalse;
	end;
begin
	strMsg := EmptyStr;
	nCpo := 0;

	if (Trim(DBEditDescCidade.Text) = EmptyStr) or (Trim(DBComboBox1.Text) = EmptyStr) then
	begin
		if Trim(DBEditDescCidade.Text) = EmptyStr then
		begin
			strMsg := strMsg + iif(strMsg='','',KENTER) + '- Campo descrição cidade não pode ser vazio!';
			if nCpo = 0 then
				nCpo := 1;
		end;

		if Trim(DBEditIbge.Text) = EmptyStr then
		begin
			strMsg := strMsg + iif(strMsg='','',KENTER) + '- Campo IBGE não pode ser vazio!';
			if nCpo = 0 then
				nCpo := 2;
		end;

		if Trim(DBComboBox1.Text) = EmptyStr then
		begin
			strMsg := strMsg + iif(strMsg='','',KENTER) + '- Campo UF não pode ser vazio!';
			if nCpo = 0 then
				nCpo := 3;
		end;

		if strMsg <> EmptyStr then
		begin
			MessageBox(Handle,pCHAR(strMsg + KENTER + KENTER + 'Por favor proceda a correção.'),'Sistema Unilite',MB_OK or MB_ICONEXCLAMATION);

			case nCpo of
				1: DBEditDescCidade.SetFocus;
				2: DBEditIBGE.SetFocus;
				3: DBComboBox1.SetFocus;
			end;
		end;
	end
	else
	begin
		FDQryCidade.Post;
		UnitDataModule.DMUnilite.FDUniLite.Commit;
		SpeedButtonEditar.Enabled := true;
		SpeedButtonNovo.Enabled := true;
		SbPesquisa.Visible := true;
		DBEditDescCidade.SetFocus;
		DBEditDescCidade.ReadOnly := true;
		DBEditCep.ReadOnly := true;
		DBEditIbge.ReadOnly := true;
		DBComboBox1.ReadOnly := true;
		MessageBox(Handle,'Cidade cadastrada com sucessso!','Sistema Unilite',MB_OK or MB_ICONINFORMATION);
	end;
end;
Responder

23/09/2020

Jefferson

Boa noite! Muito obrigado, foi de muita ajuda. Desde que comecei a programar na plataforma Delphi, a plataforma DevMidia foi a mais quem me ajudou.

Como sou iniciante, quero tentar entender. No caso você criou uma função e depois a chamou adicionado a um show messenger, cada vez que ela é usada nos respectivos campo.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar