Fórum Ajuda cod. IF ... #249210
02/09/2004
0
será que alguem poderia me dar uma mãozinha...
obrigado
procedure Desabilita_DBS; begin if frm_CadCliente.DBComboBox_TipoCadastro.Text = ´´ then begin frm_CadCliente.DBEdit_NomeEmpresa.Enabled := False; frm_CadCliente.DBEdit_Endereco.Enabled := False; frm_CadCliente.DBEdit_Numero.Enabled := False; frm_CadCliente.DBEdit_Complemeto.Enabled := False; frm_CadCliente.DBEdit_Cep.Enabled := False; frm_CadCliente.DBEdit_Bairro.Enabled := False; frm_CadCliente.DBEdit_Cidade.Enabled := False; frm_CadCliente.DBEdit_Nascimento.Enabled := False; frm_CadCliente.DBText.Enabled := False; frm_CadCliente.DBComboBoxLogadouro.Enabled := False; frm_CadCliente.DBEdit_Ap.Enabled := False; frm_CadCliente.DBEdit_Email.Enabled := False; frm_CadCliente.DBEdit_Telefone.Enabled := False; frm_CadCliente.DBEdit_Celular.Enabled := False; frm_CadCliente.DBEdit_RgCgc.Enabled := False; frm_CadCliente.DBEdit_CpfCnpj.Enabled := False; frm_CadCliente.DBEdit_Inscricao.Enabled := False; frm_CadCliente.DBEdit_Contato.Enabled := False; frm_CadCliente.DBComboBox_Estado.Enabled := False; end else begin frm_CadCliente.DBEdit_NomeEmpresa.Enabled := true; frm_CadCliente.DBEdit_Endereco.Enabled := true; frm_CadCliente.DBEdit_Numero.Enabled := true; frm_CadCliente.DBEdit_Complemeto.Enabled := true; frm_CadCliente.DBEdit_Cep.Enabled := true; frm_CadCliente.DBEdit_Bairro.Enabled := true; frm_CadCliente.DBEdit_Cidade.Enabled := true; frm_CadCliente.DBEdit_Nascimento.Enabled := true; frm_CadCliente.DBText.Enabled := true; frm_CadCliente.DBComboBoxLogadouro.Enabled := true; frm_CadCliente.DBEdit_Ap.Enabled := true; frm_CadCliente.DBEdit_Email.Enabled := true; frm_CadCliente.DBEdit_Telefone.Enabled := true; frm_CadCliente.DBEdit_Celular.Enabled := true; frm_CadCliente.DBEdit_RgCgc.Enabled := true; frm_CadCliente.DBEdit_CpfCnpj.Enabled := true; frm_CadCliente.DBEdit_Inscricao.Enabled := true; frm_CadCliente.DBEdit_Contato.Enabled := true; frm_CadCliente.DBComboBox_Estado.Enabled := true; end; end;
Bem minha duvida eh a seguinte:
Alguem sabe se posso diminuir este código? Existe outra maneira de fazer isso?
Como adiciono no if uma outra condição (tipo: if frm_CadCliente.DBComboBox_TipoCadastro.Text = ´´ or ´blablabla´ then
da maneira que esta naum consigo.
alguem pode me dar uma força?
grato
Klaveren
Curtir tópico
+ 0Posts
02/09/2004
Paulo_amorim
Em princípio, pode-se reduzir pela metade fazendo:
with frm_CadCliente begin DBEdit_NomeEmpresa.Enabled := (frm_CadCliente.DBComboBox_TipoCadastro.Text <> ´´); end;
Claro, colocando todos os componentes...
Aí veja se vc tá definindo a prop. Enabled de todos os componentes DataAware... se sim, pode-se fazer um For no ComponentCount pra setar...
Espero que ajude
Até+
Gostei + 0
02/09/2004
Klaveren
o que eh DataAware...
with frm_CadCliente begin DBEdit_NomeEmpresa.Enabled := (frm_CadCliente.DBComboBox_TipoCadastro.Text <> ´´); end;
Outra duvida como acima, neste o ENABLED vai recer exatamente oq???
na veredade quero apenas que os DBEedit´s fiquem todos desabilitados enquanto não for selecionada alguma opçao do DBComboBox_TipoCadastro...
OBRIGADO!
Gostei + 0
02/09/2004
Sandra
klaveren,
O que o Paulo quis dizer seria algo como:
procedure Desabilita_DBS; var i: Integer; begin if frm_CadCliente.DBComboBox_TipoCadastro.Text = ´´ then begin for i := 0 to frm_CadCliente.ComponentCount -1 do if frm_CadCliente.Components[i].ClassName = ´TDBEdit´ then TDBEdit(Form1.Components[i]).Enabled := False; frm_CadCliente.DBComboBox_Estado.Enabled := False; frm_CadCliente.DBComboBoxLogadouro.Enabled := False; end else begin for i := 0 to frm_CadCliente.ComponentCount -1 do if frm_CadCliente.Components[i].ClassName = ´TDBEdit´ then TDBEdit(Form1.Components[i]).Enabled := True; frm_CadCliente.DBComboBox_Estado.Enabled := True; frm_CadCliente.DBComboBoxLogadouro.Enabled := True; end; end;
Dessa maneira, ajuda? :D
Boa sorte!!
Gostei + 0
02/09/2004
Vinicius2k
São todos os componentes desenvolvidos para trabalhar diretamente com os dados de uma tabela ou query... enquadram-se aqui DBEdits, DBComboBox, DBGrid... na prática, todos que começam com ´DB´
DBEdit_NomeEmpresa.Enabled := (frm_CadCliente.DBComboBox_TipoCadastro.Text <> ´´);
Uma comparação com o operadores ´=´,´<>´ , ´=>´ e ´<=´ sempre retornam um valor booleano (True ou False) e é isto que o DBEdit.Enabled estará recebendo, o resultado da comparação se a sua combo esta vazia ou não... ou seja, True ou False...
T+
Gostei + 0
02/09/2004
Klaveren
ajuda sim :D
valeu mesmu
Gostei + 0
02/09/2004
Klaveren
:D :D
ex: criei um IF
if dbedit1.text <> ´A´ or ´B´ then dbedit1.Eanbled := true else dbedit1.text := false; end;
tipo como add mais de uma condição para um mesmo IF???/
obrigado
Gostei + 0
02/09/2004
Vinicius2k
if (dbedit1.text <> ´A´) and (dbedit1.text <> ´B´) then dbedit1.Eanbled := true else dbedit1.Enabled := false;
T+
Gostei + 0
03/09/2004
Bacalhau
if (dbedit1.text <> ´A´) or (dbedit1.text <> ´B´) // é um ´or´, não um ´and´
:lol:
abraço
Gostei + 0
03/09/2004
Vinicius2k
Tem razão... falha nossa... mas acho q o colega entendeu...
Valeu bacalhau ! :wink:
Gostei + 0
03/09/2004
Martins
Acredito q o pessoal já tenha lhe ajudado a resolver seu problema, então aqi vai simplesmente uma sugestão:
vc poderia fazer algo do tipo:
{O objetivo aqui é tornar essa procedure livre para ser usada com os Form q vc quiser: Clientes, Fornecedores, Funcionários, etc...
Você deve passar como parâmetro apenas o nome do Fórmulário e a condição do componente, Verdadeiro/ativo(True), Falso/Inativo(False).}
procedure Desabilita_DBS(Form:TForm; cond:Boolean);
var
i: Integer;
Comp:Tcomponent;
begin
For i : = 0 to Form.ComponentCount-1 do
begin
Comp := Form.Components[i];
if Comp <> nil then
begin
If Comp is TDbEdit then TDBEdit(Comp).Enabled := Cond;
If Comp is TDBText then TDBText(Comp).Enabled := Cond;
end;
end;
End;
//Podendo ser usado mais ou menos assim:
Procedure FormPrincipal.DbComboBoxOnChange(Sender: TOBject);
begin
if (frm_CadCliente.DBComboBox_TipoCadastro.Text = ´´ ) or (frm_CadCliente.DBComboBox_TipoCadastro.Text = ´!!!!´ ) then
Desabilta_DBS(Frm_CadCliente, False)
else
Desabilita_DBS(Frm_CadCliente, True);
end;
//Não testei mas acho q é +/- assim.
Espero q possa ser-lhe útil de alguma forma ou melhor a todos q precisarem fazer algo parecido.
Boa Sorte!!!
Nova URL do Clubedelphi
[url]www.clubedelphi.net[/url]
Gostei + 0
03/09/2004
Martins
Acredito q o pessoal já tenha lhe ajudado a resolver seu problema, então aqi vai simplesmente uma sugestão:
vc poderia fazer algo do tipo:
{O objetivo aqui é tornar essa procedure livre para ser usada com os Form q vc quiser: Clientes, Fornecedores, Funcionários, etc...
Você deve passar como parâmetro apenas o nome do Fórmulário e a condição do componente, Verdadeiro/ativo(True), Falso/Inativo(False).}
procedure Desabilita_DBS(Form:TForm; cond:Boolean);
var
i: Integer;
Comp:Tcomponent;
begin
For i : = 0 to Form.ComponentCount-1 do
begin
Comp := Form.Components[i];
if Comp <> nil then
begin
If Comp is TDbEdit then TDBEdit(Comp).Enabled := Cond;
If Comp is TDBText then TDBText(Comp).Enabled := Cond;
end;
end;
End;
//Podendo ser usado mais ou menos assim:
Procedure FormPrincipal.DbComboBoxOnChange(Sender: TOBject);
begin
if (frm_CadCliente.DBComboBox_TipoCadastro.Text = ´´ ) or (frm_CadCliente.DBComboBox_TipoCadastro.Text = ´!!!!´ ) then
Desabilta_DBS(Frm_CadCliente, False)
else
Desabilita_DBS(Frm_CadCliente, True);
end;
//Não testei mas acho q é +/- assim.
Espero q possa ser-lhe útil de alguma forma ou melhor a todos q precisarem fazer algo parecido.
Boa Sorte!!!
Nova URL do Clubedelphi
[url]www.clubedelphi.net[/url]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)