Foco em componente ativo

Delphi

17/12/2004

Olá programadores.

Como posso mandar o foco para o componente ativo.

Exemplo:

Edit1, Edit2, Edit3.

Tenho um por padrao o foco para Edit1, mas em certas situações ele esta desativado. como mandar o foco para o edit ativo.?


Macario

Macario

Curtidas 0

Respostas

Fórum Vini

Fórum Vini

17/12/2004

Olá,
tente assim:
var
  cont: Integer;
  comp: TComponent;
begin
  for cont:= 0 to FormTal.ComponentCount - 1 do
  begin
    comp:= FormTal.Components[cont];
    if ( comp is TEdit ) then
      if ( comp.Enabled ) then
        comp.setFocus();
  end;

Faço as duas verificações porque não sei se o ´Boolean Short Circuit´ está ativado. Eu também guardo a referência do componente( comp ) para que não seja necessário executar 2 vezes a busca por ele na propriedade Components :wink:

Espero ter ajudado,
Vinicius;


GOSTEI 0
Tinorj

Tinorj

17/12/2004

Este procedimento eu fiz só com TEdit, basta vc implementar o restante dos testes.

Nos eventos OnEnter e OnExit dos componentes vc aponta para esta rotina.

procedure TForm1.TestarFoco(Sender: TObject);

  function iif(Conditional: Boolean; CondTrue,
    CondFalse: Variant): Variant;
  begin
    if Conditional then
      Result := CondTrue
    else
      Result := CondFalse;
  end;

var
  I: integer;
begin
  for i := 0 to ComponentCount - 1 do
    if (Sender IS TEdit) then
      TEdit(Sender).Color := iif(Sender = ActiveControl, clMoneyGreen, clWindow);
end;



GOSTEI 0
POSTAR