Fórum Campo obrigatório em PageControl #351087

26/12/2007

0

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:

    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

Powerlog Tecnologia

Responder

Posts

07/01/2008

Powerlog Tecnologia

sobe


Responder

Gostei + 0

08/01/2008

Asales

powerlog,

tente fazer algo como:

if edit1.parent = tabsheet3 then
begin
pagecontrol1.ActivePage:= tabsheet3;
edit1.setfocus;
end;


Responder

Gostei + 0

08/01/2008

Powerlog Tecnologia

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 ...


Responder

Gostei + 0

09/01/2008

Devmedia

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.

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.


Responder

Gostei + 0

10/01/2008

Djjunior

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



Responder

Gostei + 0

10/01/2008

Powerlog Tecnologia

Show de bola djjunior !!! Deu certo !!!


Responder

Gostei + 0

10/01/2008

Powerlog Tecnologia

Só para complementar, meu código final ficou assim:

            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

:!:


Responder

Gostei + 0

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

Aceitar