FocusControl - Dica 11 revista Clube Delphi nº 60
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
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
Curtidas 0
Respostas
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:
não testei
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
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
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
07/03/2005
Só tem um label associado com cada edit?
Atribua a todos os OnEnter´s este manipulador:
O problema é que o código executa mesmo que o foco tenha sido dado com o mouse.
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