as linhas marcadas para exclusao e executar a exclusao sao similares ao descrito anteriormente para update. As diferencas sao: Deve ser compilado um comando DELETE ao inves de updade. O comando para processar automaticamente as exclusoes e SalTblDoDeletes Para o metodo manual a funcao SalTblFindNextRow deve procurar por linhas marcadas com o flag ROW_MarkDeleted. O flag que deve ser removido com a funcao SalTblSetRowFlags deve ser ROW_MarkDeleted. Na pratica as alteracoes sao simples e mostradas abaixo, desta vez num unico bloco de comandos: A unica funcao nova neste trecho de codigo e SalTblDoDeletes que, de forma similar a como foi visto anteriormente, exclui da table window as linhas marcadas para exclusao. Alias, este e o unico ponto que falta para o programa suportar totalmente a exclusao de linhas. Na table window do Team Developer ha uma forma tradicional de marcar linhas para serem excluidas, basta clicar duplamente na area cinza que antecede a linha, area conhecida como row header. Ha um evento para capturar o clique e o clique duplo nesta regiao. O evento chama-se SAM_RowHeaderDoubleClick e e acionado pelo Team Developer sempre que o usuario realiza um clique duplo no header da linhas. Neste exemplo utilizaremos este evento para marcar a linha para ser excluida. O trecho de codigo abaixo ilustra isso: Desta forma, sempre que o usuario clicar duas vezes no header da linha ela sera marcada para excusao (ROW_MarkDeleted = TRUE ). Para remover ROW_MarkDeleted sera utilizado o clique simples na linha. Conforme mostrado abaixo: Desta forma o usuario pode marcar para exclusao quantas linhas quiser, e depois comanda a exclusao em serie de todas as linhas marcadas para serem excluidas. Inserindo linhas na table window A inclusao de novas linhas na table window pode (visualmente) ser feita de duas formas. Podemos inserir uma linha nova no inicio ou final da tabela e mover o foco para a linha para que o usuario possa inserir os dados da nova linha. Outra forma e abrindo um espaco reservado para linhas novas chamado no Team Developer de Split Window. Nesta area reservada as linhas ficam fixas e nao desaparecem caso o usuario role as linhas para cima/baixo com as setas de scroll da table window. Para efeitos didaticos faremos de todas estas formas. Para inserir uma linha nova no topo da table window Set nRow = SalTblInsertRow( hWndForm, 0 )Call SalTblSetFocusCell( hWndForm, nRow, tblCOMPANY.colCOMPANY_ID, 0, 0 ) Para inserir uma linha nova no rodape da table window Set nRow = SalTblInsertRow( hWndForm, TBL_MaxRow )Call SalTblSetFocusCell( hWndForm, nRow, tblCOMPANY.colCOMPANY_ID, 0, 0 ) Para criar uma split window e inserir a nova linha dentro da Split Window Call SalTblDefineSplitWindow( hWndForm, 3, TBL_Split_Adjustable )Set nRow = SalTblInsertRow( hWndForm, TBL_MinSplitRow )Call SalTblSetFocusCell( hWndForm, nRow, tblCOMPANY.colCOMPANY_ID, 0, 0 ) Como e possivel observar a codificacao e muito parecida, portanto esta destacado em sublinhado os trechos que diferem. No exemplo que voce podera fazer download, o programa faz duas perguntas para identificar se deve criar a split window ou se deve inserir a linha nova no topo ou no rodape da table window. Vaja abaixo as perguntas