Fórum FocusControl - Dica 11 revista Clube Delphi nº 60 #271314

07/03/2005

0

Oi pessoal


Quando um TDBEdit recebe o foco existe um TLabel associado a ele pela propriedade FocusControl, gostaria de fazer uma função generica, mas com acessar o Tlabel se só tenho o TDBEdit. No exemplo da revista e possivel pois ele percorre todos os Tlabels, acho que deve existir uma maneira visto que se colocar ´&´ no Tlabel e se o usuário do software pressionar ALT+ ´Letra´ ele foca no DBEdit, grato a quem pude ajudar..

Flávio


Frcjf

Frcjf

Responder

Posts

08/03/2005

Marcelo Saviski

vc tb poderia deixar o label com um nome parecido com o DBEdit, tipo

Nome DBEdit = edtNome
Nome Label = lblNome

ai vc procuraria o label assim:
var
  Label: TComponent;
  NomeComp: string;
begin
  NomeComp := ActiveControl.Name;
  NomeComp := Copy(3, Length(NomeComp) - 3);
  Label := FindComponent(´lbl´ +NomeComp);
  if Label is TLabel then
    with TLabel(Label) do
    begin
      Font.Style := [sBold];
    end;
end;


não testei


Responder

Gostei + 0

08/03/2005

Frcjf

Caro Marcelo

Grato pela atenção, mas desta maneira teria muito trabalho renomeando os componentes, ou até poderia deixar os nomes padrões que daria certo, mas minha idéa era descobrir o seguinte, se você coloca o caracter ´&´ no label e quando em execução você pressiona ALT e a ´X´ por exemplo o foco cai no controle daí queria descobrir o comando que ao receber o foco ele descobrisse qual label esta associado...

valeu

Flávio


Responder

Gostei + 0

08/03/2005

Beppe

Só tem um label associado com cada edit?

Atribua a todos os OnEnter´s este manipulador:
procedure TForm1.Edit1Enter(Sender: TObject);
var
  I: Integer;
  L: TLabel;
begin
  for I := 0 to TControl(Sender).Parent.ControlCount - 1 do
    if (TControl(Sender).Parent.Controls[I] is TLabel) then
    begin
      L := TLabel(TControl(Sender).Parent.Controls[I]);
      if L.FocusControl = Sender then
      begin
        // L é o label associado
        Exit;
      end;
    end;
end;


O problema é que o código executa mesmo que o foco tenha sido dado com o mouse.


Responder

Gostei + 0

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

Aceitar