desabilitar componentes através de uma variavel
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.
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
Curtidas 0
Respostas
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
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!
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
20/07/2006
Adapte à tua necessidade:Lembrando que estou supondo que este código será implementado como método de um controle (um formulário por exemplo).
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;
GOSTEI 0
Night_man
20/07/2006
if (FindComponent(Caption) <> nil) then (FindComponent(Caption) as TControl).Enabled := False;
GOSTEI 0
Night_man
20/07/2006
if (FindComponent(XYZ) <> nil) then (FindComponent(XYZ) as TControl).Enabled := False;
GOSTEI 0
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