desabilitar componentes através de uma variavel

Delphi

20/07/2006

blz amigos,

estou com um problema que não consigo resolver, queria saber se é possivel desabilitar um componente qualquer através do valor de uma variavel.

Ex:.
tenho vários componentes - button1, button2, edit1 ... e uma variavel com o nome xyz, durante a execução do sistema está variavel recebe o valor de button1, a questão é se eu posso desabilitar este componente, que no caso é um botão de nome button1 em tempo de execução.

O valor da variavel pode mudar a qualquer momento dependendo do valor que o usuario informa.


agradeço!
Pestana.


Pestana

Pestana

Curtidas 0

Respostas

Rjun

Rjun

20/07/2006

O problema é saber quando o valor foi alterado. Você pode criar um método para definir o valor da sua variável e nesse método alterar o valor do seu componente:

procedure SetValueXYZ(string valor)
begin
  xyz = valor;
  button1.Enabled = (xyz = ´AlgumaCoisa´);
end;



GOSTEI 0
Pestana

Pestana

20/07/2006

Rjun entendi que vc passou, mas talvés eu não fui bem claro na minha pergunta,

eu não sei qual vai ser o componente, o nome do componente vai ser definido atraves do valor desta variavel xyz.

ex.: a variavel xyz recebe como valor uma string, p.ex: ´edit1´ (isso quem define é o usuario). apartir dai eu sei que o componente que o usuario quer desabilitar e o ´EDIT1´, então eu presciso procurar no form o componente que tenha o nome que foi definido na variavel, para então desabilitar.


agradeço!


GOSTEI 0
Bruno Belchior

Bruno Belchior

20/07/2006

Adapte à tua necessidade:
function AlteraStatus(const ComponentName: string;
  NextEnabled: Boolean): Boolean;
var
  Cont: Smallint;
begin
  Result := False;
  for Cont := 0 to ControlCount-1 do
  begin
    Result := Controls[Cont].Name = ComponentName;
    if Result then
    begin
      Controls[Cont].Enabled := NextEnabled;
      Exit;
    end;
  end;
end;
Lembrando que estou supondo que este código será implementado como método de um controle (um formulário por exemplo).


GOSTEI 0
Night_man

Night_man

20/07/2006

  if (FindComponent(Caption) <> nil) then
    (FindComponent(Caption) as TControl).Enabled := False;



GOSTEI 0
Night_man

Night_man

20/07/2006

  if (FindComponent(XYZ) <> nil) then 
    (FindComponent(XYZ) as TControl).Enabled := False;



GOSTEI 0
Bruno Belchior

Bruno Belchior

20/07/2006

Hum... foi realmente uma solução melhor, mas só para complementar e ser mais seguro:
var
  Componente: TComponent;
begin
  Componente := FindComponent(´Name´);
  if Assigned(Componente) and (Componente is TControl) then
    (Componente as TControl).Enabled := False;
end;



GOSTEI 0
POSTAR