Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Limpar varios Edits


Progr'amador

Pergunta

Olá

eu to usando a função abaixo pra limpar todos os edits do form

for i := 0 to ComponentCount -1 do
     if Components[i] is TEdit then
        TEdit(Components[i]).Clear;

só que agora to precisando de algo mais.

Nesse form tenho um PageControl com 3 TabSheets (TabSheet1, TabSheet2, TabSheet3)

e eu queria que essa função limpasse apenas os edits do um determinado TabSheet.

Abs Progr'amador

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Olá

eu to usando a função abaixo pra limpar todos os edits do form

for i := 0 to ComponentCount -1 do
     if Components[i] is TEdit then
        TEdit(Components[i]).Clear;
só que agora to precisando de algo mais. Nesse form tenho um PageControl com 3 TabSheets (TabSheet1, TabSheet2, TabSheet3) e eu queria que essa função limpasse apenas os edits do um determinado TabSheet. Abs Progr'amador
tente algo assim:
if PageControl1.TabIndex = 0 then
    begin

     for i := 0 to ComponentCount -1 do
     if Components[i] is TEdit then
        TEdit(Components[i]).Clear;

     end
     else
  if PageControl1.TabIndex = 1 then
    begin

     for i := 0 to ComponentCount -1 do
     if Components[i] is TEdit then
        TEdit(Components[i]).Clear;

     end
     else
  if PageControl1.TabIndex = 2 then
    begin

     for i := 0 to ComponentCount -1 do
     if Components[i] is TEdit then
        TEdit(Components[i]).Clear;

     end;

Link para o comentário
Compartilhar em outros sites

  • 0

amigo robinhocne, veja o help do delphi para o ComponentCount

Nota: O ComponentCount de um componente contém o mesmo número de itens na lista de Componentes para aquele componente, e sempre é 1 a mais que o Componente de mais alto indice, porque o primeiro índice de Componentes sempre é 0.
então de acordo com o seu exemplo, independente de o foco estar um um determinado tabsheet do pagecontrol, o

código :

for i := 0 to ComponentCount -1 do
  if Components[i] is TEdit then
     TEdit(Components[i]).Clear;
fará com que todos os edits econtrados dentro do formulário que contem o pagecontrol, sejam limpos.
Nesse form tenho um PageControl com 3 TabSheets (TabSheet1, TabSheet2, TabSheet3) e eu queria que essa função limpasse apenas os edits do um determinado TabSheet.
então orientando a voce e respondendo ao nosso colega, a lógica é: da mesma maneira que voce testa se o componente é um TEdit, voce tambem deve testar se esse Tedit está dentro de um Tabsheet especifico. mas para isso, deve existir um diferencial nos componentes TEdit para que voce possa procura-los entre tantos outros. para diferenciar um grupo de TEdits, é necessario usar a propriedade TAG do componente... então para exemplificar: se temos um PageControl e nele temos 3 TabSheets e dentro de cada TabSheet temos 3 TEdits, devemos então na propriedade TAG dos TEdits colocar um valor, de preferencia o mesmo valor do TabSheet: exemplo: Para o TabSheet1 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 1 Para o TabSheet2 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 2 Para o TabSheet3 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 3 depois é só implementar o código de verificação Então por exemplo: quero que somente os Edits do TabSheet2 sejam limpos e não os outros Edits das outras TabSheets
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
   if PageControl1.ActivePageIndex = 1 then   // TABSHEET = 2
      begin
         for i := 0 to ComponentCount -1 do
           if (Components[i] is TEdit) and
              (TEdit(Components[i]).Tag = 2)  then  // TAG DOS EDITS = 2
              TEdit(Components[i]).Clear;
      end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
se temos um PageControl e nele temos 3 TabSheets e dentro de cada TabSheet temos 3 TEdits, devemos então na propriedade TAG dos TEdits colocar um valor, de preferencia o mesmo valor do TabSheet:

exemplo:

Para o TabSheet1 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 1

Para o TabSheet2 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 2

Para o TabSheet3 voce coloca em todos os Edits contidos nele, atraves do object inspector, na propriedade TAG desses Edits o valor 3

depois é só implementar o código de verificação

Então por exemplo: quero que somente os Edits do TabSheet2 sejam limpos e não os outros Edits das outras TabSheets

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
   if PageControl1.ActivePageIndex = 1 then   // TABSHEET = 2
      begin
         for i := 0 to ComponentCount -1 do
           if (Components[i] is TEdit) and
              (TEdit(Components[i]).Tag = 2)  then  // TAG DOS EDITS = 2
              TEdit(Components[i]).Clear;
      end;

end;

abraço

Caro colega, valeu.... depois que eu postei pensei e usei esse método.

só que pensei que teria uma outra forma mais adequada.

fiquei muito tempo sem programar.... to voltando a ativa. ;)

valeu

abs Progr'amador

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...