Ajuda cod. IF ...

02/09/2004

boa terde pessoal estou com um probleminha...
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

Respostas

02/09/2004

Paulo_amorim

Olá

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é+


Responder Citar

02/09/2004

Klaveren

Desculpe minha ignorancia...
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!


Responder Citar

02/09/2004

Sandra

Alguem sabe se posso diminuir este código? Existe outra maneira de fazer isso?

...pode-se fazer um For no ComponentCount pra setar... Espero que ajude Até+

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&93;.ClassName = ´TDBEdit´ then
        TDBEdit(Form1.Components&91;i&93;).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&91;i&93;.ClassName = ´TDBEdit´ then
        TDBEdit(Form1.Components[i&93;).Enabled := True;
    frm_CadCliente.DBComboBox_Estado.Enabled := True;
    frm_CadCliente.DBComboBoxLogadouro.Enabled := True; 
  end; 
end; 

Dessa maneira, ajuda? :D


Boa sorte!!


Responder Citar

02/09/2004

Vinicius2k

Só completando a dica da Sandra...

o que eh DataAware...

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 <> ´´); 
Outra duvida como acima, neste o ENABLED vai recer exatamente oq???

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+


Responder Citar

02/09/2004

Klaveren

muito obrigado...
ajuda sim :D

valeu mesmu


Responder Citar

02/09/2004

Klaveren

soh mais uma duvidazinha!!!
: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


Responder Citar

02/09/2004

Vinicius2k

É necessário repetir a comparação... o compilador não é tão inteligente assim :D

if (dbedit1.text <> ´A´) and (dbedit1.text <> ´B´) then
  dbedit1.Eanbled := true 
else dbedit1.Enabled := false;


T+


Responder Citar

03/09/2004

Bacalhau

Vinicius é

if (dbedit1.text <> ´A´) or (dbedit1.text <> ´B´) // é um ´or´, não um ´and´
:lol:

abraço


Responder Citar

03/09/2004

Vinicius2k

Vinicius é if (dbedit1.text <> ´A´) or (dbedit1.text <> ´B´) // é um ´or´, não um ´and´


Tem razão... falha nossa... mas acho q o colega entendeu...
Valeu bacalhau ! :wink:


Responder Citar

03/09/2004

Martins

Olá colega!!!

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&93;;
       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]


Responder Citar

03/09/2004

Martins

Olá colega!!!

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&93;;
       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]


Responder Citar