FocusControl - Dica 11 revista Clube Delphi nº 60

Delphi

07/03/2005

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

Curtidas 0

Respostas

Marcelo Saviski

Marcelo Saviski

07/03/2005

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


GOSTEI 0
Frcjf

Frcjf

07/03/2005

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


GOSTEI 0
Beppe

Beppe

07/03/2005

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.


GOSTEI 0
POSTAR