Progr'amador Postado Maio 14, 2011 Denunciar Share Postado Maio 14, 2011 Oláeu to usando a função abaixo pra limpar todos os edits do formfor 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Maio 14, 2011 Denunciar Share Postado Maio 14, 2011 Oláeu to usando a função abaixo pra limpar todos os edits do formfor 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 15, 2011 Denunciar Share Postado Maio 15, 2011 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, ocó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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Maio 16, 2011 Autor Denunciar Share Postado Maio 16, 2011 (editado) 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 TabSheetsprocedure 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çoCaro 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. ;)valeuabs Progr'amador Editado Maio 16, 2011 por Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Progr'amador
Olá
eu to usando a função abaixo pra limpar todos os edits do form
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
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.