Ajuda cod. IF ...
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
Posts
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é+
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!
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!!
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+
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
02/09/2004
Vinicius2k
if (dbedit1.text <> ´A´) and (dbedit1.text <> ´B´) then dbedit1.Eanbled := true else dbedit1.Enabled := false;
T+
03/09/2004
Bacalhau
if (dbedit1.text <> ´A´) or (dbedit1.text <> ´B´) // é um ´or´, não um ´and´
:lol:
abraço
03/09/2004
Vinicius2k
Tem razão... falha nossa... mas acho q o colega entendeu...
Valeu bacalhau ! :wink:
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]
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]
Clique aqui para fazer login e interagir na Comunidade :)