sábado, 25 de julho de 2009

Dicas de Programação

Prosseguindo com as dicas ...

11- Construa (ou modifique) seus menus através de uma interface amigável e de fácil utilização. Em modo de Design coloque o foco no objeto top level que você deseja configurar o menu, clique com o botão direito do mouse e acione o menu chamado Menu Editor. Na versão 5.2 você terá um incentivo a mais para utilizar o Menu Editor, através dele é possível adicionar imagem (ícone ou bitmap) a um item de menu, que, a propósito, no TD5.2 poderá ser mostrado também como Ribbon Bar.

12- Procure não utilizar as funções SqlImmediate () e SqlExists () em laços (while e loop) pois estas funções utilizam um handle sql interno de forma padrão, ou seja, não otimizada. Vindo a ser responsáveis pela maioria dos problemas de performance em sistemas.

13- Antes de imprimir seu programa fonte, configure as opções de impressão no menu File/Page Settings. Certifique-se de que selecionou o radio button Selection Only, caso contrário todo o seu outline será impresso.

14- Cuidado ao utilizar a função SalPostMsg () - a sua utilização exagerada pode fazer o aplicativo "sentar", ou seja, ficar muito lento.

15- Quando estiver em modo Design e quiser configurar o Grid basta acionar o menu Tools / Preferences e selecionar a guia Presentation. Lá você poderá configurar se o Grid estará ativo ou não além de especificar sua altura e largura.

16- Para pegar o handle de um objeto que não possua handle, como background text e group box, utilize a função SalGetFirstChild (hWndForm, TYPE_BackgroundText) que retornará o handle do primeiro background encontrado na sua tela. Utilize a função SalGetNextChild para obter o próximo background e para saber que encontrou o objeto correto utilize SalGetWindowText. Lembre-se de setar bStaticAsWindow = TRUE no App_Startup da sua aplicação.

17- Sempre que você for alterar um componente COM previamente registrado lembre-se de desregistrá-lo do seu servidor. É muito simples, basta acionar o menu Project Un-register Server.

18- Utilize a função GetUserDefaultLangID( ), definida na biblioteca kernel32.dll, para identificar o idioma default do Windows em que o aplicativo está sendo executado. Assim você pode facilmente identificar o idioma e carregar o seu aplicativo devidamente "traduzido" para o idioma nativo. Consulte o capítulo 13 do livro Programando com o CTD2000 para maiores detalhes e exemplos.

19- Lembre-se que o comando de busca do SQLWindows, menu Edit/Find, baseia-se na parte do outline que está atualmente carregada na janela Detail, ou seja, na janela mostrada do lado direito do mdi principal do SQLWindows. Por exemplo: Se você procura por um determinado datafield mas a janela Detail do SQLWindows esta mostrando o conteúdo da seção Internal Funcions, o SQLWindows não encontrará o objeto.

2 comentários:

geofrey disse...

Ótimas dicas Lairton!
Com relação a de número 12, quando utilizo a função SqlImmediate, mesmo depois de executar a função SQLClearImmediate, um colega do trabalho me chamou atenção pela ferramenta Activity Monitor do Sql Server, que a transação criada no banco continua aberta, a mesma só é finalizada quando encontra um Commit, não importando qual o SqlHandle. Eu utilizo a versão 1.5 do Centura.

lairton disse...

Olá Geofrey, na medida do possível tente não utilizar mais as funções SQLImmediate e derivadas. Elas foram descontinuadas e essa é a recomendação da Unify.

Se precisar de ajuda na migração pode contar comigo.