Campo obrigatório em PageControl
Olá pessoal,
Tenho uma rotina que passa por todos os componentes do form e verifica, através do TAG, se o campo é obrigatório. Caso esteja vazio dá uma mensagem e joga o foco.
Até aí minha função dava certo, até que em uma tela o foco estava dentro de uma aba.
Pedaço do código da função:
Minha dúvida: como eu sei se o Components(I) está dentro de um [b:d0279603d1]PageControl[/b:d0279603d1] , para dar o ´pagecontrol.activepage ...´ antes do setfocus ?
Valeu :!:
Tenho uma rotina que passa por todos os componentes do form e verifica, através do TAG, se o campo é obrigatório. Caso esteja vazio dá uma mensagem e joga o foco.
Até aí minha função dava certo, até que em uma tela o foco estava dentro de uma aba.
Pedaço do código da função:
with xForm do begin for I := ComponentCount - 1 downto 0 do begin if Components[I].Tag = xTag then begin try if (Components[i] is TEdit) and (TEdit(Components[i]).text = ´´) then begin TEdit(Components[i]).SetFocus; xErro := true; break; end... etc...
Minha dúvida: como eu sei se o Components(I) está dentro de um [b:d0279603d1]PageControl[/b:d0279603d1] , para dar o ´pagecontrol.activepage ...´ antes do setfocus ?
Valeu :!:
Powerlog Tecnologia
Curtidas 0
Respostas
Powerlog Tecnologia
26/12/2007
sobe
GOSTEI 0
Asales
26/12/2007
powerlog,
tente fazer algo como:
if edit1.parent = tabsheet3 then
begin
pagecontrol1.ActivePage:= tabsheet3;
edit1.setfocus;
end;
tente fazer algo como:
if edit1.parent = tabsheet3 then
begin
pagecontrol1.ActivePage:= tabsheet3;
edit1.setfocus;
end;
GOSTEI 0
Powerlog Tecnologia
26/12/2007
Essa função está em uma unit a parte de funções e não dentro do form. Preciso de algo bem genérico, que não dependa de nome do componente e sim do tipo de componente ...
GOSTEI 0
Devmedia
26/12/2007
Amigo powerlog.
Tudo bom cara?
Olha, vendo seu código acima. Vi que está correto. Agora, me bateu uma dúvida.
Quantas TabSheet voce tem dentro da PageControl?
Já tentou buscar o parent do edit?
Estou sem o Delphi aqui. Mas pensando aqui numa possibilidade. Teste ai.
Talvez não funcione. Mas não custa tentar.
Não sei. se vai funcionar. Mas a idéia seria esta.
Quando chegar em casa. Vou pesquisar melhor.
Mas desde já. Procure algo sobre localização do componente associado a Parent no Form.
Um abraço.
Tudo bom cara?
Olha, vendo seu código acima. Vi que está correto. Agora, me bateu uma dúvida.
Quantas TabSheet voce tem dentro da PageControl?
Já tentou buscar o parent do edit?
Estou sem o Delphi aqui. Mas pensando aqui numa possibilidade. Teste ai.
Talvez não funcione. Mas não custa tentar.
var qualesta : String; begin qualesta := TEdit(Components[i]).Parent; PageControl.ActivePage := qualesta TEdit(Components[i]).SetFocus;
Não sei. se vai funcionar. Mas a idéia seria esta.
Quando chegar em casa. Vou pesquisar melhor.
Mas desde já. Procure algo sobre localização do componente associado a Parent no Form.
Um abraço.
GOSTEI 0
Djjunior
26/12/2007
algo bem genérico seria
if Edit1.Parent.ClassType = TTabSheet then// o Parente não é o pageControl e sim o a página proriamente dito TPageControl(TTabSheet(Edit1.Parent).Parent).ActivePageIndex := TTabSheet(Edit1.Parent).TabIndex
GOSTEI 0
Powerlog Tecnologia
26/12/2007
Show de bola djjunior !!! Deu certo !!!
GOSTEI 0
Powerlog Tecnologia
26/12/2007
Só para complementar, meu código final ficou assim:
com esse ´if´ para cada tipo de controle que eu uso (edit, combo, radiogroup, etc)
Valeu
:!:
else if (Components[i] is TEdit) and (TEdit(Components[i]).text = ´´) then begin //dentro do tabsheet if TEdit(Components[I]).Parent.ClassType = TTabSheet then// o Parente não é o pageControl e sim o a página proriamente dito TPageControl(TTabSheet(TEdit(Components[I]).Parent).Parent).ActivePageIndex := TTabSheet(TEdit(Components[I]).Parent).TabIndex; TEdit(Components[i]).SetFocus; xErro := true; break; end
com esse ´if´ para cada tipo de controle que eu uso (edit, combo, radiogroup, etc)
Valeu
:!:
GOSTEI 0