Array
(
)

Ajuda cod. IF ...

Klaveren
   - 02 set 2004

boa terde pessoal estou com um probleminha...
será que alguem poderia me dar uma mãozinha...
obrigado

#Código

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


Paulo_amorim
   - 02 set 2004

Olá

Em princípio, pode-se reduzir pela metade fazendo:
#Código

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


Klaveren
   - 02 set 2004

Desculpe minha ignorancia...
o que eh DataAware...

#Código

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!


Sandra
   - 02 set 2004


Citação:
Alguem sabe se posso diminuir este código? Existe outra maneira de fazer isso?


Citação:
...pode-se fazer um For no ComponentCount pra setar...

Espero que ajude
Até+

klaveren,

O que o Paulo quis dizer seria algo como:

#Código

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!!


Vinicius2k
   - 02 set 2004

Só completando a dica da Sandra...


Citação:
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´


Citação:
#Código

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+


Klaveren
   - 02 set 2004

muito obrigado...
ajuda sim :D

valeu mesmu


Klaveren
   - 02 set 2004

soh mais uma duvidazinha!!!
:D :D

ex: criei um IF

#Código



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


Vinicius2k
   - 02 set 2004

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

#Código

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


T+


Bacalhau
   - 03 set 2004

Vinicius é

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

abraço


Vinicius2k
   - 03 set 2004


Citação:
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:


Martins
   - 03 set 2004

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:

#Código


{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
http://www.clubedelphi.net


Martins
   - 03 set 2004

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:

#Código


{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
http://www.clubedelphi.net