Fórum Foco em componente ativo #262465

17/12/2004

0

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

Responder

Posts

17/12/2004

Fórum Vini

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;


Responder

Gostei + 0

17/12/2004

Tinorj

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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar