Fórum FocusControl - Dica 11 revista Clube Delphi nº 60 #271314
07/03/2005
0
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
Curtir tópico
+ 0Posts
08/03/2005
Marcelo Saviski
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
08/03/2005
Frcjf
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
08/03/2005
Beppe
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
Clique aqui para fazer login e interagir na Comunidade :)