Forum
See question

Limpar os vários controles de um CustomTab   

92 views
1
0

Bom dia, sei que esta pergunta já é duplicada mas na anterior não houve respostas.

https://developers.ila.cegid.com/forum/como-efectuar-na-customtab-o-clear-dos-varios-controles/

Necessito de saber de como efetuar clear dos vários controles que desenhados numa CustomTab , depois de gravar ou antes de criar um artigo.

Basicamente estou a criar os artigos com as características errada quando crio dois artigos seguidos por exemplo. Isto acontece como não «limpa» com controlos assume sempre os dados do artigo anterior.

Se alguem já tiver ultrapassado este problema agradeço ajuda. Obrigado.

 

 

Faça login para poder traduzir
V10
Marked as spam
Created 2 years and 8 months ago paulosantosdacunha
3 answers
0
Private answer

Ola bom dia obrigado pela ajuda, consegues controlar tambem quando clicamos no botão "Novo"? Ainda me falta isso...

Faça login para poder traduzir
Marked as spam
Created 2 years and 8 months ago paulosantosdacunha
    Comments
    Como assim? Limpar os controlos quando se carrega num botão? Basta chamar a função no evento do Click do botão
    2 years and 8 months ago
    ricardogiro
      O único evento que me parece dar é no "antes de criar", no entanto ele dispara antes do form estar aberto, como o objecto não existe dá erro e bem .... mas se existirem dados no custom tab, e clicas em novo, ele grava de forma errada os últimos dados carregados ...dai ter de limpar, no "depois de gravar", no "DepoisDeAnular" mas no novo não consegui controlar...
      2 years and 8 months ago
      paulosantosdacunha
        0
        Private answer

        A solução do @filipesantos é elegante, mas tenho uma outra opção. Eu gosto de ter "funções de suporte" que transporto de um projecto para outro e uma delas faz exactamente isso que precisa.

        public static class HelperFunctions
        {
            public static void LimpaControlos(Control container)
            {
                foreach (Control control in container.Controls) {
                    if (control is TextBox textBox) {
                        textBox.Text = "";
                    }
                    else if (control is CheckBox checkBox) {
                        checkBox.Checked = false;
                    }
                    else if (control.HasChildren) {
                        // Se o controlo tiver Children, corre a função para as children recursivamente
                        ClearTextBoxesAndCheckboxes(control);
                    }
                }
            }
        }

        A este código é possivel adicionar quaisquer tipos de controlos. Eu trabalho mais com WinForms por isso não tenho de lidar muito com os controlos Primavera. No entanto, presumo que não seja dificil de os identificar e usar nesta função.
        Para chamar esta função, basta usar algo como:

        HelperFunctions.LimpaControlos(customTab1);
        HelperFunctions.LimpaControlos(form1);

         

        Faça login para poder traduzir
        Marked as spam
        Created 2 years and 8 months ago ricardogiro
        ricardogiro Loyal Contributor
          Comments
          Ola bom dia obrigado pela ajuda, consegues controlar tambem quando clicamos no botão "Novo"? Ainda me falta isso...
          2 years and 8 months ago
          paulosantosdacunha
            2
            Private answer

            Boa tarde,

            na dll onde cria a CustomTab deve declarar um método para limpar os controlos pretendidos.
            Quando pretender limpar os controlos, basta no evento pretendido, instanciar a CustomTab em questão e chamar o método criado para limpar os controlos.
            Exemplo:

            - Limpar uma textBox criada num CustomTab da ficha do artigo

             

            Faça login para poder traduzir
            Marked as spam
            Created 2 years and 8 months ago filipesantos
            f
            filipesantos Iniciante