Você está na página 1de 242

 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

900 Dicas Delphi


Perdoenos mas o site aida esta em contrução
160 dicas delphi

 1- Mostrar e esconder o Botão Iniciar

 2- Mostrar e esconder a Barra de Tarefas

 3- Pegando o nome do usuário e a empresa do Windows

 4- Arrastar um Form sem clicar no caption

 5- Bloquear a tecla CTRL+DEL do DBGrid

 6- Escondendo a aplicação da Barra de Tarefas

 7- Verificando atributo do arquivo

 8- Fazer um BEEP no Computador

 9- Fazer uma pausa por um período determinado

 10- Desabilitando o Splash Screen do Report Smith

 11- Lendo o volume do HD

 12- Descobrindo o número serial do HD

 13- Para saber somente o Path da aplicação

 14- Interceptar as teclas de função (F1, F2, F3...)

 15- Traduzindo a mensagem: “DELETE RECORD?”

 16- Incluir um Preview personalizado no Quick Report

 17- Executando programas externos

 18- Utilizando a tecla enter para saltar de campo

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 1/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 19- Tocando um som wav sem o media player

 20- Obter o diretório onde seu programa está instalado

 21- Bloqueando um arquivo em ambiente de rede

 22- Usando Enter para mudar de campo de um DBGrid

 23- Função para obter o número do registro atual

 24- Enviando um arquivo para a lixeira

 25- Carregar um cursor animado (*.ANI)

 26- Transferir o conteúdo de um Memo para o MemoField

 27- Capturar o conteúdo do Desktop

 28- Escrevendo um texto diagonal usando o canvas

 29- Extrair um ícone de um determinado aplicativo

 30- Alinhando itens do menu à direita


31- Abrir automaticamente seu navegador padrão e carregar a pagina determinada
pelo link

 32- Copiar registros de uma tabela para outra incluindo valores Null

 33- Deletar arquivos de um diretório com o caractere curinga „*‟

 34- Capturar a lista de aliases disponíveis

 35- Abrir e fechar a bandeja do drive de CD-ROM

 36- Código usados pelas impressoaras HP

 37- Copiando arquivos via Delphi

 38- Abrir um TComboBox sem clicá-lo

 39- Mudar a cor da célula ativa do DBGrid

 40- Como incrementar 1 mês numa data

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 2/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 41- Verificar se existe disquete do drive

 42- Acessar o ambiente DOS

 43- Executar um Programa DOS e fechar sua janela em seguida

 44- Instanciar uma única vez um executável correspondente a uma determinada


aplicação

 45- Modificar varias propriedades de um objeto ao mesmo tempo

 46- Para emitir um som quando o enter for pressionado

 47- Margem para RichText

 48- Criar alias via programação

 49- Desabilitar as teclas de acesso (CTRL+ALT+DEL), (ALT+TAB), (CTRL+ESC)

 50- Fazer um Splash Screen

 51- Função para encriptar uma string

 52- Função reverter uma string

 53- Função para converter um numero inteiro para binário

 54- Função para converter um numero binário para inteiro

 55- Função para Encriptar e Descriptar uma String

 56- Rotina para verificar erros em toda a aplicação

 57- Enviando informações direto para a impressora

 58- Enviando caracteres diretamente ao buffer da impressora

 59- Imprimir diretamente para a impressora sem passar pelo gerenciado de impressão

 60- Criar barra de status com suporte „as caixas de edição do Windows 95

 61- Capturando uma tela do Windows

 62- Compactação de uma tabela Paradox

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 3/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 63- Configurações internacionais

 64- Listando todas as janelas abertas

 65- Primeira letra de um EditBox maiúscula

 66- Desligar e ligar o monitor (OFF/ON)

 67- Invertendo os botões do mouse

 68- Mudar o papel de parede do Windows

 69- Acessando arquivos paradox em rede

 70- Pesquisa incremental numa tabela

 71- incluir mais de uma linha no Hint

 72- Como saber se o aplicativo já foi aberto

 73- Mostrar e alterar resolução de vídeo

 74- Verificar sistema operacional


75- Nome do usuário logado na rede
 76- Capturar o nome das tabelas de um banco de dados

 77- Tabela dos caracteres especiais utilizados como mascara.

 78- Traduzir captions e botões da MESSAGEDLG

 79- Ultimo acesso de um arquivo

80- Obtendo as informações de versão dos arquivos


 81- Acertar padrão de data

 82- Colocar um Bitmap num ComboBox

 83- Adicionando um BookMarks

 84- Inserindo um ComboBox num DBGrid

 85- Como conectar uma unidade de rede

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 4/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 86- Configurar uma rede Novell

87- Configuração de rede Windows 95/98 com Delphi


 88- Criar um arquivo (Bando de dados) em tempo de execução

 89- Controle sobre a digitação

 90- Criar arquivo DBF com índices compostos

 91- Sistemas em Delphi para Linux

 92- Desenhar um Bitmap no Formulário

 93- Evitando a saída de formulário

 94- Desabilitando simultaneamente as teclas ( ALT + F4 )

 95- Filtrando registros

 96- Como saber se um form já esta criado

 97- Não redimensionar o formulário

 98- Criando forms dinamicamente (SDI)

 99- Criando forms dinamicamente (MDI)

 100- Definindo o tamanho mínimo e máximo de um form

 101- Para fazer protetor de tela com o Delphi

 102- Linkar um OBJ ao executável

 103- Alterar LOCAL SHARE via programação

 104- Verificando se o Delphi está aberto

 105- Criando formulários

 106- Desabilitar acesso a windows

 107- Impressão com o TPrinter ( Via gerenciador de impressão)

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 5/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 108- Definir o tamanho do papel em TPrinter

 109- Como criar Forms em tempo de execução

 110- Adaptando para resoluções de video diferentes?

 111- Como posso rolar um form usando pgUP and pgDn.

 112- Colocar Funções em uma DLL

 113- Verifica validade de CGC e CPF

 114- Gera número por extenso

 115- Preenche com quantidade determinada de zeros o lado esquerdo de uma string

 116- Ponto Decimal

 117- FindNearest numa Query

 118- Relatórios em HTML

 119- Desligando Windows via programação


120- Como saber se o CD está no drive
 121- Tradução de Mensagens Delphi 3

 122- Função que devolve tempo decorrido em uma string

 123- Criando uma rotina para pegar todos os erros do programa.

 124- Saindo do Windows

125- Modificando a posição do cursor em um Memo


 126- Fundo do texto transparente

 127- Formatação de Casas Decimais

 128- Como Limpar Todos os Edit's de um Form de uma só vez?

 129- Alterando cor de linha de um DBGrid

 130- Diretório de instalação do windows

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 6/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 131- Exclusividade para o programa

132- Substituindo TAB pelo ENTER


 133- Inserir um item em um TreeView em Run Time

 134- Copiando arquivos

 135- Armazendo BMP‟s em arquivos RES

 136- QR armazenado num Blop

 137- Deletando um arquivo

 138- Diretório Windows e System

 139- Como fazer um 'Hot Link'

 140- Formatar disquete.

 141- Como detectar as teclas de “seta”.

 142- Caps Lock e Num Lock

 143- BDE em 1 disqiete

 144- Cor de fundo do hint

 145- Mostrando progresso de uma SQL

 146- Transforma uma string em um valor

 147- Checa CEP

 148- Valida PIS

 149- Testa CGC

 150- Desconecta da Rede uma unidade mapeada.

 151- Sugestão para tratamento de erros no Delphi / Cliente-Servidor

 152- Gerenciando mais de uma linha selecionada num DBGrid (Multiselect)

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 7/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 153- Procura e substituição de string num campo memo

 154- Trunca um numero definido de casas decimais em um valor float

 155- Pequisa incremental em um listbox

 156 - Escreve um texto e converte-o em Imagem

 157- Converte um valor Hexadecimal em Integer

 158- Criando e apagando TFields em Run-Time

 159- Utilizar o MessageBox com parâmetros

 160- Como mudar a resolução do vídeo via programação

 161- Como rodar vídeos em um panel

 162- Validar datas

 163- Como gerar senhas aleatórias

 164- Mostrar a largura das colunas de um dbgrid igual ao seu tamanho (campo) na
tabela

 165- Como colocar seus programas no Painel de Controle

 166- Criando um efeito degradê de cores

 167- Utilizando a Função DayOfWeek

 168- Coloca uma máscara númerica em uma String com números

 169- Imprime um texto em outro angulo diferente de 90º

 170- Chama arquivos BMP de uma Dll

 171- Rotina de resgate das variáveis de ambiente DOS

 172- Executa uma url com o Browser padrão

 173- Retorna os programas que estão abertos na memória

 174- Promove um estado de espera no aplicativo

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 8/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 175 - Retorna a impressora Padrão do windows

 176- Obtendo a velocidade do processador

 177- Testa se a hora é antes de Meio dia

 178- Quantos fins de semana já se passaram no corrente ano

 179- Obtendo o último dia útil caso a data informada caia em um fim de semana

 180- Obtendo o próximo dia útil caso a data informada caia em um fim de semana

 181- Remove um diretorio

 182- Localizando um nó do treeview pelo nome

 183- Remove ponto ou virgula de um valor numérico

 184- Converte uma String em Real

 185- Trunca um numero definido de casas decimais em um valor float

 186- Troca a virgula pelo ponto em um valor Float


187- Insere a barra invertida de diretório após o nome especificado.
 188- Converte String em Pchar

 189- Converte String em Booleano

 190- Filtra todos os números de uma string

 191- Função para impressão de linhas em um relatório

192- Remove os zeros a frente de um valor


 193- Remove um caractere especificado de uma string

 194- Remove acentos de uma string

 195- Imprime um campo memo

 196- Compara dois valores e retorna o menor

 197- Compara dois valores e retorna o maior

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 9/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 198- Recebe String de data e converte do formato ORIGEM para formato DESTINO

199- Inverte uma String


 200- Converte um número decimal em algarismos romanos

 201- Idade de uma pessoa

 202- Tipo de variável

 203- Porcentagem de um valor

 204- Formata valor numérico inserindo mascaras de ponto

 205- Converte um numero decimal em binário

 206- Le um valor String no registro

 207- Le um valor Integer no registro

 208- Oculta e Mostra o cursor do mouse

 209- Verifica a existência de uma placa de som

 210- Número de cópias para a impressão

 211- Informações do Ambiente

 212- Alternando entre a declaração de procedure na seção interface e implementation

 213- Abreviando Nomes

 214- Adicionando à hora atual, um número determinado de horas.

 215- Funcão que retorna o IP

 216- Verificando se o ano é bisexto

 217- Verificando se uma unidade de disco está preparada.

 218- Contador de Letras

 219- Verificando se você está conectado a Internet ou não

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 10/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 220- Reparar e Compactar um banco de dados MS-Access

 221- Enviando email com Delphi pelo componente NMSMTP

 222- Número de cores aceitas pelo monitor

 223- Convertendo a 1ª letra de um edit para maiúsculas

 224- Obtendo o 'nome do computador' do windows

 225- Localizando Valores por Proximidade em uma Tabela.

 226- Função para adquirir Data e Hora de um Arquivo

 227- Criando Forms não retangulares

 228- Trocando cor de uma linha no DBGrid por uma condição

 229- Incrementando e Decrementando com INC( ) e DEC( )

 230- Como Inverter os Botões do Mouse

 231- Minimizando uma janela de maneira diferente


232- Como configurar o acesso à BD Paradox em uma rede?
 233- Como desligar, reiniciar, resetar ou dar logout no sistema ?

 234- Verificar a impressora, antes de uma impressão

 235- Como fazer um TMemo receber um arquivo texto ?

 236- Como se movimentar/manipular banco de dados?

237- Criação de índices em tempo de execução.


 238- Converter arquivo texto para um Banco de Dados

 239- Usando Banco de Dados Access

 240- Validando CEP por Estado

 241- Rebootar o Micro

 242- Para converter uma pchar em string

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 11/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 243- Descobrir quais são as pastas do Windows

244- Criar uma fonte de dados no ODBC do windows pelo Delphi


 245- Retorna a quantidade de dias úteis entre duas datas

 246- Executar uma música pelo Winamp

 247- Descobrir o drive da aplicação

 248- Registrar DLL´s

 249- Preencher uma Combo com o resultado de uma Query

 250- Ir para determinado registro numa tabela

 251- Ativar / Exibir a Ajuda do Sistema

 252- Excluir arquivos de uma lista

 253- Tratamento de Erros

 254- Usuário e senha do DBA do MySql

 255- Acessar tabelas DBF/NTX no Delphi sem usar o BDE

 256- Impressão de código de barras com o QuickReport

 257- Como fechar todas as tabelas do DataModule de uma vez

 258- Desabilita o botão Fechar do Formulário

 259- Inicializar vários Edits em um formulário

 260- Executar Pack em Tabelas Paradox

 261- Como deletar uma pasta com arquivos e subpastas dentro

 262- Obter/Definir tempo máximo de Double-Click do mouse

 263- Fazer que seu Programa só abra através de outro seu

 264- Usar Assembly com Delphi

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 12/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 265- Verificar se a String é uma Data válida

 266- Colocar linhas de diferentes alturas em um DBGrid

 267- Ligar/Desligar Caps-Lock

 268- Verificar se o Delphi está aberto

 269- Configurar Século

 270- Desabilitar Botão fechar do Form

 271- Desabilitar um item do TRradioGroup

 272- Envia direto para Impressora em Rede

 273- Extrair palavra que está sob a posição corrente do cursor

 274- Executar Bat

 275- Verificar se há Placa de Som

 276- Converter Path e nome de Arquivos longos para curtos


277- Impedir que o usuário mude de página no TabbedNotebook
 278- Criar janela redonda

 279- Detectar finalização do Windows

 280- Exibir ano com 4 Dígitos

 281- Alterar Fonte do Hint

282- Mostrar Hint independente para cada célula da Stringgrid


 283- Alterando Fonte de determinado registro no DBGrid

 284- Extrair primeiro nome de uma pessoa

 285- Descobrir qual Ícone foi selecionado no ListView

 286- Criar atalho no Desktop

 287- Criar atalho no menu Iniciar

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 13/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 288- Mudando texto do TEdit no OnChange

289- Posicionando cursor na linha de um Memo ou Richedit


 290- Escondendo janelas filhas minimizadas

 291- Executando operações padrão de um Ole Container

 292- Usando JPG no Delphi 3

 293- Calculando feriado da Páscoa

 294- Extrair ícones de uma DLL ou de um EXE

 295- Colocar monitor em estado de redução de energia

 296- Compartilhar Pastas

 297- Visualizar imagem em um DBGrid

 298- Imprimir com precisão Milimétrica

 299- Alterar caption da janela de Preview do QuickReport

 300- Mostrar uma mensagem durante um processamento

 301- Mostrar um cursor de ampulheta durante um processamento

 302- Ler e escrever dados binários no Registro do Windows

 303- Mudar a resolução do vídeo via programação

 304- Ler e escrever dados no Registro do Windows

 305- Adicionar barra de rolagem horizontal no ListBox

 306- Simular um CharCase no DBGrid

 307- Verificar se uma string é uma data válida

 308- Fazer pesquisa incremental com DBGrid e Edit

 309- Adicionar zeros à esquerda de um número

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 14/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 310- Limpar um campo tipo data via programação

 311- Implementar um campo auto-incremental via programação

 312- Obter o endereço IP do Dial-Up

 313- Exibir a caixa de diálogo padrão de solicitação de senha do banco de dados

 314- Obter a versão da biblioteca ComCtl32.DLL (usada na unit ComCtrls do Delphi)

 315- Implementar rotinas assembly em Pascal

 316- Exibir o diálogo About do Windows

 317- Obter a linha e coluna atual em um TMemo

 318- Exibir um arquivo de ajuda do Windows

 319- Obter o valor de uma variável de ambiente

 320- Determinar se uma janela (form) está maximizada

 321- Determinar se o cursor do mouse está em determinado controle


322- Determinar se o aplicativo está minimizado
 323- Fechar um aplicativo com uma mensagem de erro fatal

 324- Usar o evento OnGetText de um TField

 325- Maximizar um form de forma que cubra toda a tela, inclusive a barra de tarefas

 326- Verificar, via programação, se Local Share do BDE está TRUE

327- Criar um EXE que seja executado apenas através de outro EXE criado por mim
 328- Resolver "Internal error near: IBCheck" do Interbase 5.1.1 Server no NT

 329- Inverter os botões do mouse

 330- Obter/definir o tempo máximo do duplo-click do mouse

 331- Obter os atributos de um arquivo/diretório

 332- Obter o espaço total e livre de um disco

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 15/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 333- Obter o tipo de um drive (removível, fixo, CD-ROM, unidade de rede, etc)

334- Obter informações de um volume/disco (label, serial, sistema de arquivos, etc)


 335- Alterar o nome de volume (Label) de um disco

 336- Saber quais as unidades de disco (drives) estão presentes

 337- "truncar" valores reais para apenas n casas decimais

 338- Excluir todos os registros de uma tabela (como DELETE ALL do Clipper)

 339- Saber se o sistema está usando 4 dígitos para o ano

 340- Imprimir caracteres acentuados diretamente para a impressora

 341- Imprimir texto justificado com formatação na impressora Epson LX-300

 342- Formatar um disquete através de um programa Delphi

 343- Alterar (e restaurar) o tamanho da página na impressora

 344- Reproduzir um arquivo de som WAV sem o TMediaPlayer

345- Obter o nome do usuário e da empresa informado durante a instalação do


Windows

 346- Mostrar uma barra de progresso enquanto copia arquivos

 347- Copiar arquivos usando o Shell do Windows

 348- Descobrir o código ASCII de uma tecla

349- Evitar que seu programa apareça na barra de tarefas


 350- Usar eventos de som do Windows

 351- Mudar a coluna ativa em um DBGrid via programação

 352- Fechar o Windows a partir do seu programa

 353- Carregar um cursor animado (.ani)

 354- Enviar um arquivo para a lixeira

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 16/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 355- Obter o número do registro atual

356- Trabalhar com Filter de forma mais prática


 357- Reproduzir um arquivo WAV

 358- Executar um programa DOS e fechá-lo em seguida

 359- Fechar um programa a partir de um programa Delphi

 360- Colocar Hint's de várias linhas

 361- Reproduzir um vídeo AVI em um Form

 362- Separar (filtrar) caracteres de uma string

 363- Colocar zeros à esquerda de números

 364- Copiar arquivos usando curingas (*.*)

 365- Copiar arquivos

 366- Trabalhar com cores no formato string

 367- Verificar se determinado programa está em execução (Word, Delphi, etc)

 368- Excluir arquivos usando curingas (*.*)

 369- Gerar uma tabela no Word através do Delphi

 370- Obter a quantidade de registros total e visível de uma tabela

 371- Evitar que um programa seja executado mais de uma vez

 372- Executar um "COMMIT" no Delphi

 373- Posicionar Form's em relação ao Desktop do Windows

 374- Saber a resolução de tela atual

 375- Verificar se uma unidade de disco (disk-drive) está preparada

 376- Salvar/restaurar o tamanho e posição de Form's

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 17/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 377- Definir a quantidade de registros a ser impressa em uma página do QuickReport

 378- Onde encontrar tutoriais sobre construção de componentes em Delphi

 379- Para que servem OnGetEditMask, OnGetEditText e OnSetEditText do


TStringGrid

 380- Mostrar um Form de LogOn antes do Form principal

 381- Limitar a região de movimentação do mouse

 382- Descobrir o nome de classe de uma janela do Windows

 383- Ocultar/exibir a barra de tarefas do Windows

 386- Evitar a proteção de tela durante seu programa

 385- Fazer a barra de título ficar intermitente (piscante)

 386- Posicionar o cursor do mouse em um controle

 387- Criar cores personalizadas (sistema RGB)

 388- Adicionar uma nova fonte no Windows

 389- Saber se a impressora atual possui determinada fonte

 390- Saber se determinada Font está instalada no Windows

 391- Acertar a data e hora do sistema através do programa

 392- ENTER em vez de TAB no formulário, no DBGrid e no StringGrid

 393- Simular a vírgula através do ponto do teclado numérico

 394- Paralizar um programa durante n segundos

 395- Criar uma tabela (DB, DBF) através do seu programa

 396- Verificar se um diretório existe

 397- Verificar se um arquivo existe

 398- Criar um Alias temporário através do seu programa

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 18/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 399- Criar um Alias através do seu programa

 400- Detectando a saída do mouse de um Componente

 401- Adicionar Bitmap a um Menu

 402- Colocar um menu PopUp dentro de outro em Run Time

 403- Colocar imagem lado a lado em um Form MDI

 404- Alterar cor do item selecionado do RadioGroup

 405- Retornar último dia do mês

 406- Verificar se o número é par ou ímpar

 407- Criar um nova Tabela a partir de uma estrutura de outra Tabela

 408- Como chamar a caixa de dialogo localizar

 409- Gravar imagem JPG em Tabela Paradox

 410- Colocar o mês por extenso


411- Como cancelar um Loop (While, For ou Repeat)
 412- Inserir Tabelas no Word

 413- Deixando o Form principal Invisivel

 414- Enviando Textos para outros Aplicativos

 415- Associando um tipo de Aplicação a uma extensão

416- Evitando os Acentos


 417- Lendo e Gravando Arquivos Texto

 418- Transforma a imagem em negativo de fotografia

 419- Copia ou move arquivos usando a API do Windows

 420- Validando Cartão de Crédito

 421- Validando Título de Eleitor

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 19/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 422- Exportando dados para um arquivo XML

423- Gravando e Lendo Datas no Registro do Windows


 424- Menus Popup No PageControl

 425- Programa que se auto-deleta

 426- Download de arquivos na WEB

 427- Drag-and-Drop

 428- Efeito HotTrack em componentes Label e CheckBox

 429- Títulos com mais de uma linha no DBGrid

 430- Alterando a cor de fundo do Edit

 431- Salvar imagens em uma tabela Paradox

 432- Excluir todas as ocorrências de um caractere em uma string

 433- Aprendendo a usar o TSplitter

 434- Implementando a Função SubString

 435- Criando ToolTips no Estilo Balão

 436- Movendo Itens Em Uma ListBox

 437- Utilizando Captions em Componentes DBNavigator

 438- Criando slides no Delphi

 439- Descobrindo URL'S visitadas

 440- Formatando CNPJ

 441- Formatando CPF

 442- Criar um arquivo texto

 443- Gravando e Lendo Imagens em Dll's

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 20/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 444- Modificando os ícones do DbNavigator

 445- OnGetEditMask, OnGetEditText e OnSetEditText do TStringGrid

 446- Gerar uma tabela no Word através do Delphi.

 447- Como verificar se um campo inteiro é par ou ímpar.

 448- Resolvendo "Internal error near: IBCheck" do Interbase 5.1.1 Server no NT.

 449- Obtendo os atributos de um arquivo/diretório.

 450- Obtendo o tipo de um drive (removível, fixo, CD-ROM, unidade de rede, etc)

 451- Excluindo todos os registros de uma tabela (como DELETE ALL do Clipper).

 452- Verificando se o sistema está usando 4 dígitos para o ano.

 453- Alterando/Restaurando o tamanho da página na impressora.

 454- Copiando arquivos usando o Shell do Windows.

 455. Descobrindo o código ASCII de uma tecla.


456- Mudando a coluna ativa em um DBGrid via programação.
 457- Como trabalhar com Filter de forma mais prática?

 458- Cores no formato string.

 459- Como executar um "COMMIT" no Delphi?

 460- Posicionando Form's em relação ao Desktop do Windows.

461- Descobrindo o nome de classe de uma janela do Windows.


 462- Adicionando uma nova fonte no Windows.

 463- Acertando a data e hora do sistema através do programa.

 464- Registrando o .NET FrameWork para o IIS

 465- Verificando se usuário logado é um administrador.

 466- Abrir um arquivo XLS protegido por senha

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 21/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 467- Substituindo um arquivo INI por um documento XML.

468- Instalando o Pacote RxLib


 469- Como não parar a aplicação durante um processo longo?

 470- Desativando o menu de contexto padrão (em TCustomEdits)

 471- Verificar se o computador está em rede

 472- Criando um Objeto TString

 473- Como mudar a cor de fundo em linhas diferentes de texto em um TListBox

 474- Zerar Campo AutoIncremento

 475- Descobrindo o volume do som Wave.

 476- Versão do .EXE

 477- Verificar qual o código de erro do ORACLE

 478- Verificar o estado de uma tabela

 479- Valores das teclas em HEXA

 480- Remove caracteres acentuados de uma string

 481- Abrir arquivos com aplicativo associado

 482- Utilizar o form "Sobre..." padrão do Windows

 483- Utilizando TList e Record como Array

 484- Uso do TAG

 485- Uso de um vetor dinâmico (Pascal)

 486- Utilizando Arquivo Help em um sistema

 487- Usando um InputQuery

 488- Usando Locate em campo não indexado

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 22/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 489- Trocar linha de um bitmap

 490- Colocando um Icone ao lado do relogio

 491- Tratamento de erro no Delphi com Oracle

 492- Tratamento de erro no Delphi Cliente/Servidor

 493- Traduzir o PreView do QReport

 494- Converter texto para imagem

 495- Testar a impressora

 496- Testa se a tabelas esta bloqueada ou não

 497- Testa se a sigla do estado é válido

 498- Tempo do Hint

 499- Tarja lateral (parecido com o Menu iniciar do Windows)

 500- Usando SQL para totalizações


501- Serial em rede
 502- Senha universal p/ tabelas PARADOX

 503- Testa se a String é uma url ou não.

 504- Salvar os dados de um StringGrid em um arquivo.

 505- Converter RTF para BMP

506- Rolar um form usando pgUP and pgDn


 507- Retornar digito verificador p/ algoritmo de cheque (modulo11)

 508- Retorna unidades mapeadas com Path

 509- Retorna o Host onde seu TCP/IP está conectado

 510- Retirando a extensão de um arquivo

 511- Usando um For Select dentro da StoredProcedure no FireBird/Interbase

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 23/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 512- Remove senha de tabela paradox

513- Registrar OCX


 514- Reconhecimento de voz em Delphi

 515- Raiz quadrada no Delphi

 516- Proteger e compactar um .EXE

 517- Definido o tamanho Mín e Máx de um formulário

 518- Potência

 519- Portas Seriais

 520- Pesquiza incremental em um Table

 521- Pesquisa incremental em um TComboBox

 522- Pesquisa exata em TListBox

 523- Pegar texto de um comando DOS

 524- Pegando o parâmetro que foi executado com a aplicação.

 525- OnClick do DbGrid

 526- Número para telefone

 527- Limpar um campo tipo data via programação

 528- Menu com Bitmap

 529- Mensagem no DeskTop

 530- Memo com SQL

 531- Criar uma figura do tipo marca d' água.

 532- Colocando um JPG dentro de um .exe

 533- Criando um campo lookup em tempo de execução

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 24/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 534- Arquivos armazenado num blop

 535- Imprimir um TMemo

 536- Exibir a caixa de diálogo de solicitação de senha

 537- Ícones do ListView

 538- Hints do DbNavigator

 539- Habilitar o "Autorun" para CD-Rom

 540- Gerar SQL

 541- Gerar letras aleatórias

 542- Gera um clone do aplicativo

 543- Form furado

 544- Form com senha

 545- Figura em um Memo


546- Fechar bandeja de CDs
 547- Faz ajuste preciso em impressoras lazer

 548- Extrair palavra sob posição do mouse

 549- Extrair ano, mês ou dia via SQL

 550- Exemplo de utilização ADO

551- Exemplo de como manipular a Porta Serial


 552- Executar um módulo CPL (Painel de Controle)

 553- Executar sem o form principal

 554- Executar LogOFF

 555- Criar um EXE que seja executado apenas através de outro EXE criado por mim

 556- Executando um .LNK

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 25/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 557- EXE menor

558- Drag & Drop com o Windows Explorer


 559- Download de arquivos via Delphi

 560- Desenhar no desktop

 561- Delphi com Access

 562- Executar algo antes de minimizar

 563- Criando e usando DLLs com o Delphi

 564- Capturar a tela ou parte dela e salva-a em um Bitmap

 565- Convertendo um arquivo .dfm para texto e vice-vers

 566- Converter um arquivo JPEG em BMP

 567- Converter um arquivo BMP em JPEG

 568- Converte String em BASE 10

 569- Consulta entre datas utilizando SQL

 570- Configurando rede Novell Netware com Delphi

 571- Configurando o Paradox em Rede Peer-to-Peer

 572- Configuração de Rede Windows 95/98 com Delphi

 573- Compilar projeto corretamente

 574- Como usar a cláusula UNION em um Query

 575- Como colocar % em um ComboBox

 576- Como fazer um Cookies

 577- Colocar senha no Access

 578- Carrega os dados, salvos em um arquivo, em StrigGr

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 26/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 579- Manda o form para frente

 580- Converter um arquivo BMP em TIF

 581- Bloqueia tabelas Paradox

 582- Barra de progresso para o batchmove

 583- Barra de progresso na inicialização do sistema

 584- Array de componentes

 585- Apagar a imagem de um componente Timage

 586- Abre um arquivo já existente e insere texto nele

 587- Copiando tabelas paradox para texto ou Dbase e vice-versa

 588- Exportando relatório do quickreport p/ html, doc, txt ou xls

 589- Verificando se o protocolo tcp/ip está instalado

 590- Como pegar a url corrente do IE


591- Corrigindo um pequeno bug em TLabel.AutoSize
 592- Como criar a funcionalidade PING da ICMP.DLL

 593- Usando colunas em um richedit

 594- Procurando e modificando texto em richedit sem perder a formatação

 595- Como tocar sons no auto-falante interno do PC

596- Informações sobre uma impressora


 597- Autoocultar a barra de tarefas

 598- Ativar a proteção de tela do windows

 599- Alterar o Ícone do botão iniciar do windows

 600- Simular um CharCase no dbgrid

 601- Simular o pressionamento de uma combinação de teclas

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 27/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 602- Bloqueio de palavras

603- Usando funções externas (de dlls)


 604- Exclusividade para o programa

 605- Modificando configurações da impressora entre as páginas

 606- Evitando o erro key violation

 607- Conferindo se o processador da máquina é 386, 486 ou Pentium

 608- Desligar/ligar monitor, 486 ou pentium

 609- Colocar uma progressbar numa statusbar

 610- Código usados pelas impressoaras HP

 611- Como criar um contador de página para um relatório

 612- Marcando um pedaço do código

 613- Pegando nome de arquivos do clipboard

 614- Arrastando e soltando de dentro de um treeview

 615- Arrastando de um listbox para um edit

 616- Obtendo uma lista de drivers de idioma disponÍveis para o BDE

 617- Detectando mudanças de hardware PlugnPlay

 618- Usando o adobe acrobat de dentro de sua aplicação

 619- Verificar o dígito do código ean13

 620- Como saber se existe um componente no seu form

 621- Function trim(j:string):string; export;

 622- Calcular quantos controles estão no form

 623- Implementar rotinas assembly em pascal

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 28/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 624- Funções Aritméticas suportadas pelo pascal

 625- Desenhando com tipos diferentes de linhas

 626- Criando um aplicativo full-screen

 627- Substituir uma dll em uso

 628- Como obter o nome de um arquivo no formato do DOS

 629- Abre uma janela DOS num folder qualquer, via explorer

 630- Exemplo de arraste

 631- Capturar ecrã

 632- Fazer um campo memo ocupar 2 páginas

 633- Data por extenso no quickreport

 634- Indexando um vetor

 635- Como evitar efeito de maximização


636- Ordenando um DBGrid clicando no título da coluna (usando Query)
 637- Retorna uma String em número definido (Replicate)

 638- Cancelando a exibição do Form

 639- Apagar arquivos via MS-DOS

 640- Apagar um subdiretório

641- Impedir que o form seja arrastado para fora das margens da tela.
 642- Como extrair o tamanho de um arquivo

 643- Como verificar se um arquivo existe?

 644- Enviando para a impressora o conteúdo de um TstringList

 645- Compara dois arquivos textos

 646- Como implementar a utilização das teclas Ctrl-A para selecionar todo o texto de

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 29/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

um componente TRichEdit ou TMemo

 647- Como tabular um ListBox

 648- Convertendo nomes longos para nomes curtos

 649- Copiando arquivos de diretório para diretório

 650- Como ancorar um form

 651- Como alinhar um edit à direita

 652- Copiando arquivos usando o Shell do Windows

 653- Copiando Um Arquivo Com Um Gauge

 654- Extraindo datas no Interbase

 655- Verificando se Local Share do BDE está TRUE

 656- Abrindo um TComboBox na direção desejada

 657- Eliminando os hints de uma treeview


658- Copiar arquivos usando curingas (*.*)
 659- Retorna o dia da semana em formato string

 660- Como pegar a lista de favoritos do Internet Explorer

 661- Criando diretório

 662- Deletando um Diretório

663- Criar sub-diretório no diretório do Aplicativo


 664- Transformando ícone (*.ico) em bitmap (*.bmp)

 665- Sobre arquivos de Inicialização (.ini)

 666- Como fazer funções de rolagem num TForm usando comandos de teclado?

 667- Encriptar/Desencriptar arquivos

 668- Exibindo ou compararando data de arquivos

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 30/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 669- Retornar a versão do projeto que esta sendo desenvolvido

670- Como fazer para imprimir o rodapé só na última página. Usando quickreport
 671- Listar Arquivos de Um Diretório

 672- Localizar arquivos do Windows

 673- Liga o Botão (x) do form

 674- Nomes dos arquivos que estão sendo executados

 675- Retorna quantos caracteres tem um Edit especificado

 676- Desabilitar e habilitar o botão iniciar do Windows, em seu aplicativo Delphi

 677- Pega o path de um arquivo arrastado do Explorer

 678- Pegando a data de um arquivo

 679- Rotina para restauração dos índices em tabelas paradox

 680- Procurando um arquivo em todo o HD

 681- Programar meu aplicativo para abrir arquivos a partir do Windows Explorer

 682- Retorna a hora da criação de um diretório

 683- Tamanho de um Diretorio

 684- Largura do display do campo de um dbgrid igual ao seu próprio tamanho na


tabela

685- Como centralizar o formulário na área de trabalho


 686- Verificar tipo de arquivo

 687- Alterando o NetDir via programação

 688- Como fazer para tudo o que for digitado aparecer em maiúsculo

 689- Backup & Restauração

 690- Códigos de Erro do BDE

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 31/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 691- Digitando uma string (senha) e devolvendo essa string equivalente ao valor
hexadecimal

 692- Checa se o Símbolo da UF é válido

 693- Como alterar a coluna Description do IBConsole

 694- Como alterar o driver de acesso do access no bde automaticamente

 695- Como fazer o programa autoexecutar na próxima inicialização do windows

 696- Alterando a configuração de data do Windows em run-time

 697- Como fazer para o sistema nao pedir o Login (Password) Banco de Dados

 698- Reindexar um Banco MS-Access 2000

 699- Criando Diretórios

 700- Corrigir Erros de campo AutoIncremento

 701- Como posicionar os dados a direita de uma campo edit


702- Incluído registros em Banco de Dados MS-Access usando ADO
 703- Capturando quando um form for maximizado ou minimizado

 704- Gravar registros fisicamente

 705- Como abrir o Internet Explorer

 706- Exibindo caixa de diálogo personalizada de solicitação de senha do banco dados

707- Exibindo corretamente o conteúdo dos campos boolean


 708- Como formatar CEP

 709- Retorna o tipo de conexão com a Internet

 710- Foto no InterBase

 711- Como criar um formulário no formato oval

 712- Como desabilitar a tela de abertura do Delphi

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 32/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 713- Listando os campos da tabela num Memo

714- Lock de Registro


 715- Rolagem automática em ListBox

 716- Utilizando a função StrtoIntDef 

 717- Obtendo a versão da tabela

 718- Obtendo a versão e outras informações do BDE

 719- Como executar um avi no form

 720- Como duplicar o registro atual

 721- Obtendo o nome das tabelas no Access usando ADO

 722- Problema com Null no Delphi 6

 723- Reindexando índices

 724- Rotina genérica para tratamento de erros na aplicação  – BDE

 725- Insere uma máscara em um valor numérico

 726- Como compactar um arquivo utilizando o winzip.

 727- Verificar registros deletados no BDE / Paradox

 728- Verificar se o registro está travado

 729- Como imprimir objetos usando o QuickReport

 730- Como gravar as alterações feitas no DBGrid em tempo de execução

 731- Limpar o conteudo de um LookupComboBox

 732- Cria qualquer controle em tempo de execução (button, label, stringlist, memo ...)

 733- Converter DBGrig em Html

 734- Como desabilitar o acesso ao windows

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 33/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 735- Desenhar Um Ícone (bitmap) Em Células do Dbgrid

 736- Mudar as imagens do DbNavigator

 737- Como retornar 2(dois) valores em uma função

 738- Retorna o total de memória do computador

 739- Removendo a barra de rolagem vertical do DBGrid

 740- Simulando Checkbox em Dbgrid

 741- Executável com Parâmetros

 742- Teclas de funções no Dbgrid

 743- Gravar um arquivo .Avi ou .Wav dentro de um arquivo Paradox

 744- Como formatar data para exibição por extenso

 745- Como saber quantos dias tem no mês

 746- Como imprimir um form


747- Diferença entre duas horas
 748- Converte hora (formato HH:MM) para minutos

 749- Como ajustar seu formulário de acordo com a resolução de vídeo

 750- Converte segundos em horas digital

 751- Como criar um link para envio de e-mails sem manipular API, e sempre
executando o programa padrão para envio de

 e-mails

 752- Obtendo a menor data válida

 753- Número de finais de semana no ano corrente

 754- Retornando em um edit, o caminho do arquivo selecionado

 755- Sobre o Dblookupcombobox

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 34/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 756- Como desabilitar um RadioButton em um RadioGroup

 757- Verifica se uma data informada cai em um final de semana

 758- Validar datas

 759- Função que envia e-mail pelo Delphi, anexando mais de um arquivo

 760- Capturar a tela do computador e enviar via rede

 761- Deletar um diretório inteiro de uma vez

 762- Colocando uma imagem ao lado de cada item do ListBox

 763- Como retirar o caption de um form

 764- Acrescentando e subtraindo datas

 765- Como achar a representação binária de um Character

 766- Retornando a linha e a coluna atual de um Tmemo

 767- Como identificar se o Interbase está ativo ou não


768- Como retornar a versão do Word
 769- Selecionando os cadastros do mês digitado- SQL

 770- Mudando as cores das linhas de um ListBox

 771- Ocultando janelas MDI filhas minimizadas

 772- Eliminando a movimentação de janels MDI maximizadas

773- Exibindo ProgressBar enquanto copia um arquivo


 774- Imprimindo um bitmap da área de tranferência

 775- Usando OnGetText e OnSetText

 776- Mude o separador de casas decimais ('.' e ',')

 777- Como fazer para não repetir dados numa listbox

 778- Enviando comando de rolagem vertical para um TMemo

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 35/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 779- Parâmetros em tempo de execução para a Query

780- Transformando horas em minutos


 781- Como extrair o mês de um campo data usando comando SQL

 782- Mostrando um formulário Modal usando Show

 783- Como retornar o nome das Units de um projeto em Run-Time (RTTI)

 784- Descobrindo o número de linhas de um arquivo TXT

 785- Como filtrar registros com o QR

 786- Convertendo String para Integer, tratando excessões quando a string não for
válida

 787- Definindo uma borda para Memos

 788- Criptografando tabelas Paradox

 789- Colocando uma figura de fundo em um Memo ou DbMemo


790- Executando procedure/método genéricamente
 791- Pedindo confirmação para fechar um form

 792- Sorteando números com a função Random

 793- Permite que seu DBF ignore o índice MDX e recrie-o

 794- Remove caracteres de uma string deixando apenas números

795- Usando o Word de dentro do Delphi


 796- Acertar data e hora com o Servidor

 797- Utilizando Recortar, Colar, Copiar em um TRichEdit

 798- Acessando as propriedade do Hint

 799- Capturando teclas genéricamente

 800- Como simular a vírgula através do ponto do teclado numérico?

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 36/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 801- Como saber se determinada Font está instalada no Windows?

803- Lendo Arquivo CAB


 804- Acessando dados de um objeto Ancestral/Descendente

 805- Fazendo a aplicação Delphi falar

 806- Definindo coluna do StringGrid como somente leitura

 807- Acessando propriedades protegidas de um objeto

 808- Procurando por um modem

 809- Alinhar Titulo da barra de titulo do form (esqueda / direita )

 810- Listar as tabelas e views do banco de dados (Firebird)

 811- Controlando o PowerPoint em Delphi

 812- Listar as tabelas do banco de dados (Firebird)

 813- Listar as views do banco de dados (Firebird)

 814- Backup e restore com gbak

 815- Obter o valor de um generator

 816- Boot remoto via Internet ou Rede Local

 817- Reiniciar a contagem de um generator

 818- Excluir generator (Interbase)

 819- Excluir generator (Firebird)

 820- Trocar o tipo de um campo (FireBird)

 821- Excluir código-fonte de stored procedure (Interbase/FireBird)

 822- Obter a data do servidor (Interbase)

 823- Alterar parcialmente o conteúdo de uma Query

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 37/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 824- Arredondamento financeiro

 825- Lendo os campos da chave-primária (Interbase/FireBird)

 826- Obter a célula de um StringGrid que está sob o cursor do mouse

 827- Definir forced writes usando o gfix (Interbase)

 828- Escrever no Bloco de Notas

 829- Definir sweep interval com gfix (Interbase)

 830- Alterar o tamanho de um campo

 831- Copiar o texto do Edit para o Clipboard

 832- Atualizado dados em tempo de execução no Interbase

 833- Mostrar bitmap progressivamente

 834- Limpar todas as células de um StringGrid

 835- Mostrar mensagem mesmo que esteja no Prompt do DOS


836- Fazendo um efeito Gradiente no Form
 837- Mostrar um cursor de ampulheta durante um processamento

 838- Adicionar barra de rolagem horizontal no ListBox

 839- Criando tabelas via SQL

 840- Colocar o cursor no final do TEdit ao receber o foco

841- Mostrar aviso em forma de hint


 842- Validar C3 do Cheque

 843- Validar CMC7 do Cheque

 844- Fazer o formulário vibrar (como ocorre no MSN Messenger)

 845- Pack em DBF

 846- Comandos para Threads

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 38/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
 847- Colocar os bitmaps na dll

848- Apagar senha da BIOS


 849- Mostrando conteúdo de um campo memo

 850- Formulário na barra de tarefas

 851- Imprimindo em matricial usando o RAVE

 852- Compilando aplicacao pelo Ms-Dos

 853- Pesquisando uma String em um Documento do Word

 854- Imprimir na posição certa do formulário (milímetro)

 855- Selecionando todos os registros do DBGrid

 856- Relação de Funções do MySQL

 857- Imprimir Na Vertical No Quickreport

 858- Convertendo um tipo Enum do Delphi em uma String

 859- Como inserir uma barra de progresso dentro de uma caixa de diálogo

 860- Executando Sons Através de Chamadas Mci

 861- Imprimindo Forms

 862- Colocando banners no Menu

 863- Chamar um HTMLHelp (.chm)

 864- Gravando Sons do Microfone Com o Delphi

 865- Como adicionar um botão à barra de ferramentas do IE

 866- Como fazer um DateTimePicker com o display vazio

 867- Hints para Itens de Menu

 868- Mudando o endereço IP em runtime

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 39/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 869- Mudando o Tamanho de Arquivos JPEG x Qualidade

 870- Como exibir linhas longas em um ListBox sem a utilização da barra de


rolamento
 871- Acessando contas GMail com o Indy via POP3 SSL

 872- InputBox com Password

 873- Como Alterar o Volume do Som do Computador Com o Delphi

 874- Imprime o conteúdo de um TRichEdit

 875- Mostrando arquivos GIF

 876- Criptografando Imagens com o Delphi

 877- Formatando tags HTML com o Delphi

 878- Busca Rápida em um ListBox

 879- Função DirectoryExists

 880- Criando Labels em 3D

 881- Função IIf do VB em Delphi

 882- Como imprimir com codigo fonte

 883- Como Imprimir Escolhendo Uma Faixa de Paginas No Qr

 884- Retorna o idioma padrão do Windows

 885- Como insere uma máscara de valores $ em um valor integer

 886- Ocultando uma coluna em um DBGrid

 887- Fazendo pesquisa incremental apenas com DBGrid

 888- Como apresentar o número da linha e coluna em um DBGrid

 889- Testa se o arquivo possui caracteres inválidos em seu nome

 890- Como usar os arquivos QRP criados com QuickReport

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 40/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 891- Retornando o Path da aplicação no Intraweb

 892- Verificando a existência de uma tabela em um banco de dados MS-Access

 893- Como converter um texto acentuado no DOS para Windows

 894- Implementando método UpdatesPending em objetos ADODataSet

 895- Pegando servidor smtp do Outlook

 896- Como apagar vários ítens de uma só vez em um ListBox

 897- Criando tabela a partir de consulta SQL

 898- Recortando e colando usando a API

 899- Como abrir um relatório criado no MS Access pelo Delphi

 900- Exportando TImage no formato WMF

Inicio da pagina 

Dica numero : 1
procedure Mostrar_Esconder_BtIniciar(Estado:Boolean);
var taskbarhandle, buttonhandle : HWND;
begin
taskbarhandle := FindWindow('Shell_TrayWnd', nil);
buttonhandle := GetWindow(taskbarhandle, GW_CHILD);
if Estado = True then
ShowWindow(buttonhandle, SW_RESTORE) {mostra o botão}
else
ShowWindow(buttonhandle, SW_HIDE); {esconde o botão}
end;

Inicio da pagina 

Dica numero : 2

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 41/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

procedure Esconde_Barra_Tarefa(EstadoBarra: Boolean);


var wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0],'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0],
If EstadoBarra=True Then nil);
ShowWindow(wndHandle, SW_RESTORE) {Mostra a barra de tarefas}
Else
ShowWindow(wndHandle, SW_HIDE); {Esconde a barra de tarefas}
end;

Inicio da pagina 

Dica numero : 3
uses
Registry;

procedure TForm1.Button1Click(Sender: TObject);


var reg: TRegIniFile;
begin
reg := TRegIniFile.create('SOFTWARE\MICROSOFT\MS SETUP (ACME)\');
EdtUsuario.Text := reg.ReadString('USER INFO','DefName','');
EdtEmpresa.Text := reg.ReadString('USER INFO','DefCompany','');
reg.free;
end;

Inicio da pagina 

Dica numero : 4

Adicione
procedureaWMNCHitTest(var
seguinte declaraçãoM:na TWMNCHitTest);
seção private do Form:
message wm_NCHitTest;
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { ativa a herança da mensagem }
if M.Result = htClient then { o clique foi na área cliente? }
M.Result := htCaption; { se sim, faz o Windows pensar que foi no Caption. }
end;
Este exemplo tratou o clique na área cliente. Você pode alterar este código para suas
necessidades. Eis os possíveis valores para o Result:
HTBORDER - Borda da janela que não tem a borda de tamanho
HTBOTTOM - Borda horizontal inferior da janela
HTBOTTOMLEFT - Canto inferior esquerdo da janela

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 42/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

HTBOTTOMRIGHT - Canto inferior direito da janela


HTCAPTION - Barra de Título(Caption)
HTCLIENT - Área cliente
HTERROR - igual ao HTNOWHERE, a diferença é que produz um beep indicando erro
HTGROWBOX - Caixa de tamanho (igual ao HTSIZE)
HTHSCROLL - Barra
HTLEFT - Borda de rolagem
esquerda horizontal
da janela
HTMENU - Em um menu
HTNOWHERE - Plano de fundo da janela ou linha de divisão entre janelas
HTREDUCE - Botão minimizar
HTRIGHT - Borda direita da janela
HTSIZE - Caixa de tamanho (igual ao HTGROWBOX)
HTSYSMENU - Botão de Sistema/Fechar da janela MDIChild
HTTOP - Borda horizontal superior da janela
HTTOPLEFT - Canto superior esquerdo da janela
HTTOPRIGHT - Canto direito superior da janela
HTTRANSPARENT - Janela em segundo plano
HTVSCROLL - Barra de rolagem vertical
HTZOOM - Botão maximizar

Inicio da pagina 

Dica numero : 5

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift:


TShiftState);
begin
if ((Shift = [ssCtrl]) and (key = vk_delete)) THEN
Abort;
end;

Inicio da pagina 

Dica numero : 6
var
H : HWnd; begin
H := FindWindow(Nil,'Project1'); if H <> 0 then ShowWindow(H,SW_HIDE);
end;

Inicio da pagina 

Dica numero : 7

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 43/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Crie uma var do tipo word, por ex., Attributes. Depois, atribua a esta var o
valor retornado por FileGetAttr. Ex.:

var
Attributes: Word;
begin
Attributes := FileGetAttr( 'nomedoarquivo' );
 // Supondo 4 CheckBoxe's, 1 para cada atributo, Ok?
CheckBox1.Checked := (Attributes and faReadOnly) = faReadOnly;
CheckBox2.Checked := (Attributes and faArchive) = faArchive;
CheckBox3.Checked := (Attributes and faSysFile) = faSysFile;
CheckBox4.Checked := (Attributes and faHidden) = faHidden;
end;

Inicio da pagina 

Dica numero : 8
messageBeep(0);
Inicio da pagina 

Dica numero : 9
NumSec é o tempo em segundos de espera

var
NumSec SmallInt;
StartTime: TDateTime;
begin
StartTime := now;
NumSec:=10;
repeat
Application.ProcessMessages;
until Now > StartTime + NumSec * (1/24/60/60);
end;

Inicio da pagina 

Dica numero : 10

Localize
 // Na seção o[ReportSmith]
arquivo RS_RUN.INI (no diretório
inclua a linha seguinte:do Windows);
ShowAboutBox=0

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 44/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 // Na seção [RS_RunTime] inclua a linha seguinte:


ShowAboutBox=0
 // Não se esqueça de distribuir com o seu aplicativo o referido arquivo INI.

Inicio da pagina 

Dica numero : 11
Function ExtractDiskSerial(Drive:String):String;
Var
Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
GetVolumeInformation(PChar(Drive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
end;

Inicio da pagina 

Dica numero : 12
procedure TForm1.Button1Click(Sender: TObject);
var
SerialNum : pdword;
a, b : dword;
Buffer : array [0..255] of char;
begin
if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then
Label1.Caption := IntToStr(SerialNum^);
end;

Inicio da pagina 

Dica numero : 13
ExtractFilePath( Application.ExeName )

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 45/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 14

14- Interceptar as teclas de função (F1, F2, F3...)

Primeiro, coloque a propriedade KeyPreview do formulário como TRUE. Depois, insira


este código no
evento OnKeyDown do formulário:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift:


TShiftState);
begin
if Key = VK_F5 then
showMessage('I pressed the F5 key');
end;

Você também pode usar as variáveis VK_F1 até VK_F12 referentes as outras teclas de
função.

Inicio da pagina 

Dica numero : 15
Quando clicamos sobre o botão de deleção no DBNavigator (o do sinal de menos) surge
uma box com a
mensagem "Delete Record?" com botões Ok e Cancel. Para fazer aparecer a mensagem
em
português deverá selecionar o componente Table e mudar a propriedade ConfirmDelete
para False e
no evento da tabela BeforeDelete colocar o seguinte:

procedure TForm1.Table1BeforeDelete(DataSet:TDataSet);
begin
if MessageDlg('Eliminar o Registro?',mtConfirmation,[mbYes,mbNo],0)<>mrYes then
Abort;
end;

Inicio da pagina 

Dica numero : 16

No relatório, criar a procedure SHOWPREVIEW contendo:


Procedure Showpreview;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 46/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

begin
preview.showmodal;
end;

Onde preview é o nome do form criado para preview.


Não
Apósesquecer de incluir
isso, deve-se o nome
incluir da procedure
no evento CREATEnadocláusula uses.principal ou do relatório o
formulario
direcionamento do
objeto Qprinter, com a seguir:

qprinter.onpreview:=showpreview;

Isto faz com que toda vez que se desejar exibir um preview, o programa abra a rotina
'showpreview', que
abre o formulário criado, chamado 'preview'.

Inicio da pagina 

Dica numero : 17
Se você precisa abrir programas externos no seu aplicativo DELPHI, como a
calculadora do Windows, por
exemplo, inclua a seguinte linha no seu programa:

WinExec('calc.exe', sw_show);
'calc.exe' é o nome do programa. Caso queira abrir um outro programa, altere este
nome.

Inicio da pagina 

Dica numero : 18
Insira este código em um evento OnKeyPress de um controle de edição:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);


begin
If Key = #13 Then
Begin
SelectNext(Sender as tWinControl, True, True );
Key := #0;
end;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 47/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 19
Uses
MMSystem;

Utilize a API SndPlaySound();


Para interromper o som sem ele acabar de tocar utilize a API PlaySound(nil,0,0);

Ex: SndPlaySound('c:\teste.wav', snd_ASync);

PS: snd_Loop serve para repetir continuamente o som.

Inicio da pagina 

Dica numero : 20
Crie uma váriavel do tipo String e insira a seguinte linha no evento ou função desejada
do formulário:

ExtractFilePath(Application.Exename);

Retorna-rá o path atual do arquivo .EXE do seu programa.

Inicio da pagina 

Dica numero : 21
Quando você programar visando uma rede e quiser bloquear um arquivo é só chamar o
metodo "edit" da
Tabela que estiver usando.
EX: Table1.edit;
PS: Se o registro já estiver bloqueado ocorrerá um erro, então você deve fazer o
seguinte :

try { para verificar o erro }


Table1.edit;
exception on TDBEngineError do { o erro..}
MessageDlg('Registro ja esta sendo usado...!', mtInformation, [ mbOk ], 0 );
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 48/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 22
If ( Chr(Key) <> #13) Then Exit;
If ( DBGrid1.SelectedIndex + 1 <> DBGrid1.FieldCount ) Then
DBGRid1.SelectedIndex := DBGRid1.SelectedIndex + 1;

Inicio da pagina 

Dica numero : 23
Function Recno(Dataset: TDataset): Longint;
var
CursorProps: CurProps;
RecordProps: RECProps;
begin
{ Return 0 if dataset is not Paradox or dBASE }
Result := 0;
with Dataset do
begin
if State = dsInactive then DBError(SDataSetClosed);
Check(DbiGetCursorProps(Handle, CursorProps));
UpdateCursorPos;
try
Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps));
case CursorProps.iSeqNums of 
0: Result := RecordProps.iPhyRecNum; { dBASE }
1: Result := RecordProps.iSeqNum; { Paradox }
end;
except
on EDBEngineError do
Result := 0;
end;
end;
end;

Inicio da pagina 

Dica numero : 24
uses ShellAPI;

Function DeleteFileWithUndo(sFileName : string ) : boolean;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 49/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

var
fos : TSHFileOpStruct;

begin

FillChar( fos, SizeOf( fos ), 0 );


With fos do
begin
wFunc := FO_DELETE;
pFrom := PChar( sFileName );
fFlags := FOF_ALLOWUNDO
or FOF_NOCONFIRMATION
or FOF_SILENT;
end;
Result := ( 0 = ShFileOperation( fos ) );
end;

Inicio da pagina 

Dica numero : 25
const
cnCursorID1 = 1;

begin
Screen.Cursors[ cnCursorID1 ] := LoadCursorFromFile('c:\win95\cursors\lapis.ani' );
Cursor := cnCursorID1;
end;
PS: O arquivo LAPIS.ANI deverá existir no diretório apontado.

Inicio da pagina 

Dica numero : 26
var
t: TTable;
begin
t := TTable.create(self);
with t do
begin
DatabaseName := 'MyAlias'; {Nome do Alias}
TableName := 'MyTbl.db';
open;
edit;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 50/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

insert;
FieldByName('TheField').assign(Memo1.lines);
post; { Requerido!!!}
close;
end;
end;
Inicio da pagina 

Dica numero : 27
procedure TForm1.FormResize(Sender: TObject);
var
R : TRect;
DC : HDc;
Canv : TCanvas;
begin
R := Rect( 0, 0, Screen.Width, Screen.Height );
DC := GetWindowDC( GetDeskTopWindow );
Canv := TCanvas.Create;
Canv.Handle := DC;
Canvas.CopyRect( R, Canv, R );
ReleaseDC( GetDeskTopWindow, DC );
end;

Inicio da pagina 

Dica numero : 28
procedure TForm1.Button1Click(Sender: TObject);
var
begin
with Form1.Canvas
Font.Name := 'Arial';do begin
Font.Size := 24;
tf := TFont.Create;
tf.Assign(Font);
GetObject(tf.Handle, sizeof(lf), @lf);
lf.lfEscapement := 450;
lf.lfOrientation := 450;
tf.Handle := CreateFontIndirect(lf);
Font.Assign(tf);
tf.Free;
TextOut(20, Height div 2, 'Texto Diagonal!');

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 51/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

end;
end;

Inicio da pagina 

Dica numero : 29
Para extrair ícones de um executável, deve-se usar a função da API Extraction. Ela usa
3 parâmetros:

Instance - Instância da aplicação


FileName - Nome do executável. Deve ser um PChar
NumIcon - Número do ícone a ser recuperado. Se for Word(-1), a função retorna a
quantidade
do de ícones
executável.

Coloque ShellAPI em uses no começo da unit.

procedure TForm1.Button1Click(Sender: TObject);


var
IconIndex : word;
h : hIcon;
begin
IconIndex := 0;
h := ExtractAssociatedIcon(hInstance,'C:\WINDOWS\NOTEPAD.EXE',IconINdex);
DrawIcon(Form1.Canvas.Handle,10,10,h);
end;

Inicio da pagina 

Dica numero : 30

Para alinhar itens do menu principal à direita, deve-se utilizar o seguinte código:
{Isto justifica todos itens à direita do selecionado}

procedure SetJustify(Menu: TMenu; MenuItem: TMenuItem; Justify: Byte);


{$IFDEF WIN32}
var
ItemInfo: TMenuItemInfo;
Buffer: array[0..80] of Char;
{$ENDIF}
begin
{$IFDEF VER80}
MenuItem.Caption := Chr(8) + MenuItem.Caption;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 52/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

{$ELSE}
ItemInfo.cbSize := SizeOf(TMenuItemInfo);
ItemInfo.fMask := MIIM_TYPE;
ItemInfo.dwTypeData := Buffer;
ItemInfo.cch := SizeOf(Buffer);
GetMenuItemInfo(Menu.Handle,
if Justify = 1 then MenuItem.Command, False, ItemInfo);
ItemInfo.fType := ItemInfo.fType or MFT_RIGHTJUSTIFY;
SetMenuItemInfo(Menu.Handle, MenuItem.Command, False, ItemInfo);
{$ENDIF}
end;

Inicio da pagina 

Dica numero : 31
1º Declare o procedure na seção PUBLIC da unit.
procedure JumpTo(const aAdress: String);

2º Coloque a cláusula ShellAPI na uses no início da unit.

procedure TForm1.JumpTo(const aAdress: String);


var
buffer: String;
begin
buffer := 'http://' + aAdress;
ShellExecute(Application.Handle, nil, PChar(buffer), nil, nil, SW_SHOWNORMAL);
end;

procedure TForm1.Label1Click(Sender: TObject);


begin
JumpTo('www.geocities.com/SiliconValley/Way/1497');
end;

Inicio da pagina 

Dica numero : 32
procedure TtableCopiaRegistro(Origem, Destino: Ttable);
begin
with TabelaOrig do
begin
{Inicia um contador para os campos da TabelaOrig}
for i := 0 to FieldCount -1 do
{Este if verifica se o campo da TabelaOrig é NULL, se for, atribui seu valor ao

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 53/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

campo da TabelaDest}
if not Fields[i].IsNull then TabelaDest.Fields[i].Assign(Fields[i]);
end; {end with}
end;

Este exemplo funcionará com todos tipos de campos se você tiver acabado de criar a
TabelaDest.
Para criar um dado valor NULL : Fields[i].Clear

Inicio da pagina 

Dica numero : 33

procedure TForm1.SpeedButton1.Click(Sender: TObject);


var
SearchRec: TSearchRec;
Result: Integer;
begin
Result:=FindFirst('c:\teste\*.*', faAnyFile, SearchRec);
while result=0 do
begin
DeleteFile('c:\teste\'+SearchRec.Name);
Result:=FindNext(SearchRec);
end;
end;
Inicio da pagina 

Dica numero : 34
Tudo que você precisa é de um componente TSession, um componente
TListBox e uma String List.

Defina a propriedade SessionName do TSession para 'Session'. Utilize o seguinte


código:

procedure TForm1.Button3Click(Sender: TObject);


var
MyStringList: TStringList;
i: integer;
begin
MyStringList := TStringList.Create;
Session.GetAliasNames(MyStringList);
for I := 0 to MyStringList.Count - 1 do
ListBox1.Items.Add(MyStringList[I]);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 54/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

end;

Utilize o Help do TSession e consulte seus métodos para ver por exemplo como
capturar o diretório ou
caminho de um Alias com o método 'GetAliasParams'.

Inicio da pagina 

Dica numero : 35
{Para Abrir:}
mciSendString('Set cdaudio door open wait', nil, 0, handle);

{Para Fechar:}
mciSendString('Set cdaudio door closed wait', nil, 0, handle);

Inicio da pagina 

Dica numero : 36
Veja abaixo alguns códigos usados pelas impressoras HP:

RESET = 027/069
BOLD1 = 027/040/115/051/066
BOLD0 = 027/040/115/048/066
ITALIC1 = 027/040/115/049/083
ITALIC0 = 027/040/115/048/083
UNDERLINE1 = 027/038/100/049/068
UNDERLINE0 = 027/038/100/064
LPI6 = 027/038/108/054/068
LPI8 = 027/038/108/056/068
CPI5 = 027/040/115/053/072
CPI6
CPI8 =
= 027/040/115/054/072
027/040/115/056/072
CPI10 = 027/040/115/049/048/072
CPI12 = 027/040/115/049/050/072
CPI17 = 027/040/115/049/054/046/054/055/072
CPI20 = 027/040/115/050/048/072

Inicio da pagina 

Dica numero : 37

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 55/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Function CopiaArquivo(scrname,destname:string):byte;
var
source,destination:file;
buffer:array[1..1024] of byte;
readcnt,writecnt:word;
pname,dname,fname,ename:String;
begin
AssignFile(source,scrname);
Try
Reset(source,1);
Except
CopiaArquivo:=1;
Exit;
end;
If destname[length(destname)]='\' then
begin
pname:=scrname;
destname:=destname+separa(scrname,'\',Ocorre(scrname,'\')+1);
end;
AssignFile(destination,destname);
Try
Rewrite(destination,1);
Except
CopiaArquivo:=2;
Exit;
end;
Repeat
BlockRead(source,buffer,sizeof(buffer),readcnt);
Try
BlockWrite(destination,buffer,readcnt,writecnt);
Except
CopiaArquivo:=3; {Disco Cheio?}
Exit;
end;
until (readcnt=0) or (writecnt<>readcnt);
CloseFile(destination);
CloseFile(source);
CopiaArquivo:=0;
end;

Exemplo:

resultado := CopiaArquivo('C:\diretorio\FILE.EXT','C:\diretorio\FILE.EXT');

Devolve 0=Ok, 1=Erro no Origem, 2=Erro no Destino, 3=Disco Cheio

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 56/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 38
ComboBox1.DroppedDown := True;

Inicio da pagina 

Dica numero : 39
A rotina abaixo deverá ser colocada no evento OnDrawDataCell, do DBGrid.

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field:


TField; State:
TGridDrawState);
begin
if gdFocused in State then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color:=clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Field.AsString);
end;
end;

Inicio da pagina 

Dica numero : 40
IncMonth(Data, 1);

No exemplo, a variável Data é do tipo TDateTime.

Inicio da pagina 

Dica numero : 41
function TForm1.TemDiscoNoDrive(const drive : char): boolean;
var
DriveNumero : byte;
EMode : word;
begin
result := false;
DriveNumero := ord(Drive);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 57/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

if DriveNumero >= ord('a') then


dec(DriveNumero,$20);
EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
if DiskSize(DriveNumero-$40) = -1 then
Result
else := true
messagebeep(0);
finally
SetErrorMode(EMode);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
if TemDiscoNoDrive('a') then
ShowMessage('Tem disco No drive A:')
else
ShowMessage('Não tem Disco no Drive A:');
end;

end.

Inicio da pagina 

Dica numero : 42
Para acessar as variáveis do ambiente DOS, deve-se usar a função da API
GetDosEnvironment. Ela
retorna um PChar que pode ser avaliado.

Inicio da pagina 

Dica numero : 43
Quando você executa um programa DOS no Windows95, sua janela permanece aberta
até ser fechada
pelo usuário. Para executar um programa DOS que fecha sua janela após a execução,
deve ser
especificado "command.com /c programa" na linha de comando. Usando a função da
API WinExec
para executar um programa chamado proddos.exe, a chamada deve ser:

WinExec('c:\command.com /c progdos.exe', sw_ShowNormal);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 58/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Se o programa deve ser executado sem que seja visualizado pelo usuário, o segundo
parâmetro deve ser
sw_Hide. Deve ser especificada a extensão .com, senão o programa não será executado.

Inicio da pagina 

Dica numero : 44
 No Microsoft® Windows®, existe uma tabela do sistema chamada „atom table‟. Esta
tabela armezena
strings com seus correspondentes identificadores. Existem várias funções da API do
windows,
chamadas de „atom functions‟, que permitem que uma aplicação insira, apague, procure

por uma
determinada „atom string‟, etc.. O código abaixo garante que somente uma instância do
executável
de sua aplicação estará carregado em memória. O form1 seria o form principal da
aplicação:

procedure TForm1.FormCreate(Sender: TObject);


begin
{Procura na tabela para verificar se o programa já está rodando}

{Substitua a string „MINHA STRING‟ por uma de sua conveniência}  


if GlobalFindAtom(„MINHA STRING') = 0 then  
{zero significa não encontrar}
atom := GlobalAddAtom(„MINHA STRING‟)  
else

begin

{Se o programa já estiver rodando, então mostrar a mensagem e parar}


MessageDlg(„A aplicação já encontra-se em execução!!', mtWarning, [mbOK], 0);
Halt;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
{Remove o item da tabela, de modo que a aplicação possa ser executada novamente}
GlobalDeleteAtom(atom);
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 59/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 45
Utilize o comando with, desse modo:
With Edit1 do
begin
Text := ' @Delphi';
Widht := 30;
Enabled := True;
end;

Inicio da pagina 

Dica numero : 46
No Evento OnKeyPress de um Edit:

if Key = Chr(VK_RETURN) then


Perform(WM_NEXTDLGCTL,0,0);

Inicio da pagina 

Dica numero : 47
Se for um richedit e margens laterais(direita e esquerda) tenta

RichEdit1.Paragraph.FirstIndent -> Paragrafo


RichEdit1.Paragraph.LeftIndent -> margem esquerda
RichEdit1.Paragraph.RightIndent -> margem direita

Inicio da pagina 

Dica numero : 48
Paradox:

Session.AddStandardAlias('SeuAlias', edtPath.text, 'Paradox');


Session.SaveConfigFile;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 60/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 49
var
OldValue : LongBool;
begin
{liga a trava}
SystemParametersInfo(97, Word(True), @OldValue, 0);
{desliga a trava}
SystemParametersInfo(97, Word(False), @OldValue, 0);
end;

Inicio da pagina 

Dica numero : 50
Form1:=tform1.create(application);
Form1.show;
Form1.update;

Form1.hide;
Form1.free;
Application.Run;

Obs: apagar a primeira linha, 'Application.Initialize'.

Inicio da pagina 

Dica numero : 51
function encrypt( dummy: Pchar):Pchar;
var
x: Integer;
w: Word;
s: String;
c: Char;
begin
s:=StrPas(dummy);
w:=StrLen(dummy);
for x:=1 to w do
begin
c:=s[x];
c:=char ( ord (c) xor 159);
s[x]:=c;
end;
StrPCopy(dummy,s);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 61/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

encrypt:=dummy;
end;

Inicio da pagina 

Dica numero : 52
function TForm1.StrReverse(MyString : string) : String;
var
i: integer;
HelpString: string;
begin
HelpString := '';
for i := 1 to :=
HelpString Length(MyString) do
MyString[i]+HelpString;
Result := HelpString;
end;

Inicio da pagina 

Dica numero : 53
{Integer to Binary}
function IntToBin(Value: LongInt;Size: Integer): String;
var
i: Integer;
begin
Result:='';
for i:=Size downto 0 do
begin
if Value and (1 shl i)<>0 then
begin
Result:=Result+'1';
end
else
begin
Result:=Result+'0';
end;
end;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 62/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 54
{Binary to Integer}
function BinToInt(Value: String): LongInt;
var
i,Size: Integer;
begin
Result:=0;
Size:=Length(Value);
for i:=Size downto 0 do
begin
if Copy(Value,i,1)='1' then
begin
Result:=Result+(1 shl i);
end;
end;

Inicio da pagina 

Dica numero : 55
const
StartKey = 981; {Start default key}
MultKey = 12674; {Mult default key}
AddKey = 35891; {Add default key}
{Encriptar}
function Encrypt(const InString: string; StartKey,MultKey,AddKey: Integer): string;
var
I: Byte;
begin
Result := '';
for I := 1 to Length(InString) do
begin
Result
StartKey:= :=
Result + CHAR(Byte(InString[I])
(Byte(Result[I]) xor (StartKey
+ StartKey) * MultKey shr 8));
+ AddKey;
end;
end;
{Descriptar}
function Decrypt(const InString: string; StartKey,MultKey,AddKey: Integer): string;
var
I: Byte;
begin
Result := '';
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 63/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;


end;
end;

Inicio da pagina 

Dica numero : 56
Para tratar erros de forma genérica, em todo o seu programa, insira no método ON
CREATE do formulário
principal a linha:

Application.OnException:=RotinaGeral;

RotinaGeral é uma procedure na qual deverá constar o código para verificar e enviar as
mensagens de
erro do seu sistema.

Inicio da pagina 

Dica numero : 57
Muitas vezes torna-se necessário, ou até mesmo, imprescindível que você envie
informações diretamente
para a impressora, uma vez que a utilização da impressão típica do Windows é um
pouco demorada e
o uso do driver Genérico/Somente Texto não é muito confiável.

Uma boa solução para enviar informações diretamente para a impressora é usar o
seguinte código:

Procedure TForm1.Button1Click(Sender: Object);


var
Imp: TextFile;
begin
AssignFile(Imp, 'LPT1');
Rewrite(Imp);
Write(Imp, 'Isto vai sair na impressora');
CloseFile(Imp);
end;

Desta forma será possível, inclusive, utilizar os códigos de configuração da impressora.


Para a impressora
padrão Epson, por exemplo, você poderia utilizar algo assim:

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 64/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Write(Imp, #27#69 + 'Teste' + #27#70); { impressão em negrito }


Write(Imp, #15 + 'Teste' + #18); { impressão no modo condensado }
Write(Imp, #12); { salto de página }

Inicio da pagina 

Dica numero : 58
Ao trabalharmos com impressão, em certos casos desejamos alterar o comportamento da
impressora.

Algumas opções, principalmente em impressoras matriciais, são obtidas através do


envio dosde
"códigos chamados
escape" para a impressora (por exemplo, alterar espaçamento entre as linhas
(#45),
tipo de fonte (#18, #23), etc). Em versões 16-bit do Windows, isso não era complicado,
mas agora,
nas versões 32-bit, o acesso direto ao hardware não é mais possível.

Portanto, para enviarmos caracteres diretamente a impressora, devemos utilizar o


"escape" chamado
"PASSTHROUGH" do Windows e enviarmos a informação desejada diretamente.

Na documentação do Win32 SDK este escape é dado como obsoleto, mas enquanto
utilizarmos
impressoras matriciais que necessitem de "códigos escape" para certas funcionalidades,
ele será
necessário.

Ao utilizar impressoras Postscript tenha cuidado, pois nem sempre esta técnica irá
funcionar. Em
impressoras matriciais, você pode enviar qualquer tipo de caracteres que achar
necessário.

Abaixo segue um código exemplificando o envio de uma string qualquer diretamente ao


buffer da
impressora:

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 65/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
var
Form1: TForm1;

implementation

{$R *.DFM}

uses Printers;

type
{ Tipo requerido pelo PASSTHROUGH }
TBufferImpressora = record
TamanhoBuffer: Word;
Buffer: array [0..255] of Char;
end;

procedure TForm1.Button1Click(Sender: TObject);


var
Buff: TBufferImpressora;
TestePasstrough: Integer;
strFoo: string;
begin
{ Primeiro devemos checar se o "escape" PASSTHROUGH é suportado. Para isso,
executamos a função
"Escape" passando o QUERYESCSUPPORT. Caso o driver suporte, ela irá retornar um
valor maior
que 0 }
TestePasstrough := PASSTHROUGH;
if Escape(Printer.Handle, QUERYESCSUPPORT, SizeOf(PASSTHROUGH),
@TestePasstrough, nil) > 0
then
begin
{ Inicializamos o driver }
Printer.BeginDoc;
{ Informação qualquer a enviar diretamente para a impressora }
strFoo := 'Passthrough string';
{ Copia da string para astrFoo);
StrPCopy(Buff.Buffer, estrutura }
{ Indicamos o tamanho da informação}
Buff.TamanhoBuffer := StrLen(Buff.Buffer);
{ Enviamos o "escape" }
Escape(Printer.Canvas.Handle, PASSTHROUGH, 0, @Buff,nil);
{ Descarregamos... }
Printer.EndDoc;
end;
end;
end.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 66/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 59
procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
i : integer;
begin
AssignFile(F,‟LPT1'); 
Rewrite(F);
i := 0;
Writeln(F,‟Teste de impressao - Linha 0');
Writeln(F,‟Teste de impressao - Linha 1');
Writeln(F,#27#15+‟Teste de Impressão - Linha 2');

W riteln(F,‟Teste de impressao
Writeln(F,#27#18+‟Teste - Linha 3');
de Impressão - Linha 4');
Writeln(F,‟Teste de impressao - Linha 5');
Writeln(F,#12); // Ejeta a página
CloseFile(F);
end;

Inicio da pagina 

Dica numero : 60
No evento OnCreate do Form:
Application.OnHint := DisplayHint;
Crie (e defina) uma Procedure DisplayHint (no Form Principal):
StatusBar1.Panels[0].Text := Application.Hint;

Inicio da pagina 

Dica numero : 61
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
begin
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0,0,Screen.Width,Screen.Height);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 67/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Form1.Canvas.CopyRect(DeskTopRect,DeskTopCanvas,DeskTopRect);
ReleaseDC(GetDeskTopWindow,DeskTopDC);
end;

Inicio da pagina 

Dica numero : 62
Para compactar (remover fisicamente todos registros apagados) de uma tabela Paradox
deve-se utilizar o
seguinte código:

procedure ParadoxPack(Table : TTable);

var
TBDesc : CRTblDesc;
hDb: hDbiDb;

TablePath: array[0..dbiMaxPathLen] of char;

begin

FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
bPack := True;
end;
hDb := nil;
Check(DbiGetDirectory(Table.DBHandle, True, TablePath));
Table.Close;
Check(DbiOpenDatabase(nil, 'STANDARD', dbiReadWrite,
dbiOpenExcl,nil,0, nil, nil, hDb));
Check(DbiSetDirectory(hDb, TablePath));
Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False));
Table.Open;
end;

Inicio da pagina 

Dica numero : 63

Normalmente o Delphi busca os formatos de data/hora, moeda e formato numérico da


Configuração

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 68/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Internacional do Painel de Controle. Isto pode levar a erros quando avaliando datas,
números ou
listas.
Para evitar estes erros, você pode mudar as constantes definidas no Delphi, como
DecimalSeparator,
ShortFormatDate e outros desta maneira:
DecimalSeparator :='.';

ShortFormatDate :='mm/dd/yy';

Isto terá precedência sobre a configuração padrão. Para uma lista completa das
variáveis, procure em
Currency Formating Variables na ajuda do Delphi.

Inicio da pagina 

Dica numero : 64
Para listas (pegar) todas as janelas abertas, deve-se usar a função API EnumWindows,
que usa uma
função Callback, com dois parâmetros, um Handle para a janela e um ponteiro. Você
pode usá-la
como um código semelhante a este (este lista as janelas abertas, mesmo invisíveis, em
uma listbox):

function EnumWindowsProc(Wnd: HWnd; Form:TForm1): Boolean; Export; {$ifdef 


Win32} StdCall;
{$endif}
var
Buffer: Array[0..99] of Char;
begin
GetWindowText(Wnd, Buffer, 100);
if StrLen(Buffer)=0 then
Form.ListBox1.Items.Add(StrPas(Buffer));
Result :=True;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
EnumWindows(@EnumWindowsProc, LongInt(Self));
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 69/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 65
Para converter a primeira letra de um Edit para maiúsculas este código pode ser
utilizado:

procedure TForm1.Edit1Change(Sender: TObject);


var
OldStart: Integer;
begin
with Edit1 do
if Text <> '' then
begin
OnChange :=NIL;
OldStart :=SelStart;
Text :=UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
OnChange :=Edit1.Change;
end;
end;

Inicio da pagina 

Dica numero : 66
Turn monitor off 
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER,
0);

Turn monitor on
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -
1);

Inicio da pagina 

Dica numero : 67
Adicionar à cláusula Uses, Shellapi.

Digitar os seguintes parâmetros:

Swapmousebutton(true) ;

Para voltar ao normal basta mudar para False.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 70/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 68
Primeiro deve-se adicionar à cláusula Uses, ShellApi.

Em seguida deve-se digitar os seguinte comandos:

procedure TForm1.FormCreate(Sender: TObject);


var
Arquivo: String;
begin
Arquivo:='c:\windows\nuvens.bmp';
SystemParametersInfo(SPI_SetDeskWallPaper, 0, PChar(Arquivo), 0);
end;

Inicio da pagina 

Dica numero : 69
Arquivos Paradox podem ser compartilhados em rede. Para que isto ocorra devemos:

Adicionar o Database Engine Configuration (BDE Config);


Selecionar a página Drivers;
Selecionar o driver PARADOX e alterar o parâmetro NET DIR para o local onde serão
gravados os
arquivos de controle para compartilhamento. Por exemplo, "G:\MEUAPLIC", onde G
corresponde ao
drive de rede e MEUAPLIC, o diretório onde está o aplicativo (executável);
Depois selecionar a página System;
Alterar o parâmetro LOCAL SHARE para TRUE. Após isto o BDE controlará o
compartilhamento de
arquivos Paradox em rede.

Inicio da pagina 

Dica numero : 70
Para fazer pesquisa incremental numa tabela usando um EDIT, deve-se colocar o
seguinte código em seu
evento OnChange:

procedure TForm1.Edit1Change(Sender: TObject);


begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 71/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Width Edit1 do
if Text <>'' then
Table1.FindNearest([Text]);
end;

Inicio da pagina 

Dica numero : 71
Para incluir mais de uma linha no Hint você deve utilizar o evento OnMouseMove de
cada componente.

Veja abaixo como ficará o código em um Edit por exemplo:


procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y:
Integer);
begin
Edit1.hint := „Primeira Linha‟+#13+‟Segunda Linha‟+#13+  
„Terceira Linha‟+#13+‟Quarta Linha‟; 
end;

Obs. Não esquecer de mudar para TRUE a propriedade ShowHint.

Inicio da pagina 

Dica numero : 72
Esta dica só funciona em Delphi 1.0.

No Projeto (.DPR):
uses windows, messages, // necessarios acrescentar
Forms, ...........
var
Hwnd: THandle; // variavel necessaria
begin
Hwnd:=FindWindow('O seu TForm', 'O caption do seu form principal');
if Hwnd = 0 then begin
Application.Initialize;
end
else begin
if not IsWindowVisible(Hwnd) then begin // se minimizado
ShowWindow(Hwnd, SW_SHOWNORMAL); //mostra
PostMessage(Hwnd, WM_USER, 0, 0); //restaura

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 72/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

end;
SetForegroundWindow(Hwnd); // visivel
end;

No Programa principal coloque:

private
{ Private declarations }
public
procedure WMUser(var msg: TMessage); message WM_USER; //definicao
{ Public declarations }
end;

implementation

{$R *.DFM}

procedure TPrincipal.WMUser(var msg: TMessage); //uso de fato.


begin
Application.restore;
end;

Inicio da pagina 

Dica numero : 73
Para mostrar as resoluções de vídeo disponíveis, deve-se usar a função da API
EnumDisplaySettings: ela
pega todos os modos de vídeo disponíveis.

Para alterar os modos, deve-se usar a função ChangeDisplaySettings, que muda a


resolução de vídeo e
quantidade de cores.

Inicio da pagina 

Dica numero : 74
unit sobreManager;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,


Buttons, ExtCtrls;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 73/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

type
TfrmSobreManager = class(TForm)
btnOK: TButton;
ProductName: TLabel;
Version: TLabel;
Label1:
Label2: TLabel;
TLabel;
Label3: TLabel;
Copyright: TLabel;
Panel1: TPanel;
Image2: TImage;
GroupBox1: TGroupBox;
Bevel1: TBevel;
stOSVersao: TStaticText;
stOSBuilder: TStaticText;
stOS: TStaticText;
stOSService: TStaticText;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmSobreManager: TfrmSobreManager;

implementation

{$R *.DFM}

 // VERIFICA E APRESENTA AS INFORMAÇÕES do SISTEMA OPERACIONAL


(FaC)

procedure TfrmSobreManager.FormCreate(Sender: TObject);


var
verInfo : TOsVersionInfo;

Istr: Word;
: String;
begin
verInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(verInfo) then begin
stOSVersao.Caption := 'Versão : '+ IntToStr(verInfo.dwMajorVersion) +
IntToStr(verInfo.dwMinorVersion);
stOSBuilder.Caption := 'Compilação : '+IntToStr(verInfo.dwBuildNumber);
str := 'Sistema Operacional : ';
case verInfo.dwPlatformId of 
VER_PLATFORM_WIN32s : stOS.Caption := str +'Windows 95';
VER_PLATFORM_WIN32_WINDOWS
98'; : stOS.Caption := str +'Windows 95 Osr2 / 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 74/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

VER_PLATFORM_WIN32_NT : stOS.Caption := str +'Windows NT';


end;

str := '';

for I :=str0+toverInfo.szCSDVersion[I];
str := 127 do
stOSService.Caption := 'Informações Adicionais : '+ str;
end
end;

end.

Inicio da pagina 

Dica numero : 75
Existe na API do BDE uma funcao chamada DbiGetNetUserName, que retorna o nome
do usuário logado.
Tente o seguinte:

function GetUserName:string;
var
Nome: array[0..64] of char;
begin
if DbiGetNetUserName(Nome) <> DBIERR_NONE then Nome:='';
Result:=StrPas(Nome);
end;

Inicio da pagina 

Dica numero : 76
Crie um Alias para o seu banco da dados(Fizemos com um banco do Interbase).
Adicione o seguinte
código ao seu programa(Neste caso o código foi feito no evento OnActivate do Form1):

procedure TForm1.FormActivate(Sender: TObject);


Var
MyStringList: TStringList;
i: Integer;
begin
try
MyStringList:= TStringList.Create;
Session.GetTableNames('SeuAlias','*.*',False, False, MyStringList);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 75/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

For i:= 1 To MyStringList.Count-1 do


ListBox1.Items.Add(MyStringList.Strings[i]);
finally
MyStringList.Free;
end;
end;
O método GetTableNames trabalha com cinco parâmetros:

1-Item do tipo String=Nome do Alias do banco desejado.


2-Item do tipo String=Especifique um filtro para retornar somente as tabelas desejadas.
Podem incluir
símbolos(Wildcards) como por exemplo '*'.
3-Item do tipo Boolean=Para pesquisas em Paradox e dBASE, defina True para incluir a
extensão do
arquivo como parte do nome da tabela.
Para tabelas SQL, defina False.
4-Item do tipo Boolean=Defina True para tabelas SQL para receber também o nome das
tabelas de
sistema as quais contém a estrutura dos dados. Defina False para tabelas Paradox e
dBASE.
5-Item do tipo TStringList=Nome do StringList onde serão guardados os nomes das
tabelas.

Inicio da pagina 

Dica numero : 77
Caracter Definições
! Faz com que a digitação da máscara fique parada no primeiro caracter, fazendo com
que os caracteres
digitados que se movam. Ex: !;0;_
> Todos os caracteres digitados serão convertidos para maiúsculas. Ex: >aaa;0;_
< Todos os caracteres digitados serão convertidos para minúsculas. Ex:
<> Anula o uso dos caractes > e <, ou seja, utilizado para cancelar a opção de máscara
para os
caracteres a direita. Ex: >aaa<>aaa;0;_
 \ Utilizado para marcar determinado caracter não especial como fixo. Ex: !\(999\)000-
0000;0;_
L Exige caracteres alfabéticos obrigatórios para a posição, do tipo A-Z, a-z. Ex:
LLL;1;_
l Somente caracteres alfabéticos para a posição, mas não-obrigatórios, do tipo A-Z, a-z.
Ex: lll;1;_
A Exige caracteres alfanuméricos obrigatórios para a posição, do tipo A-Z, a-z, 0-9. Ex:
AAA;1;_
a Somente caracteres alfanuméricos para a posição, mas não-obrigatórios, do tipo A-Z,
a-z, 0-9. Ex:
aaa;1;_

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 76/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

C Requer um caracter obrigatório para a posição. Ex: CCC;1;_


c Permite o uso de qualquer caracter para a posição, limitando apenas o número de
caracteres. Ex:
ccc;1;_
0 Exige caracteres numéricos obrigatórios para a posição, do tipo 0-9. Ex: 000;1;_
9999;1;_
Somente caracteres numéricos para a posição, não-obrigatórios, do tipo 0-9. Ex:
# Somente caracteres numéricos para a posição e o uso dos sinais de - ou +, não-
obrigatórios. Ex:
###;1;_
: Utilizado como separador de horas, minutos e segundos.
 / Utilizado como separador de dia, mês e ano.

Inicio da pagina 

Dica numero : 78
Para traduzir algumas as mensagens do Delphi que aparecem nos botões e nas caixas de
avisos da
função MessageDlg, você necessita dos arquivos de recursos do Delphi (*.RC).
Possuo o Delphi 2 - Developers, que vem acompanhado de alguns destes arquivos de
recursos. No meu
caso, eles estão gravados em C:\DELPHI2\SOURCE\VCL.
Os arquivos *.RC são arquivos "só texto", e contêm diversas mensagens utilizadas nos
programas
compilados no Delphi. O exemplo que se segue realiza alterações nos arquivos
CONSTS.RC e
DBCONSTS.RC. A alteração de outros arquivos "RC" pode ser feita de modo similar.
Para maiores
detalhes, envie-me um e-mail (paulosd@dglnet.com.br), ou, melhor ainda, consulte o
livro
"Dominando o Delphi" (edição para o Delphi 1), de Marcos Cantù, ed. Makron Books.
O assunto
"Usando recursos de tabelas de strings" está no capítulo 21, página 876. Não sei se a
edição para o
Delphi 2 cobre este assunto.
a) Faça uma cópia dos arquivos CONSTS.RC e DBCONSTS.RC em um diretório
seguro, para o caso de algo
sair errado.

b) Pelo mesmo motivo, faça uma cópia dos arquivos CONSTS.RES e


DBCONSTS.RES, que estão no
diretório LIB do Delphi. No meu caso, o diretório destes arquivos é C:\DELPHI2\LIB.

c) Use o Bloco de Notas para abrir e alterar os arquivos CONSTS.RC e


DBCONSTS.RC. (O Edit também
serviria; entretanto, para acentuação correta no Windows, o Bloco de Notas é melhor).

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 77/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
Você só deve alterar as strings que estão entre aspas. Não altere o nome das constantes,
que estão no
início de cada linha.
Por exemplo, localize o seguinte bloco, em CONSTS.RC:

SCancelButton, "Cancel"
SYesButton, "&Yes"
SNoButton, "&No"

Altere para:

SCancelButton, "Cancelar"
SYesButton, "&Sim"
SNoButton, "&Não"

Não é necessário alterar todas as mensagens. Se desejar, altere apenas aquelas que você
utiliza em
seus sistemas. Lembre-se de salvar as alterações efetuadas.

d) Acione o prompt do DOS, e execute do seguinte modo o compilador de recursos do


Delphi 2
(BRC32.EXE), que está no diretório BIN do Delphi (no meu caso, C:\DELPHI2\BIN):

C:\DELPHI2\BIN\BRC32 -R CONSTS.RC
C:\DELPHI2\BIN\BRC32 -R DBCONSTS.RC

(No Delphi 1, o compilador tem o seguinte nome: BRC.EXE).

e) Os dois comandos anteriores irão gerar os arquivos CONSTS.RES e


DBCONSTS.RES. Copie os dois
"*.RES" para o diretório LIB do DELPHI (no meu caso C:\DELPHI2\LIB)

f) Crie uma aplicação no Delphi que utilize a função MessageDlg, e botões "BitBtn".
Ao rodar o seu
programa, as mensagens já devem aparecer traduzidas.

Inicio da pagina 

Dica numero : 79
procedure TForm1.BtSelecionaClick(Sender: TObject);
var
FileHandle : THandle;
LocalFileTime : TFileTime;
DosFileTime : DWORD;
LastAccessdTime : TDateTime;
FindData : TWin32FindData;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 78/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

NomeArquivo : array[0..255] of char;


begin
if OdSelecionaArquivo.Execute then
begin
EdArquivo.Text := OdSelecionaArquivo.FileName;
StrPCopy(NomeArquivo,OdSelecionaArquivo.FileName);
FileHandle := FindFirstFile(NomeArquivo, FindData);
if FileHandle = INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimetoLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
FileTimeToDosDateTime(LocalFileTime, LongRec(DosFileTime).Hi,
LongRec(DosFileTime).Lo);
LastAccessdTime := FileDateToDateTime(DosFileTime);
EdUltimoAcesso.Text := DateTimeToStr(LastAccessdTime);
end;
end;
end;
end;

Inicio da pagina 

Dica numero : 80
Um dos recursos disponibilizados pelo Delphi é a customização das informações de
versão a serem
"anexadas" na linkagem.
Pouco utilizado, este recurso é muito interessante, pois possibilita o cadastro de diversas
informações
sobre o arquivo gerado, como: número de versão, nome do produto, nome interno do
arquivo,
nome da empresa, etc.

Podemos alterar as informações na página "Version Info", da página "Project Options":


Atenção com o item "Auto-increment build number": ele só será incrementado
automaticamente quando
for executada a opção "Build All" para compilar o projeto.
Porém, não existem rotinas "prontas" para obtermos estas informações. É necessário
fazermos chamadas
diretamente a API Win32, mais espeficamente, para as funções como a
"GetFileVersionInfo" e a
"VerQueryValue".
Abaixo encontramos uma função, a "FileVerInfo", que exemplifica o processo de
obtenção das
informações. Ela irá retornar "True" caso o arquivo informado no parâmetro

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 79/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

"FileName" possuir as
informações de versão, e devolverá por referência um "TStringList" contendo as
informações.

 //Código
function FileVerInfo(const FileName: string; var FileInfo: TStringList): Boolean;
const
Key: array[1..9] of string =('CompanyName', 'FileDescription', 'FileVersion',
'InternalName',
'LegalCopyright', 'OriginalFilename', 'ProductName', 'ProductVersion', 'Comments');
KeyBr: array [1..9] of string = ('Empresa', 'Descricao', 'Versao do Arquivo', 'Nome
Interno', 'Copyright',
'Nome Original do Arquivo', 'Produto', 'Versao do Produto', 'Comentarios');
var
Dummy : THandle;
BufferSize, Len : Integer;
Buffer : PChar;
LoCharSet, HiCharSet : Word;
Translate, Return : Pointer;
StrFileInfo, Flags : string;
TargetOS, TypeArq : string;
FixedFileInfo : Pointer;
i : Byte;

begin
Result := False;
{ Obtemos o tamanho em bytes do "version information" }
BufferSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
if BufferSize <> 0 then
begin
GetMem(Buffer, Succ(BufferSize));
try
if GetFileVersionInfo(PChar(FileName), 0, BufferSize,
Buffer) then
{ Executamos a função "VerQueryValue" e conseguimos informações sobre o idioma
 /character-set }
if VerQueryValue(Buffer, '\VarFileInfo\Translation', Translate, UINT(Len)) then
begin
LoCharSet := LoWord(Longint(Translate^));
HiCharSet := HiWord(Longint(Translate^));
for i := 1 to 9 do
begin
{ Montamos a string de pesquisa }
StrFileInfo := Format('\StringFileInfo\0%x0%x\%s', [LoCharSet, HiCharSet, Key[i]]);
{ Adicionamos cada key pré-definido }
if VerQueryValue(Buffer,PChar(StrFileInfo),
FileInfo.Add(KeyBr[i] + ': ' + PChar(Return));Return, UINT(Len)) then

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 80/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

end;
if VerQueryValue(Buffer,'\',FixedFileInfo, UINT(Len))
then
with TVSFixedFileInfo(FixedFileInfo^) do
begin
Flags := ''; um bitmask e obtemos os "flags" do arquivo}
{Efetuamos
if (dwFileFlags and VS_FF_DEBUG) = VS_FF_DEBUG then
Flags := Concat(Flags,'*Debug* ');
if (dwFileFlags and VS_FF_SPECIALBUILD) = VS_FF_SPECIALBUILD then
Flags := Concat(Flags, '*Special Build* ');
if (dwFileFlags and VS_FF_PRIVATEBUILD) = VS_FF_PRIVATEBUILD then
Flags := Concat(Flags, '*Private Build* ');
if (dwFileFlags and VS_FF_PRERELEASE) = VS_FF_PRERELEASE then
Flags := Concat(Flags, '*Pre-Release Build* ');
if (dwFileFlags and VS_FF_PATCHED) = VS_FF_PATCHED then
Flags := Concat(Flags, '*Patched* ');
if Flags <> '' then FileInfo.Add('Atributos: ' + Flags);
TargetOS := 'Plataforma (OS): ';
{ Plataforma }
case dwFileOS of 
VOS_UNKNOWN :
TargetOS := Concat(TargetOS, 'Desconhecido');
VOS_DOS :
TargetOS := Concat(TargetOS, 'MS-DOS');
VOS_OS216 :
TargetOS := Concat(TargetOS, '16-bit OS/2');
VOS_OS232 :
TargetOS := Concat(TargetOS, '32-bit OS/2');
VOS_NT :
TargetOS := Concat(TargetOS, 'Windows NT');
VOS_NT_WINDOWS32, 4:
TargetOS := Concat(TargetOS, 'Win32 API');
VOS_DOS_WINDOWS16:
TargetOS := Concat(TargetOS, '16-bit Windows ',
'sob MS-DOS');
else
TargetOS := Concat(TargetOS, 'Fora do Padrão. Código: ', IntToStr(dwFileOS));
end;

FileInfo.Add(TargetOS);
TypeArq := 'Tipo de Arquivo: ';
{ Tipo de Arquivo }
case dwFileType of 
VFT_UNKNOWN :
TypeArq := Concat(TypeArq,'Desconhecido');
VFT_APP : TypeArq := Concat(TypeArq,'Aplicacao');
VFT_DLL : TypeArq := Concat(TypeArq,'Dynamic-Link Lib.');
VFT_DRV
TypeArq := :Concat(TypeArq,'Device
begin driver - Driver ');

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 81/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

case dwFileSubtype of VFT2_UNKNOWN : TypeArq := Concat (TypeArq,


'Desconhecido');
VFT2_DRV_PRINTER : TypeArq := Concat(TypeArq,'de Impressao');
VFT2_DRV_KEYBOARD : TypeArq := Concat(TypeArq,'de Teclado');
VFT2_DRV_LANGUAGE : TypeArq := Concat(TypeArq,'de Idioma');
VFT2_DRV_DISPLAY
VFT2_DRV_MOUSE : TypeArq : TypeArq:=:=Concat(TypeArq,'de
Concat(TypeArq,'deMouse');
Vídeo');
VFT2_DRV_NETWORK : TypeArq := Concat(TypeArq,'de Rede');
VFT2_DRV_SYSTEM : TypeArq := Concat(TypeArq,'de Sistema');
VFT2_DRV_INSTALLABLE : TypeArq := Concat(TypeArq,'Instalavel');
VFT2_DRV_SOUND : TypeArq := Concat(TypeArq,'Multimida');
end;
end;
VFT_FONT : begin
TypeArq := Concat(TypeArq,'Fonte - Fonte ');
case dwFileSubtype of VFT2_UNKNOWN : TypeArq := Concat(TypeArq,
'Desconhecida');
VFT2_FONT_RASTER : TypeArq := Concat(TypeArq,'Raster');
VFT2_FONT_VECTOR : TypeArq := Concat(TypeArq,'Vetorial');
VFT2_FONT_TRUETYPE : TypeArq := Concat(TypeArq,'TrueType');
end;
end;
VFT_VXD : TypeArq := Concat(TypeArq,'Virtual Device');
VFT_STATIC_LIB
: TypeArq := Concat(TypeArq,'Static-Link Lib.');
end;
FileInfo.Add(TypeArq);
end;
end;
finally
FreeMem(Buffer, Succ(BufferSize));
Result := FileInfo.Text <> '';
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);


var
StrLst: TStringList;
begin
StrLst := TStringList.Create;
try
FileVerInfo('C:\WINDOWS\SYSTEM\TAPI.DLL', StrLst);
Memo1.Lines.Assign(StrLst);
finally
StrLst.Free;
end;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 82/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 81
procedure AcertaPadraoData;

const

arrShortDayNames: array[1..7] of string[3] = ('Dom','Seg','Ter','Qua','Qui','Sex','Sab');


arrLongDayNames: array[1..7] of string[15] =
('Domingo','Segunda','Terça','Quarta','Quinta', 'Sexta',
'Sábado');
arrShortMonthNames: array[1..12] of string[3] =
('Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago',
'Set','Out','Nov','Dez');
arrLongMonthNames: array[1..12] of string[15] = ('Janeiro','Fevereiro',
'Março','Abril','Maio',
'Junho','Julho','Agosto', 'Setembro','Outubro','Novembro','Dezembro');

var
ii: integer;

begin
ShortDateFormat := 'dd/mm/yyyy';
DecimalSeparator := '.';
ThousandSeparator := ',';

for ii := 1 to 7 do begin
ShortDayNames[ii] := arrShortDayNames[ii];
LongDayNames[ii] := arrLongDayNames[ii];
end;

for ii := 1 to 12 do begin
ShortMonthNames[ii] := arrShortMonthNames[ii];
LongMonthNames[ii] := arrLongMonthNames[ii];
end;

end;
Inicio da pagina 

Dica numero : 82
Ajuste a propriedade Style do ComboBox para csOwnerDrawVariable.

procedure TForm1.FormCreate(Sender: TObject);


var

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 83/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Bmp1, Bmp2, Bmp3: TBitmap;


begin
Bmp1:=TBitmap.Create;
Bmp.Loadfromfile('c:\chip16.bmp');
Bmp2:=TBitmap.Create;
Bmp.Loadfromfile('c:\zoom.bmp');
Bmp3:=TBitmap.Create;
Bmp.Loadfromfile('c:\disk.bmp');
ComboBox1.Items.AddObject('Chip',Bmp1);
ComboBox1.Items.AddObject('Zoom',Bmp2);
ComboBox1.Items.AddObject('Disk',Bmp3);
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect:


TRect; State:
TOWnerDrawState);
var
Bitmap: TBitmap;
Offset: Integer;
begin
with (Control as TComboBox).Canvas do begin
FillRect(Rect);
Bitmap:= TBitmap(ComboBox1.Items.Objects[index]);
if Bitmap nil then begin
BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,
Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clRed);
Offset: Bitmap.width + 8;
end;
TextOut(Rect.Left + Offset, Rect.Top, ComboBox1.Items[index]);
end;

end;

procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer;


var Height: Integer);

begin
Height:=20;
end;

Inicio da pagina 

Dica numero : 83
Bookmarks permitem ao programador "memorizar" um determinado local da tabela
para que possa
retornar mais tarde, é muito simples e fácil de usar já que existem apenas três métodos
que lhe

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 84/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

permitem utilizar este recurso.


Para marcar um determinado local em uma tabela necessitamos criar uma nova instancia
de TBookmark e
executar o método GetBookMark de uma TTable.

var
bmLocalImportante : TBookmark;
begin
bmLocalImportante := table.GetBookMark;

{Para retornar a este local em particular a qualquer momento deve-se utiliza o método
GotoBookMark() ,
este método recebe como parâmetro o TBookmark recebido como retorno de
GetBookMark.}

table1.GotoBookMark(bmLocalImportante);

{Após utilizar o Bookmark para o que desejar é importante que a memória utiliza por
este recurso seja
novamente liberada para o sistema,para executar esta operação utilize o método
FreeBookMark.}

table1.FreeBookMark(bmLocalImportante);

{Podem ser criados vários Bookmarks para uma mesma tabela, sendo este numero
limitado apenas pela
quantidade de memória livre no equipamento.}

end;

OBS:Mas cuidado com o uso indevido deste recurso, cada instancia de TBookMark
reserva uma
determinada porção de memória que só será novamente liberada para ser reutilizada
após a
execução de um FreeBookmark. Se vários Bookmarks forem criados e não liberados
podem
comprometer a execução do programa.

Inicio da pagina 

Dica numero : 84
1. insira um Datasource, um DBGrid e dois Table's no form

2. link o Table1 com Datasource1 e DBGrid1

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 85/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
3. defina um banco de dados, uma tabela e ative o Table1

4. defina também para o Table2, mas use uma tabela diferente

5. adicione todos os campos do Table1 através do Fields Editor


6. mude a propriedade Visble para False do campo do Combobox

7. dê um clique com o botão direito do mouse sobre o Fields Editor e escolha New
Field...

8. especifique os parametros para o novo campo


a) Name: < algum nome >
b) Type: < tipo do campo >
c) Size: < tamanho >
d) Field type: Lookup
e) Key Field: < campo que receberá o valor escolhido no combobox & >
f) DataSet: Table2
g) LookUpKeys: < campo listado no combo >
h) Result Field: < campo que será mostrado para o usuário no Combobox >

9. Execute a aplicação.

Inicio da pagina 

Dica numero : 85
procedure TForm1.Button1Click(Sender: TObject);
var
NRW: TNetResource;
begin
with NRW do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := 'G:';
lpRemoteName := '\\servidor\c';
lpProvider := '';
end;
WNetAddConnection2(NRW, 'MyPassword', 'MyUserName',
CONNECT_UPDATE_PROFILE);

end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 86/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 86
Configurar uma rede Novell para trabalhar com Delphi é muito facíl, mais facíl que um
rede ponto a ponto
como Windows 95 ...
Primeiro precisamos de um diretório onde será criado o NET FILE do Paradox,
normalmente um diretório
partindo do raiz do servidor será o suficiente, vamos usar o drive padrão da Novell para
exemplificar o caso ...

F: <-- drive da rede

F:\NETDIR <-- o diretório do NET FILE

Para o diretório onde serão armazenados os arquivos do seus sistema não é necessário
nenhum cuidado
especial, podemos assumir alguma configuração como a que segue ...

F:\SISTEMA\DADOS <-- diretório de dados

Para quem trabalha todos os dias com uma rede Novell existe uma armadilha que pode
causar umas noites
mal dormidas :( ...
Uma das coisas que muitos tentam para economizar um pouco do HD local é colocar o
executável na rede,
sem grandes problemas desde que você tenha um cuidado básico. Sempre que você
executa
programaumque trata com base Paradox o PRIVATE DIR fica sendo o diretório onde este
executável
se encontra, no caso de você colocar este executável em um diretório da rede para ser
acessado
por muitos como fica este diretório PRIVATE ??? jé não é mais tanto PRIVATE né ...

Para resolver este problema você deve "programaticamente" alterar o Private Dir para
um diretório
local,para isso você tem de adicionar as seguintes linhas de código ao iniciar a sua
aplicação.

Session.PrivateDir := 'C:\WINDOWS\TEMP';

Para ter acesso a Session voce tem de incluir a unit DB na clausula

Uses do seu projeto.

Este cuidado pode prevenir varias travadas sem razão aparente em redes Novell.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 87/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 87
Vamos exemplificar com tres maquinas, 1 servidor chamado SERV e duas maquinas
clientes. Claro que
isto pode ser incrementado de acordo com suas necessidades :).

No servidor:

diretório real D:\SISTEMA\DADOS

compartilhe o subdiretorio D:\SISTEMA\DADOS como um recurso chamado


Servidor_H

no AUTOEXEC.BAT incluir ? Subst H: D:\SISTEMA\DADOS

Nas maquinas clientes:


mapear drive de rede H: como \\SERV1\Servidor_H

No fim deste processo você terá o drive H: como sendo o seu Drive de rede para o
Sistema, este drive
estará presente em todas as maquinas e pode ser utilizado como seu NET DIR.

No BDE Configuration:

NET DIR: H: (Para o driver Paradox)

Em seu Alias:

Path: H:\DADOS\ 

Em System:

Local Share: True

Depois disto você configurar o BDE de forma igual em todas as maquinas da rede.

Inicio da pagina 

Dica numero : 88
Criar um arquivo em tempo de execução é relativamente simples, você tem que criar
uma instancia do
objeto TTable, esse objeto (de uma lida no Help TTable e suas propriedades e metodos)
tem um
metodo de criação e um de Criar tabela.

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 88/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Depois disso é só definir as propriedades da nova tabela ...

DatabaseName := 'c:\lista';
TableName := 'Produtos.dbf';
TableType := ttDbase;

os campos da tabela ...

Add('codigo', ftString,7, false);


Add('Nome', ftString, 45, false);

e os indices ...

Add('prod1', 'codigo', []);


Add('prod2', 'Fornecedor', []);

com todos os dados devidamente setados ...


CreateTable;

Procedure TMainForm.Inicializa;

var
Table1 : TTable;
begin

{ Criar componente TTable }


Table1 := TTable.create(Application);

{ Definições de Campos e criação do arquivo }

with Table1 do begin


DatabaseName := 'c:\lista';
TableName := 'Produtos.dbf';
TableType := ttDbase;
with FieldDefs do begin
Clear;
Add('codigo',ftString,
Add('Nome', ftString,7,
45,false);
false);
Add('Fornecedor', ftString, 5,false );
Add('Custo', ftCurrency, 0, false );
Add('Venda', ftCurrency, 0, false );
end;
with IndexDefs do begin
Clear;
Add('prod1', 'codigo', []);
Add('prod2', 'Fornecedor', []);
end;
CreateTable;
end;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 89/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
end;

Utilizando o tipo ftCurrency, formato de valores do sistema financeiro o Delphi cria um


campo Dbase com
N,20,4
Inicio da pagina 

Dica numero : 89
Quando alguém esta digitando algum valor que posteriormente será utilizado para
calculo alguns
cuidados
do são necessários, esse procedimento ValidaKey deve ser ligado no OnChange
TDBEdit
para checar qual foi a tecla digitada.

procedure ValidaKey(Const Sender:TObject; var key: char);


begin
if not(key in ['0'..'9','.',',',#8,#13]) then key := #0;
if key in [',','.'] then key := DecimalSeparator;
if key = DecimalSeparator then
if pos(key,TEdit(Sender).Text) <> 0 then key := #0;
end;

if not(key in ['0'..'9','.',',',#8,#13]) then key := #0;

Se algum numero, ponto, virgula, BackSpace ou Enter for digitado então pode passar
normalmente, caso
contrario a tecla pressionada é ignorada.

if key in [',','.'] then key := DecimalSeparator;

Se ponto ou virgula, assume como separador decimal.

if key = DecimalSeparator then


if pos(key,TEdit(Sender).Text) <> 0 then key := #0;

O separador decimal so pode ser digitado uma unica vez, na tentativa de uma segunda
digitação
ignora-se o símbolo.

Observem que o mais importante aqui é o conceito utilizado, o fato de se interceptar os


caracteres
digitados pelo usuário e poder filtrar esses caracteres para evitar uma entrada de dados
inconsistente. O exemplo de numero e símbolos não é conclusivo, uma vez que o

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 90/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

mesmo efeito
poderia ter sido obtido com a aplicação de uma mascara.

Inicio da pagina 

Dica numero : 90
Quem trabalha com DBF's já encontrou problemas para criar índices compostos, ou seja
um índice que
tenha mais de um campo, em tempo de execução.
Isto ocorre por dois motivos, embora exista na internet documentação sobre o assunto,
dizendo ser
possível, ainda não encontrei ninguém que tenha tido sucesso nesta tarefa. O outro
motivo é ade um parâmetro não documentado necessário para arquivos DBF's
existência
ixExpression que
informa o Delphi que se trata de um índice com mais de um campo.
Como trabalhar com DBF's é comum para a maioria dos programadores que vem do
Clipper acho
interessante solucionar este problema da melhor forma possível.
Assim a criação do indice fica para logo depois da criação da tabela, como mostra o
segmento de codigo
abaixo.

uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DB,
DBTables;

procedure TForm1.Button1Click(Sender: TObject);

var
Table1 : TTable;
begin

{ Criar arquivos }
Table1 := TTable.create(Application);

{ Cria arquivo }
with Table1 do begin
Active := False;
DatabaseName := 'C:\';
TableName := 'teste';
TableType := ttdBASE;
with FieldDefs do begin
Clear;
Add('Name1', ftString, 20, False);
Add('Name2', ftString, 20, False);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 91/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Add('Name3', ftString, 20, False);


Add('Name4', ftString, 20, False);
end;
CreateTable;
AddIndex('Indice1', 'Name1 + Name2', [ixExpression]);
AddIndex('Indice2', 'Name2 ++ Name4',
AddIndex('Indice3', 'Name3 Name3', [ixExpression]);
[ixExpression]);
end;

end;

Na pratica criar os índices com AddIndex() logo após CreateTable não vai influenciar
em nada o seu
programa.

Inicio da pagina 

Dica numero : 91
Baixe na Internet um dos melhores compiladores de Pascal para DOS/OS2/Linux.
Suporta praticamente
todo o set de opções do Borland Pascal e vai além, dando suporte ao modelo de objetos
do Object
Pascal e otimiza pra 386/486/Pentium/Pentium Pro/MMX e Pentium II. O código é todo
gerado para
modo protegido e, devido a isso, não possui quaisquer limites para arrays ou ponteiros.
Mas o
melhor de tudo é que ele é GRATIS!!!

Para pega-lo vá o endereço abaixo:

http://www.brain.uni-freiburg.de/~klaus/fpc/ 

Inicio da pagina 

Dica numero : 92
var
Form1: TForm1;
Bmp: TBitmap;

implementation

{$R *.DFM}

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 92/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

procedure TForm1.FormCreate(Sender: TObject);


begin
Bmp:=TBitmap.Create;
Bmp.Loadfromfile('c:\windows\nuvens.bmp');
end;

procedure TForm1.TForm1.FormPaint(Sender: TObject);


begin
Canvas.Draw(50,50,Bmp);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);


begin
Bmp.Free;
end;

Inicio da pagina 

Dica numero : 93
No evento OnCloseQuerie do form escreva o seguinte código:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);


begin
CanClose:=False;
if messagebox(handle,'Deseja realmente fechar esta janela ?', 'Aviso',
mb_IconInformation +
mb_YesNo + mb_DefButton2 ) = idYes then
CanClose := True;
end;

Inicio da pagina 

Dica numero : 94
No evento OnCloseQuerie do form escreva o seguinte código:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);


begin
CanClose:=False;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 93/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 95
O caminho mais fácil e rápido para implementar filtros em tabelas é utilizando o evento
OnFilterRecord,
este evento é chamado sempre que um registro for lido do arquivo pelo componente
TTable.
OnFilterRecord é declarado como do tipo TFilterRecordEvent

procedure(DataSet: TDataSet; var Accept: Boolean) of object;

property OnFilterRecord: TFilterRecordEvent;

A variável Accept deverá ser manipulada internamente em OnFilterRecord, assim para


que o registro
seja mostrado o valor
Tradicionalmente de Accept
aplicar tema uma
um filtro de sertabela,
true que é o default.
qualquer que seja a tabela é um
processo muito lento,
assim é interessante desenvolver rotinas rápidas e fáceis de serem executadas.

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);


begin
Accept := (Dataset as TTable).
FieldByName('Dupr_valida').AsBoolean;

end;

Mas pode-se colocar varias verificações para decidir se um deter- minado registro deve
ou não ser
filtrado.

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);


begin
with (Dataset as TTable) do
if not ( (FieldByName('Dupr_Valida').AsBoolean) and
(FieldByName('Dupr_DataVenc').AsString =
'05/09/97') ) then
accept := false;
end;

O filtro pode ser ligado ou desligado a qualquer momento setando a propriedade


Filtered da tabela, o
evento OnFilterRecord só é chamado se a propriedade Filtered estiver com o valor true.

Inicio da pagina 

Dica numero : 96

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 94/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Bem saber se um form já esta ou não criado, melhor dizer instanciado, não é um
problema muito critico,
abaixo pode-se ver uma unit padrão criada com um form vazio no Delphi, esta unit alem
de
declarar o nova classe TForm1 cria também uma variável Form1 do tipo TForm1. Isto é
muito
importante que seja observado, um variável para um tipo "FORM" nada mais é que um
ponteiro, ou
seja ela apenas mostra em que local da memória esta a instancia do seu form, enquanto
o seu
form não existir este ponteiro deve apontar para lugar nenhum, ou seja, este ponteiro
estará
guardando o valor "NIL".

unit Unit1;

interface
uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

private
{ Private declarations }
public
{ Public declarations }

end;

var
Form1: TForm1;

implementation

{$R *.DFM}

end.

{Partindo deste principio podemos verificar se um form foi ou não instanciado


verificando o valor
guardado em FORM1, se este valor for diferente de "NIL" significa que o Form já foi
instanciado...
bem a coisa não é assim tão simples, imagine que um amigo mudou-se para São Paulo e
lhe passou
seu novoque
resolve endereço, você recebe e anota em sua agenda... depois de dois meses ele

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 95/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

não quer mais morar em São Paulo e vai embora, ok o fato de seu amigo ir embora por
si só não vai
fazer com que o endereço dele se auto apague da sua agenda, assim sendo quando o
form for
destruído o ponteiro continuara guardando o endereço de memória onde o form estava e
ai o nosso
método de controle vai pro brejo :(
A forma mais limpa e automática para se contornar este problema nos obriga a codificar
o seguinte no
evento OnDestroy do Form ...}

procedure TForm1.FormDestroy(Sender: TObject);

begin
Form1 := nil;
end;

assim, quando o "FORM1" for destruído ele apaga o seu endereço junto, ótimo não é
mesmo ....

Assim quando for instanciar um form utilize a seguinte verificação ...

if Form2 = nil then


Form2 := TForm2.Create(Self);
Form2.Show;

... interessante que o Show quando um form já esta criado tem o efeito de um
BringToFront.

Bem tudo isso resolve parte do problema, a outra parte tem de ser resolvida por você
estruturando o seu
programa de forma aos controles funcionem de acordo.

1 - Este controle não funciona para forms com múltiplas instancias, a não ser que você
crie uma variável
para cada instancia. Pessoalmente eu nunca usei isso, se um form pode ter múltiplas
instancias em
MDI instancia.
uma então controle por ActiveMDIChild e se for SDI então não sei porque ter mais de

2 - Quando for criar um novo form não crie variáveis desnecessariamente, utilize a
variável que já esta
sendo criada na unit do Form.

Ex: Dados FORM1 e FORM2

Apenas FORM1 esta no AUTO-CREATE

Quando no uses de FORM1 for referenciada a unit UNIT2 a variável FORM2 estará

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 96/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

acessível, use-a.

FORM2 := TFORM2.CREATE(SELF);
3 - Quando um Form é mostrado com ShowModal este tipo de controle não se aplica já
que será impossível mostrar qualquer outro form.
Inicio da pagina 

Dica numero : 97
Veja abaixo um exemplo para que o seu Form não seja redimensionado.
Inclua o código abaixo em um Form.

type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message
WM_GETMINMAXINFO;

procedure WMInitMenuPopup(var Msg: TWMInitMenuPopup); message


WM_INITMENUPOPUP;
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHitTest;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);


begin
inherited;
with Msg.MinMaxInfo^ do begin
ptMinTrackSize.x:= form1.width;
ptMaxTrackSize.x:= form1.width;
ptMinTrackSize.y:= form1.height;
ptMaxTrackSize.y:= form1.height;
end;
end;

procedure TForm1.WMInitMenuPopup(var Msg: TWMInitMenuPopup);


begin
inherited;
if Msg.SystemMenu then

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 97/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

EnableMenuItem(Msg.MenuPopup, SC_SIZE, MF_BYCOMMAND or


MF_GRAYED)
end;

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);


begin
inherited;
with Msg do
if Result in [HTLEFT, HTRIGHT, HTBOTTOM, HTBOTTOMRIGHT,
HTBOTTOMLEFT, HTTOP, HTTOPRIGHT,
HTTOPLEFT] then
Result:= HTNOWHERE
end;

Inicio da pagina 

Dica numero : 98
Com certeza criar os forms que vc vai utilizar em tempo de execução é uma das grandes
"sacadas" do
Delphi, uma tarefa não tão complicada mas com varias alternativas de como ser
executada.
Vamos supor inicialmente que vc esta trabalhando com uma aplicação SDI (Single
Document Interface)
ou documento de interface simples, utilizando essa forma de desenvolvimento vc tem
 janelas
sobre janelas, o Delphi é um exemplo disso, para criar um form em tempo de execução
siga os
seguintes passos:

1- Crie um projeto novo (SDI), o Delphi automaticamente cria o Form1.


2- Crie um Form Novo, ele recebera o nome de Form2.
3- Va em Options/Project, vc vai ver dois list boxes, o da esquerda contêm os forms que
devem ser
criados automaticamente quando sua aplicação for iniciada, os dois forms devem estar
ai, pois bem
mova Form2 para o List Box da direita que deve conter os forms que ficam disponiveis
porém não
são automaticamente criados.
(importante) Nesse momento você retirou do Delphi a obrigação de criar o Form2,se vc
não o criar e em
algum momento fizer referencia a ele isso deve causar um erro.
4- Ok, esqueca temporariamente Form2, em Form1 crie um botao e digite o código
abaixo em seu evento
TForm1.Button1Click

implementation
{$R *.DFM}

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 98/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);


begin
Form2 := TForm2.Create(self);
Form2.Show;
end;

end.

5- Observe o uses criado logo após {$R *.DFM}, ele deve fazer referencia a Unit de
Form2, que no caso
do meu exemplo chama-se Unit2.
Pronto, com esses pequenos cuidados vc ja estara criando seus forms em tempo de
execução :)
Agora uma dica interessante, se vc executar esse programa vc vai ver que quando
Form2 for criado o
usuario pode clicar em Form1 e esse recebera o foco, coisa que pode nao ser
interessante.
Para evitar este tipo de comportamento da sua aplicação utilize ShowModal e não Show
para chamar o
segundo form...

Form2 := TForm2.Create(self);
Form2.ShowModal;

O ShowModal vai fazer com que a aplicação fique com Form2 permanentemente em
primeiro plano, Form1
não poderá ser acessado até que Form2 sejá fechado.

Inicio da pagina 

Dica numero : 99
A coisa muda um pouquinho quando voce esta trabalhando em um projeto MDI,
basicamente o controle
que voce tem de executar é o mesmo, mas as caracteristicas do projeto podem lhe trair
...
Primeiro que em um projeto MDI não podem existir forms não visiveis, ou sejá, assim
que um determinado
form é criado ele já se torna visivel,não é necessario um SHOW ou SHOWMODAL
para fazer isso,
portanto não existe outro caminho senão criar todos os forms de sua aplicação em RUN
TIME.
Todos os passos descritos no exemplo acima são validos aqui também, mas para que o
seu projeto
caracterize-se como MDI você tem de mudar a propriedade FormStyle dos forms do

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 99/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

projeto como
segue :

- O form principal da aplicação tem de estar como fsMDIForm.


- Os outros forms que fazem parte da aplicação como fsMDIChild.

Algum form especial, como o form onde o usuario configura a impressora, deve ser
deixado como
fsNormal.

Vá até Project/Options e deixe apenas o form principal como AutoCreate.

(importante) Nesse momento vc retirou do Delphi a obrigação de criar o Form2,se vc


não o criar e em
algum momento fizer referencia a ele isso deve causar um erro.

Pois bem, como uma das caracteristicas de uma aplicação MDI é o form principal
conter os outros forms
não podemos ficar colocando botões para testar a criação dinamica desses forms,
melhor utilizar um
componente do tipo Menu e codificar a chamada aos outros forms nele ...

implementation

{$R *.DFM}

uses Unit2;

procedure TForm1.Form21Click(Sender: TObject);


begin
Form2 := TForm2.Create(self);
end;

end.

Uma das primeiras coisas diferentes é que não é mais necessário usar o Show :) ...
Alguns cuidados devem ser tomados quando trabalhamos com uma aplicação MDI.
Primeiroforms
muitos não existe
ao porque ficar discutindo como evitar que o usuário fique abrindo
mesmo tempo, já que está é a principal qualidade de um projeto MDI, caso voce não
queira este
tipo de comportamento pare de ler e volte para SDI ...

Inicio da pagina 

Dica numero : 100

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 100/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMGetMinMaxInfo(var MSG: TMessage); message WM_GetMinMaxInfo;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMGetMinMaxInfo(var MSG: TMessage);


begin
inherited;
with PMinMaxInfo(MSG.lparam)^ do begin
ptMinTRackSize.X := 300;
ptMinTRackSize.Y := 150;
ptMaxTRackSize.X := 350;
ptMaxTRackSize.Y := 250;
end;
end;
end.

Inicio da pagina 

Dica numero : 101


A) No .Dpr ponha {$D SCRNSAVE } depois do uses

B) No Form principal nao ponha borda ou icone. No metodo Activate ponha left
e top como 0 e o Windowstate como wsMaximize.

C) no form.Create ponha application.OnMessage para um metodo que controle a


desativacao do screen saver. Ponha tb o application.OnIdle para "rodar" o
dito cujo...

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 101/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

D) Tb no Form.Create teste a linha de comando para /c ou /s. Estes


parâmetros dizem o que e' para fazer (/c configura)

E) Compile e renomeie o .exe p/ .scr, move para o diretorio do windows e...

Inicio da pagina 

Dica numero : 102


Primeiro você deve "linkar" o OBJ ao seu executável. No Delphi , isto eh
feito com a diretriz de compilação $L. Fica, na sua unit principal, assim:
{$L MyOBject.OBJ}

Incluindo as chaves.
Logo depois, você deve declarar a função contida em MyObject.OBJ da forma
usual. Você precisara conhecer os parâmetros usados pela mesma, bem como o
tipo e a ordem em que sao passados. Voce deve incluir tambem a diretriz
PASCAL ou CDECL. Sugiro tentar primeiro com PASCAL. Ficaria assim (na
secao implementation:

function (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2):


TipoDoRetorno; pascal;

se nao der certo, tente:


function (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2):
TipoDoRetorno; cdecl;

caso nao seja uma funcao e sim uma procedure, tente

procedure (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2);


pascal;
ou
procedure (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2);
cdecl;

Se voce nao sabe quais os parametros usados pela funcao/procedure, uma


solucao seria linkar o seu OBJ num programa qualquer e disassembla-lo. Ai
pelo menos voce sabera a quantidade e o tipo de cada parametro. De qualquer
forma, para saber para que serve cada um, tera que ser na tentativa e
erro...a nao ser que voce tambem tenha paciencia para analisar o codigo
disassemblado.

OBS: Se o seu OBJ nao estiver num formato reconhecivel pelo LINK do Delphi

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 102/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

(um formato similar ao COFF), voce pode tentar outros Linkers, e criar uma
dll. Existem varios linkers gratuitos, que reconhecem varios formatos
(exemplos, sao lcclnk, djlnk, walk2lnk e o proprio linker da
microsoft...tambem gratuito).

Inicio da pagina 

Dica numero : 103


Você pode alterar diretamente a chave do registro que seta esta opção.
Fica em HKEY_LOCAL_MACHINE > Software > ... LOCAL SHARE "TRUE"
(Pesquise com o regedit).

Inicio da pagina 

Dica numero : 104


Function TForm1.JanelaExiste(Classe,Janela:String) :Boolean;
var
PClasse,PJanela : array[0..79] of char;
begin

if Classe = '':=then
PClasse[0] #0
else
StrPCopy(PClasse,Classe);
if Janela = '' then
PJanela[0] := #0
else
StrPCopy(PJanela,Janela);
if FindWindow(PClasse,PJAnela) <> 0 then
result := true
else
Result
end; := false;

Function TForm1.DelphiCarregado : Boolean;


begin
Result := False;
if JanelaExiste('TPropertyInspector','Object Inspector') then
result := True
end;

procedure TForm1.FormCreate(Sender: TObject);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 103/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

begin
if DelphiCarregado then
showmessage('Delphi está ativo, bom menino!')
else
begin
Showmessage('Vc não poderá utilizar esta aplicação! Mau garoto!');
application.terminate;
end;
end;

Inicio da pagina 

Dica numero : 105


Qual a melhor maneira de criar forms em tempo de execucao:

a) Application.CreateForm(TfmClientes, fmClientes);
Cria o Form; o proprietário é a aplicação.

b) fmClientes := TForm.Create(self);
Cria o Form; o proprietário é ele mesmo.

c) fmClientes := TForm.Create(Application);
Cria o Form; o proprietário é a aplicação.

d) fmClientes := TForm.Create(nil);
Cria o Form; teoricamente sem proprietário; na prática é a aplicação.

e) fmClientes := TfmClientes.Create(self);
Cria o Form; o proprietário é ele mesmo.

f) fmClientes := TfmClientes.Create(Application);
Cria o Form; o proprietário é a aplicação.

g) fmClientes := TfmClientes.Create(nil);
Cria o Form; teoricamente sem proprietário; na prática é a aplicação.
Poderiam me informar a diferenca entre elas?

Quando você cria um Form dinamicamente:


1. se criar através de CreateForm, que é um método de TApplication, você passa como
parâmetro a
instância da classe e o nome do seu objeto (TfmClientes, fmClientes);

2. se criar através de Create - método de TForm, entre outros - você passa como
parâmetro o
proprietário do componente criado (no caso o Form).
2.1 se o proprietário for a aplicação, o Form só será destruído quando você finalizar o

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 104/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

aplicativo
ou se você declarar Free ou Destroy no seu programa; (casos a, c, d, f, g);
2.2 se o proprietário for ele mesmo (self), o form terá que ser destruído por você;
2.3 se você criar, por exemplo, Form2 e passar como proprietário Form1; no momento
em que
Form1 for destruído, Form2 também o será.
Quanto à melhor maneira, depende de como você quer controlar a aplicação, mas leve
em conta que
enquanto um objeto não é destruído, ele está na memória.

Inicio da pagina 

Dica numero : 106


var
OldValue : LongBool;
begin
{liga a trava}
SystemParametersInfo(97, Word(True), @OldValue, 0);
{desliga a trava}
SystemParametersInfo(97, Word(False), @OldValue, 0);
end;

Inicio da pagina 

Dica numero : 107


procedure TForm1.BitBtn1Click(Sender: TObject);
var
Linha:integer;
Tamanho:integer;
Coluna:integer;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := 'Times New Roman';
Printer.Canvas.Font.Size := 10;
Linha := 20;
Coluna:= 20;
Tamanho := Printer.Canvas.TextWidth('a');
Table1.First;
while not Table1.Eof do
begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 105/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

if Linha = 20 then
begin
Coluna := 20;
Printer.Canvas.TextOut(0,Linha,'Relação de Clientes');
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
Printer.Canvas.TextOut(Coluna,Linha,'Cod');
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,'Nome');
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,'Endereço');
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
end;
Coluna := 20 ;
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(„Codigo‟).AsString);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(„Nome‟).AsString);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,Table1.Fiel dByName(„End‟).AsString);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
Table1.Next;
if Linha > Printer.PageHeight-20 then
Begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;
end;

Inicio da pagina 

Dica numero : 108


Esta procedure configura o tamanho do papel em Run-Time para ser utilizado com o
objeto TPrinter; Esta
procedure deve ser chamada antes de aplicar o método Printer.BeginDoc.

procedure TForm1.SetPrinterPage(Width, Height : LongInt);


var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 106/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

If hDMode <> 0 then


begin
pDMode := GlobalLock( hDMode );
If pDMode <> nil then
begin
pDMode^.dmPaperSize
pDMode^.dmPaperWidth:=:=DMPAPER_USER;
Width;
pDMode^.dmPaperLength := Height;
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
GlobalUnlock( hDMode );
end;
end;
end;

Inicio da pagina 

Dica numero : 109


Para você economizar memória, pode-se criar os forms de sua aplicação somente no
momento da
execução. Na criação do Form
você define se ele é MODAL ou NÃO MODAL. Para Isso observe os seguintes
códigos:

MODAL - Mostra form em modo exclusivo


procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);{Carrega form na memória}
Form2.ShowModal;{Mostra form em modo exclusivo}
Form2.Free; {Libera Memória}
end;

NÃO MODAL - Mostra form em modo não exclusivo

procedure TForm1.Button1Click(Sender: TObject);


begin
Application.CreateForm(TForm2, Form2);{Carrega form na memória}
Form2.ShowModal;{Mostra form em modo exclusivo}
end;

No evento OnClose do Form2 coloque o seguinte código.

procedure TForm2.FormClose (Sender: Tobject; var Action : TCloseAction);


begin
Action:= caFree;
end;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 107/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
Aliado a este código, deve deve alterar no delphi, no menu Options, opção Project.
Mudando os forms a
serem criados
dinamicamente da coluna Auto-Create Forms para Avaliable Forms.

Inicio da pagina 

Dica numero : 110


LOYD´S TIPS:

Resolução de Vídeo:

Quando criamos formulários, ãs vezes é útil escrever um código para que a tela e todos
os seus objetos
sejam mostrados no
mesmo tamanho, não importando qual a resolução da tela. Aqui esta um código que
mostra como isso é
feito:

Implementation

const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate (Sender: Tobject);

begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) DIV ScreenHeight;
width := longint(width) * longint(screen.width) DIV ScreenWidth;
scaleyBy(screen.width, ScreenWidth);
end;
end;

Agora, você vai querer checar, se o tamanho dos fontes(de letra) estão OK. Antes de
trocar p tamanho
do fonte, você precisará ter
certeza de que o objeto realmente tem a propriedade fonte pela checagem da RTTI. Isso
pode ser feito
assim:

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 108/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

USES tyinfo; {Add this to your USES statement.}

var

i:integer;

begin
for i := componentCount - 1 downto 0 do
with components[i] do
begin
if GetPropInfo(ClassInfo, ´font´) <> nil then
font.size := (NewFormWidth DIV OldFormWidth) * font.size;
end;
end;

{Esta é a maneira longa de fazer a mesma coisa}

var

i:integer;

p:PPropInfo;

begin
for i := componentCount - 1 downto 0 do
with components [i] do
begin
p := GetPropInfo (ClassInfo, ´font´);
if assigned (p) then
font.size := (NewFormWidth DIV OldFormWidth) * font.size;
end;
end;

Atenção: Nem todos os objetos tem a propriedade FONT. Isso deve ser o suficiente para
você começar.

Atenção: A seguir, algumas dicas para ter em mente quando representar aplicações
Delphi (formulários)
em diferentes resoluções
de Tela:

* Decida antecipadamente, na etapa de criação do formulário, se ele será escalável ou


não. A vantagem
de um não escalável é
que nada muda em tempo de execução. A desvantagem é equivalente (seu formulário
pode ser muito
pequeno ou grande para

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 109/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

alguns sistemas se nào for usada escala).

* Se você não for usar formulário escalável, configure o set scaled to False.

* Ou então, configure a propriedade scaled do formulário para True.

* Configure a propriedade AutoScroll para False. AutoScroll = True quer dizer "não
mexa no tamanho do
frame do formulário em
tempo de execução", o que não parece bom quando o conteúdo do formulário muda de
tamanho.

* Configure a fonte do formulário para uma True Type escalável, como a Arial MS. San
Serif é uma boa
alternativa, mas lembre que
ainda é uma fonte bitmapped. Só a Arial dará uma fonte dentro de um pixel da altura
desejada.ATENÇÃO: Se a fonte usada em
uma aplicação não estiver instalada no computador, o Windows selecionará uma fonte
alternativa da
mesma família para utilizar. O
tamanho dessa fonte pode não corresponder ao da fonte original, podendo causar
problemas.

* Configure a propriedade position do formulário para uma opção diferente de


poDesigned.
poDesigneddeixa o formulário onde você
o deixou ( no design Time), o que sempre termina fora da margem, à esquerda da minha
tela 1280 x 1024
- e completamente fora
da tela 640 x 480.

* Não amontoe controles no formulário - deixe pelo menos 4 pixels entre else, para que
uma mudança de
um pixel nas margens
(devido a apresentação em escala) não mostre controles sobrepostos.

* Para labels de uma linha alinhadas ã esquerda ou à direita, configure o AutoSize para
True. Para
formas outras
de alinhamento
configure o AutoSize para False.

* Tenha certeza de que há espaço em branco suficiente num componente de labels para
alterações no
tamanho da fonte - um
espaço de 25% do comprimento da linha de caracteres mostrada é um pouco a mais do
que se precisa,
mas é mais seguro.
(Você vai precisar de um espaço equivalente a 30% de espansão para string labels se
você pretende
traduzir sua aplicação para

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 110/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

outra linguagem). Se o Autosize estiver em False, tenha certeza de que realmente


configurou o tamanho
do label corretamente.
Se o Autosize estiver em True, esteja certo de que há espaço suficiente para que o label
se amplie.

* Em labels de múltiplas linhas ou de termos ocultos, deixe pelo menos uma linha em
branco na base. Isso
vai ser necessário
para incluir o que estiver sobrando quando o texto for oculto de maneira diferente, pela
mudança do
tamanho da fonte com a
escala. Não assuma isso porque está usando fontes grandes. Você não tem que deixar
sobra de texto -
as fontes (grandes) de
outros usuários podem ser maiores que as suas!

* Tenha cuidado quando abrir um projeto em IDEs com resoluções diferentes. Assim
que o formulário for
aberto, sua propriedade
Pixel per Inch será moditificada, e gravada para o DFM se você salvar o projeto. É
melhor testar a
aplicação rodando sozinho, e
editar o formulário em apenas uma resolução. Editar em várias resoluções e tamanhos
de fonte provoca
problemas de fluxo e
tamanho dos componentes.

*Falando em fluxo de componentes, não represente o formulário em escala muitas


vezes, quando estiver
sendo criado ou quando
tiver sendo executado. Cada escala introduz erros de roundoff que se acumulam muito
rapidamente, uma
vez que as coordenadas
são rigorosamente interias. Quando valores fracionários forem retirados das origens e
tamanhos do
controle com cada sucessiva
representação
Se você quer em escala, os conttroles parecerão deslizar para noroeste e ficar menores.
deixar seus usuários
representarem o formulários em escala quantas vezes quiserem, comece com um
formulário recentemente
criado para que erros
de escala não se acumulem.

* Definitivamente, não mexa na propriedade Pixel pre Inch do formulário.

* Em geral, não é necessário criar formulários em uma resolução específica, mas é


essencial
revise emque
640você
x 480os

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 111/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

com fontes pequenas e/ou grandes, e em alta resolução com fontes pequenas e/ou
grandes antes de
liberar suas aplicações. Isso
deverser parte de sua lista de conferência para testar a compatibilidade do sistema
regularmente.

* Preste bastante atenção em todos os componentes que são basicamamente TMemo de


uma linha - com
oTDBLookupCombo. O
controle de edição (multi-linhas) do Windows sempre mostra apenas linhas inteiras de
texto. Se o controle
for muito curto para
sua fonte, um TMemo não mostrará coisa alguma, e um TEdit mostrará um pedaço do
texto. É melhor
fazer esses componentes
um pouco maiores do que deixá-los um pixel menores e não aparecer nada do texto.

* Tenha em mente que toda representação em escala é proporcional à diferença da altura


da fonte entre
o modo de execução e o
modo de desenho, NÃO à resolução ou ao tamanho do monitor. Lembre também que as
origens dos
seus controles serão
alteradas quando o formulário for representado em escala. Você não pode aumentar
componentes muito
bem sem também
movê-los um pouco, novamente.

Obtendo e modificando a posição do cursor em um TMemo

Modificando a posição:

ActiveControl:=Memo1;
MemoCursorTo(Memo1,2,3);

Obtendo a Posição:

GetMemoLineCol(Memo1,Linha,Coluna);

Inicio da pagina 

Dica numero : 111


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
const
PageDelta = 10;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 112/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

begin
With VertScrollbar do
if Key = VK_NEXT then
Position := Position + PageDelta
else if Key = VK_PRIOR then
Position
end; := Position - PageDelta;

Inicio da pagina 

Dica numero : 112


Edite diretamente no DPR, e depois salve como Funcoes.dpr:

Library Funcoes;

Uses SysUtils,WinTypes,WinProcs;

{ Uma função que tira os espaços no início e no final de uma string }


Function Trim(J:String):String; Export;
Begin
While J[Length(J)]=#32 do Dec(J[0]);
If Length(J)>1 then
While (J[1]=' ') do
Begin
Delete(J,1,1);
If Length(J)<=1 then J:='';
end;
Result:=J;
end;
Exports { Torna visivel para os programas }
Trim;
Begin
End.

Para usar num programa:


Unit Unit1;
Interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 113/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Trim(J:String):String; External 'funcoes.dll';
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);
begin
Caption:=Trim(' Visite sempre o Delphi Club '); { Note os espacos }
end;

As vantagens de colocar as funções em DLL são:


1. O programa exigirá menos memória
2. Você poderá reaproveitar as funções
3. Em alguns casos pode-se atualizar apenas as dll para um upgrade

Inicio da pagina 

Dica numero : 113


unit CPFeCGC;

interface
function cpf(num: string): boolean;
function cgc(num: string): boolean;

implementation

uses SysUtils;

function cpf(num: string): boolean;


var
n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
begin
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);
n4:=StrToInt(num[4]);
n5:=StrToInt(num[5]);
n6:=StrToInt(num[6]);
n7:=StrToInt(num[7]);
n8:=StrToInt(num[8]);
n9:=StrToInt(num[9]);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 114/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
d2:=11-(d2 mod 11);
if d2>=10 then d2:=0;
calculado:=inttostr(d1)+inttostr(d2);
digitado:=num[10]+num[11];
if calculado=digitado then
cpf:=true
else
cpf:=false;
end;

function cgc(num: string): boolean;


var
n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12: integer;
d1,d2: integer;
digitado, calculado: string;
begin
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);
n4:=StrToInt(num[4]);
n5:=StrToInt(num[5]);
n6:=StrToInt(num[6]);
n7:=StrToInt(num[7]);
n8:=StrToInt(num[8]);
n9:=StrToInt(num[9]);
n10:=StrToInt(num[10]);
n11:=StrToInt(num[11]);
n12:=StrToInt(num[12]);
d1:=n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
d2:=d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1
*6;
d2:=11-(d2
if modd2:=0;
d2>=10 then 11);
calculado:=inttostr(d1)+inttostr(d2);
digitado:=num[13]+num[14];
if calculado=digitado then
cgc:=true
else
cgc:=false;
end;

end.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 115/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 114


unit Ext;

interface
function extenso (valor: real): string;

implementation

uses
SysUtils, Dialogs;

function extenso (valor: real): string;


var
Centavos, Centena, Milhar, Milhao, Texto, msg: string;
const
Unidades: array[1..9] of string = ('Um', 'Dois', 'Tres', 'Quatro', 'Cinco',
'Seis', 'Sete', 'Oito', 'Nove');
Dez: array[1..9] of string = ('Onze', 'Doze', 'Treze', 'Quatorze', 'Quinze',
'Dezesseis', 'Dezessete', 'Dezoito', 'Dezenove');
Dezenas: array[1..9] of string = ('Dez', 'Vinte', 'Trinta', 'Quarenta',
'Cinquenta', 'Sessenta', 'Setenta',
'Oitenta', 'Noventa');
Centenas: array[1..9]
'Quatrocentos', of string'Seiscentos',
'Quinhentos', = ('Cento', 'Duzentos', 'Trezentos',
'Setecentos', 'Oitocentos', 'Novecentos');

function ifs(Expressao: Boolean; CasoVerdadeiro, CasoFalso: String): String;


begin
if Expressao
then Result:=CasoVerdadeiro
else Result:=CasoFalso;
end;

function MiniExtenso (trio: string): string;


var
Unidade, Dezena, Centena: string;
begin
Unidade:='';
Dezena:='';
Centena:='';
if (trio[2]='1') and (trio[3]<>'0') then
begin
Unidade:=Dez[strtoint(trio[3])];
Dezena:='';
end
else

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 116/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

begin
if trio[2]<>'0' then Dezena:=Dezenas[strtoint(trio[2])];
if trio[3]<>'0' then Unidade:=Unidades[strtoint(trio[3])];
end;
if (trio[1]='1') and (Unidade='') and (Dezena='')
then
else Centena:='cem'
if trio[1]<>'0'
then Centena:=Centenas[strtoint(trio[1])]
else Centena:='';
Result:= Centena + ifs((Centena<>'') and ((Dezena<>'') or (Unidade<>'')), ' e ', '')
+ Dezena + ifs((Dezena<>'') and (Unidade<>''),' e ', '') + Unidade;
end;

begin
if (valor>999999.99) or (valor<0) then
begin
msg:='O valor está fora do intervalo permitido.';
msg:=msg+'O número deve ser maior ou igual a zero e menor que 999.999,99.';
msg:=msg+' Se não for corrigido o número não será escrito por extenso.';
showmessage(msg);
Result:='';
exit;
end;
if valor=0 then
begin
Result:='';
Exit;
end;
Texto:=formatfloat('000000.00',valor);
Milhar:=MiniExtenso(Copy(Texto,1,3));
Centena:=MiniExtenso(Copy(Texto,4,3));
Centavos:=MiniExtenso('0'+Copy(Texto,8,2));
Result:=Milhar;
if Milhar<>'' then
if copy(texto,4,3)='000' then
Result:=Result+' Mil Reais'
else
Result:=Result+' Mil, ';
if (((copy(texto,4,2)='00') and (Milhar<>'')
and (copy(texto,6,1)<>'0')) or (centavos=''))
and (Centena<>'') then Result:=Result+' e ';
if (Milhar+Centena <>'') then Result:=Result+Centena;
if (Milhar='') and (copy(texto,4,3)='001') then
Result:=Result+' Real'
else
if (copy(texto,4,3)<>'000') then Result:=Result+' Reais';
if Centavos='' then
begin
Result:=Result+'.';

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 117/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Exit;
end
else
begin
if Milhar+Centena='' then
Result:=Centavos
else
Result:=Result+', e '+Centavos;
if (copy(texto,8,2)='01') and (Centavos<>'') then
Result:=Result+' Centavo.'
else
Result:=Result+' Centavos.';
end;
end;

end.

Inicio da pagina 

Dica numero : 115


unit Zero;

interface
function RetZero(ZEROS:string;QUANT:integer):String;
implementation

function RetZero(ZEROS:string;QUANT:integer):String;
var
I,Tamanho:integer;
aux: string;
begin
aux:=zeros;
Tamanho:=length(ZEROS);
ZEROS:='';
for I:=1 to quant-tamanho do
ZEROS:=ZEROS+'0';
aux:=zeros+aux;
RetZero:=aux;
end;
end.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 118/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 116


if Key in [',','.'] then Key := DecimalSeparator;

Coloque no evento OnKeyPress dos seus TEdits numéricos

Inicio da pagina 

Dica numero : 117


Query.Locate('campo onde ira porcurar',Texto a buscar,[loPartialKey])

Inicio da pagina 

Dica numero : 118


Em vez de Quickreport1.Print faca :

QuickRep1.ExportToFilter(TQRHtmlExportFilter.Create('teste.html'));

Inicio da pagina 

Dica numero : 119


function ExitWindowsEx(uFlags : integer; // shutdown operation
dwReserved : word) : boolean; // reserved
external 'user32.dll' name 'ExitWindowsEx';

procedure Tchau;
const
EWX_LOGOFF = 0; // Dá "logoff" no usuário atual
EWX_SHUTDOWN = 1; // "Shutdown" padrão do sistema
EWX_REBOOT = 2; // Dá "reboot" no equipamento
EWX_FORCE = 4; // Força o término dos processos
EWX_POWEROFF = 8; // Desliga o equipamento

begin
ExitWindowsEx(EWX_FORCE, 0);
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 119/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 120


Function MidiaPresente(MediaPlayer: TMediaPlayer): Boolean;
var
Params: MCI_STATUS_PARMS;
S: array [0.255] of char;
r: Integer;
begin
 //verifica se existe um cd inserido
Params.dwItem:= MCI_STATUS_MEDIA_PRESENT;
r:= MCISendCommand(MediaPlayer.DeviceID, MCI_STATUS,

MCI_STATUS_ITEM,
if r <> 0 then Integer(Addr(Params)));
begin
MCIGetErrorString(r, S, SizeOf(S));
ShowMessage('Erro: ' + StrPas(S));
end
else
Result:= Params.dwReturn = 1;
end;

Inicio da pagina 

Dica numero : 121


Depois de algum tempo pesquisando uma forma de fazer aparecer as mensagens
em português, consegui uma solução muito fácil de implementar no ambiente
de programação do Delphi 3.

CHEGA DE YES/NO !!!

messagedlg('Confirma ? mtConfirmation, [mbYes, mbNo], 0);

Aí vai:

1 - No diretório DELPHI3\LIB, copie o arquivo consts.dcu para consts.old;


2 - Inicie o Delphi e crie um nova Unit;
3 - Insira nesta, o arquivo consts.int do diretório DELPHI3\DOC E faça as
devidas alterações nas mensagens que desejares alterar e nas
partes duplicadas da Unit como "implement" e etc, também deixe o
cabeçalho como Unit Consts.
4 - Salve esta nova Unit no diretório DELPHI\LIB e pronto todas as
mensagens alteradas por você estarão aplicadas nos seus

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 120/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

próximos programas sem uma linha de programa e da


forma que você quiser.

Inicio da pagina 

Dica numero : 122


Function NumDiasExtenso(NumDias:integer):string;
var
Anos, Meses, Dias : integer;
sAnos, sMeses, sDias : string;
begin
{ --- Calcula o número de anos --- }
Anos :=
while 0;
NumDias >= 365 do
begin
Anos := Anos + 1;
NumDias := NumDias - 365;
end;
if Anos > 1 then
sAnos := ' anos,'
else
sAnos := ' ano,';

{ --- Calcula o número de meses --- }


Meses := 0;
while NumDias >= 30 do
begin
Meses := Meses + 1;
NumDias := NumDias - 30;
end;
if Meses > 1 then
sMeses := ' meses e '
else
sAnos := ' mês e ';

{ --- O Número de dias é a sobra --- }


Dias := NumDias;
if sDias > 1 then
sDias := 'dias'
else
sDias := 'dia';

Return := Inttostr(Anos)+sAnos+inttostr(Meses)+sMeses+inttostr(Dias)+sDias;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 121/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 123


Procedure MostraErro;
Begin
ShowMessage('Ocorreu algum erro!');
end;

TForm1.Create;
Begin
Application.OnException:=MostraErro;
end;

Inicio da pagina 

Dica numero : 124


{ Reinicia o Windows }
ExitWindowsEx(EWX_REBOOT, 0);
{ Desliga o Windows }
ExitWindowsEx(EWX_SHUTDOWN, 0);
{ Força todos os programa a desligarem-se }
ExitWindowsEx(EWX_FORCE, 0);

Inicio da pagina 

Dica numero : 125


Modificando a posição:
ActiveControl:=Memo1;
MemoCursorTo(Memo1,2,3);
Obtendo a Posição:
GetMemoLineCol(Memo1,Linha,Coluna);

Inicio da pagina 

Dica numero : 126


procedure TForm1.Button1Click(Sender: TObject);
var
OldBkMode : integer;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 122/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

begin
with Form1.Canvas do begin
Brush.Color := clRed;
FillRect(Rect(0, 0, 100, 100));
Brush.Color := clBlue;
TextOut(10,
OldBkMode 20, 'Não é Transparente!');
:= SetBkMode(Handle, TRANSPARENT);
TextOut(10, 50, 'É Transparente!');
SetBkMode(Handle, OldBkMode);
end;
end;

Inicio da pagina 

Dica numero : 127


procedure TForm1.Button1Click(Sender: TObject);
var num : integer;
begin
num:=12450;
Edit1.text:=formatfloat('###,###,##0.00', num)
end;

Inicio da pagina 

Dica numero : 128


Procedure LimpaEdit;
var i : Integer;
begin
for i := 0 to ComponentCount -1 do
if Components[i] is TEdit then
begin
TEdit(Components[i]).Text := '';
end;
end;

Inicio da pagina 

Dica numero : 129


Coloque a propriedade defaultdrawdata do dbgrid em FALSE

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 123/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

No evento onDrawColumnCell do seu grid coloque o seguinte:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;


const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
If table1PRAZO.Value > DATE then // condição
Dbgrid1.Canvas.Font.Color:= clFuchsia; // coloque aqui a cor desejada
Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);
end;

Inicio da pagina 

Dica numero : 130


function PegaSysDir: string;
var
MeuBuffer: Array [1..128] of Char;
retorno: Integer;
Begin
retorno:=GetSystemDirectory(@MeuBuffer,128);
if (retorno>128) OR (retorno=0) then
PegaSysDir:=''
else
PegaSysDir:=StrPas(@MeuBuffer);
End; {prc}

Inicio da pagina 

Dica numero : 131


No System.ini você tem uma configuração como esta :

Shell=Explorer.exe

Basta trocar por

Shell=Myprog.exe

Ou usando delphi

procedure Tform1.ChangeShell(String programa);


var ArquivoIni : Tinifile;
begin
try

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 124/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

ArquivoIni := Tinifile.Create('System.ini');
ArquivIni.WriteSection('Config','Shell','Myprog.exe');
fynally
ArquivoIni.Destroy;
end;

end;

Inicio da pagina 

Dica numero : 132


procedure TF_Padrao.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
if not (ActiveControl is TDBGrid) then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end
else if (ActiveControl is TDBGrid) then
with TDBGrid(ActiveControl) do
if selectedindex < (fieldcount -1) then
selectedindex := selectedindex +1
else
selectedindex := 0;
end;

Ou então, pode-se tentar o seguinte método:

Utilize o evento onkeydown do componente e insira o seguinte comando:

if Key = VK_RETURN then Perform(Wm_NextDlgCtl,0,0);

este comando testa a tecla pressionada, se ela for um enter, manda o foco
para o componente posterior.
Inicio da pagina 

Dica numero : 133


procedure TForm1.Button1Click(Sender: TObject);
var
MyTreeNode1, MyTreeNode2: TTreeNode;
begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 125/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

with TreeView1.Items do
begin
Clear; { Remove qualquer node existente }
MyTreeNode1 := Add(nil, 'RootTreeNode1'); { Adiciona o node raiz }

{AddChild(MyTreeNode1,'ChildNode1');
Adiciona um sub item no node adiciona anteriormente }

{Adiciona outro node raiz}


MyTreeNode2 := Add(MyTreeNode1, 'RootTreeNode2');
AddChild(MyTreeNode2,'ChildNode2');
MyTreeNode2 := TreeView1.Items[3];
AddChild(MyTreeNode2,'ChildNode2a');
Add(MyTreeNode2,'ChildNode2b');
Add(MyTreeNode1, 'RootTreeNode3');
end;
end;
Inicio da pagina 

Dica numero : 134

CopyFile(Pchar(Origem),Pchar(Destino),false);

Onde Origem e' a variavel de que contem o nome do arquivo de origem


Destiono e' a variavel que contem o nome do arquivo destino
False : Instrui para sobrescrever o arquivo destino (caso encontre)

Inicio da pagina 

Dica numero : 135


1. Criem um arquivo texto, por exemplo: RECURSOS.RC com um conteudo igual a
este:
BITMAP_1 BITMAP "C:\Imagens\Grafico.bmp"
para todos os bitmap's que vc deseja;
2. Compilem este arquivo usando o BRCC32.EXE que esta no diretorio BIN do Delphi
sera
gerado o arquivo RECURSOS.RES; e
3. Coloquem dentro do fonte do projeto:
{$R RECURSOS.RES}
Para usar o bitmap faca o seguinte:
VarTipoTBitmap:= LoadBitmap(HInstance,'BITMAP_1');

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 126/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 136


Os campos do Tipo TBlobField, tem metodos que permitem que
sejam armazenados dados contidos em arquivos, ou em um Stream...
No primeiro caso (dos arquivos), o codigo seria algo como:

TBlobField(SuaTabela.FieldByName('SeuCampo')).LoadFromFile('NomedoArquivo');

No segundo caso, poderia ser feito um exemplo com o TRichEdit:

var
Stream : TMemoryStream;
begin
Stream := TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(Stream);
Stream.Seek(0,soFromBeginning);
TBlobField(SuaTabela.FieldByName('SeuCampo')).LoadFromStream(Stream);
finally
Stream.Free;
end;
end;

Ambos os exemplos, assumem que a tabela ja' estaria em modo


de Edicao ou de Insercao.

Inicio da pagina 

Dica numero : 137

if FileExists('C:\MEUDIR\MEUARQ.DAT') then
DeleteFile('C:\MEUDIR\MEUARQ.DAT');

Inicio da pagina 

Dica numero : 138


Function ExtractWindowsDir : String;
Var Buffer : Array[0..144] of Char;
Begin
GetWindowsDirectory(Buffer,144);

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 127/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Result := FormatPath(StrPas(Buffer));
End;

Function ExtractSystemDir : String;


Var Buffer : Array[0..144] of Char;
Begin
GetSystemDirectory(Buffer,144);
Result := FormatPath(StrPas(Buffer));
End;

Function ExtractTempDir : String;


Var Buffer : Array[0..144] of Char;
Begin
GetTempPath(144,Buffer);
Result := FormatPath(StrPas(Buffer));
End;

Inicio da pagina 

Dica numero : 139


Adicione um componente com o URL. Digite o seguinte código no seu evento OnClick:

procedure Tform1.URLLabelClick(Sender: TObject);


var TempString : array[0..79] of char;
begin
StrPCopy(TempString,URLLabel.Caption);
OpenObject(TempString);
end;

Insira a seguinte procedure logo após implementation:

procedure TTOKAboutBox.OpenObject(sObjectPath : PChar);


begin
ShellExecute(0, Nil, sObjectPath, Nil, Nil, SW_NORMAL);
end;
Adicione “ShellAPI” no uses. 

Inicio da pagina 

Dica numero : 140

{implementation section}
....

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 128/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

const SHFMT_ID_DEFAULT = $FFFF;


 // Formating options
SHFMT_OPT_QUICKFORMAT = $0000;
SHFMT_OPT_FULL = $0001;
SHFMT_OPT_SYSONLY = $0002;
 //SHFMT_ERROR
Error codes = $FFFFFFFF;
SHFMT_CANCEL = $FFFFFFFE;
SHFMT_NOFORMAT = $FFFFFFFD;

function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word): LongInt; stdcall;


external 'shell32.dll'
name 'SHFormatDrive'

procedure TForm1.btnFormatDiskClick(Sender: TObject);


var
retCode: LongInt;
begin
retCode:= SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT,
SHFMT_OPT_QUICKFORMAT);
if retCode < 0 then ShowMessage('Could not format drive');
end;

Inicio da pagina 

Dica numero : 141


Use os eventos KeyDown ou KeyUp e teste se Key = VK_LEFT ou VK_RIGHT, etc.

Inicio da pagina 

Dica numero : 142


procedure TMyForm.Button1Click(Sender: TObject);
Var KeyState : TKeyboardState;
begin
GetKeyboardState(KeyState);
if (KeyState[VK_NUMLOCK] = 0) then KeyState[VK_NUMLOCK] := 1
else KeyState[VK_NUMLOCK] := 0;
SetKeyboardState(KeyState);
End;

Para a tecla Caps Lock basta trocar VK_NUMLOCK por VK_CAPITAL.

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 129/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 143


Arquivos Exenciais para o BDE:
EUROPE.BLL
USA.BLL
IDR20009.DLL
IDAPI32.DLL
BLW32.DLL
IDAPI32.CFG <--- esse arquivo pode ter qualquer outro nome, desde que
seja configurado no registro.

Drivers de Banco de Dados:


IDPDX32.DLL <--- Driver Paradox
IDASCI32.DLL <---
IDDBAS32.DLL <---Driver
DriverASCII
DBase
IDODBC32.DLL <--- Driver ODBC

O BDE precisa de pelo menos um Driver de Banco de Dados para funcionar.


Esses acima sao apenas alguns, existem varios outros.

O BDE 4.51 + Driver Paradox compactados com o Algoritimo ZIP, ocuparam


aproximadamente 650 Kb.

Entradas no Registro do Win95:


HKEY_LOCAL_MACHINE
SOFTWARE\Borland\Database Engine
DLLPATH -> localizacao do BDE (Unidade+Caminho Completo)
CONFIGFILE01 -> localizacao do arquivo de configuracao (Unidade+Caminho
Completo+Nome do Arquivo)
SOFTWARE\Borland\BLW32
BLAPIPATH -> localizacao do BDE (Unidade+Caminho Completo)
LOCALE_LIB1 -> localizacao do arquivo USA.BLL (Unidade+Caminho
Completo+USA.BLL)
LOCALE_LIB2 -> localizacao do arquivo EUROPE.BLL (Unidade+Caminho
Completo+EUROPE.BLL)

Segue um pequeno exemplo de como registrar o BDE no Registro do Win95:

begin
Registry.RootKey := HKEY_LOCAL_MACHINE;
Registry.CreateKey('SOFTWARE\Borland\Database Engine');
Registry.OpenKey('SOFTWARE\Borland\Database Engine', False);
Registry.WriteString('DLLPATH', 'C:\ARQUIVOS DE PROGRAMAS\BDE\');
Registry.WriteString('CONFIGFILE1', 'C:\ARQUIVOS DE
PROGRAMAS\BDE\IDAPI32.CFG');
Registry.OpenKey('\', False);
Registry.CreateKey('SOFTWARE\Borland\BLW32');

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 130/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Registry.OpenKey('SOFTWARE\Borland\BLW32', False);
Registry.WriteString('BLAPIPATH', 'C:\ARQUIVOS DE PROGRAMAS\BDE\');
Registry.WriteString('LOCALE_LIB1', 'C:\ARQUIVOS DE
PROGRAMAS\BDE\USA.BLL');
Registry.WriteString('LOCALE_LIB2', 'C:\ARQUIVOS DE
PROGRAMAS\BDE\EUROPE.BLL');
end;

Para compilar esse codigo, sera necessario declarar a Unit Registry.


Como eu disse, esse e um exemplo bem simples. Ele nem mesmo verifica se
o BDE ja esta registrado ou não.
Para criar o Alias atravez do seu instalador, voce pode usar a funcao
da api do BDE chamada DbiAddAlias.

Inicio da pagina 

Dica numero : 144


Veja as propriedades dp TApplication...

Application.HintColor := clAqua;
Application.HintPause := ...
Application.HintShortPause := ...

Inicio da pagina 

Dica numero : 145


A tecnica apresentada nao apenas serve para o proposito procurado,
mas tambem serve para mostrar o progresso de diversas outras atividades que
o BDE executa, como:

** Criacao
Criacao de
de tabelas
indices para tabelas
* Reestruturacao de tabelas
* Execucao de queries (ja comentado)
* alguma outra coisa que no momento nao me ocorre... :))

Importante:

1) No meu exemplo, estou usando o Delphi 3.02. Caso seu Delphi seja de
uma versao menor, vc devera ter um trabalho extra para repor a classe
TBDECallback. Acredito que seja possivel fazer uma rotina que funcione em
Delphi 1, mas que com certeza dara um certo trabalhinho, ah, isso dara...

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 131/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

:-/ 

2) Ate agora so usei esse codigo com tabelas Paradox, mas realmente
acredito que ele venha a funcionar com base de dados Interbase, Oracle,
etc...

3) Nao sei se com o uso do Opus, Apollo ou qualquer outro substituto do


BDE a tecnica ira funcionar, uma vez que nao se estaria trabalhando com o
BDE original. Talvez alguem da lista possa dar essa informacao.

Teoria
=====

Segundo o help do Delphi, "o TBDECallback eh um wrapper para uma funcao


de callback do BDE. Com ele eh possivel instruir o BDE para que o mesmo
execute algumas tarefas em resposta a eventos que ocorram durante uma
chamada de uma funcao do BDE. " - Fim do plagio do arquivo de help.

O tipo de callback depende de um parametro CBType que eh fornecido no


momento da criacao do TBDECallback. E, entre os diversos valores que o
CBType pode apresentar, existe um que muito nos interessa; o cbGENPROGRESS.
:))

Assim, vc deveria criar uma funcao de callback do tipo cbGENPROGRESS


chamada AtualizaGauge e indicar que a mesma eh que devera ser executada
"entre cada respiracao" do BDE. Na rotina AtualizaGauge, o BDE iria te
informar o percentual de progresso da tarefa .
O que voce faria nessa rotina ? Simples... atualizar o Gauge / ProgressBar.

Tudo muito bonito, tudo muito comovente, mas agora vamos para o lado
pratico...

Pratica
======
Para que o BDE possa informar o progresso da tarefa, ele precisa obter
essa informacao da base de dados que esta sendo utilizada. Acontece que,
por razoes diferentes, nem sempre ele eh capaz de saber o PERCENTUAL da
tarefa. Numa copia de registros de uma tabela para outra, ele pode saber
que ja foram copiados 270 registros, mas nao saber que esse esforco
representa 36 % de todos os registros que serao copiados.

Assim sendo, na funcao de callback que sera criada, receberemos um


parametro do tipo pCBPROGRESSDesc, que por sua vez eh um ponteiro para uma
estrutura que contem duas informacoes:

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 132/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

iPercentDone => percentual do servico realizado


szMsg => texto descrevendo o progresso do servico.

Como usar esses parametros ? Simples: sempre que o iPercentDone for


negativo, voce devera considerar o texto descrito no campo szMsg. Se for
igual ou maior que zero, entao vc devera considerar o valor do proprio
iPercentDone.

Uma boa noticia para quem se preocupa com as mensagens que aparecem em
ingles, quando se quer na verdade mostra-las em portugues: a mensagem
fornecida por szMsg devera sempre aparecer no formato <:>
.....
Exemplo:

Records copied: 170

Assim, voce pode procurar pelos dois pontos ":" e pegar o valor que vem a
seguir para montar sua propria informacao em portugues.

Pessoalmente, ate agora nunca obtive um iPercentDone positivo. Li no


newsgroup da Borland que poucas bases de dados eram capazes de informar o
real percentual para o BDE. Se nao me engano, o Sybase era um deles... NAO
ESTOU CERTO DISSO.

Vamos para um exemplo pratico ? Crie um projeto novo, e coloque um:


TQuery, TButton, TProgressBar e TLabel.
Sua query deve ser montada para abrir uma tabela razoavelmente grande, de
modo que a operação de abertura demore um pouco.

Agora vamos aos codigos:

1) Acrescente a unit BDE no seu USES da unit.

2) Acrescente algumas declarações na declaração do seu Form:


==============================
type
TForm1 = class(TForm)
... (bla bla bla)
private
{ Private declarations }
FCBPROGRESSDesc: pCBPROGRESSDesc;
FProgressCallback: TBDECallback;
function GetDataCallback(CBInfo: Pointer): CBRType;
public
{ Public declarations }
end;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 133/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 146


Deleta o cifrão se existir e transforma a string em
um valor formatando em quanta casas decimais passar como parâmetro.

function STRFloat (S : String ; decimais: Integer): Double;


var valor : Extended;
begin
Result := 0.00;
if not (trim (S) = '') then
begin
if Pos('R',S) > 0 then
delete(S,pos('R',S),1);
if Pos('$',S) > 0 then
delete(S,pos('$',S),1);
if Pos('.',S) > 0 then
delete(S,pos('.',S),1);
valor := StrToFloat(S);
result := strtofloat(floattostrf (valor,fffixed,8,decimais));
end;
end.

Inicio da pagina 

Dica numero : 147


Verifica se um CEP é valido ou não, passando o Estado e o Cep como parâmetro.
function ChecaCEP(cCep:String ; cEstado:String): Boolean;
var
cCEP1 : Integer;
begin
cCep := copy(cCep,1,5) + copy(cCep,7,3);
cCEP1 := StrToInt(copy(cCep,1,3));
if Length(trim(cCep)) > 0 then
begin
if (StrToInt(cCep) <= 1000000.0) then
begin
MessageDlg('CEP tem que ser maior que [01000-000]',mtError,[mbOk],0);
Result := False
end
else
begin
if Length(trim(copy(cCep,6,3))) < 3 then Result := False else

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 134/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

if (cEstado = 'SP') and (cCEP1 >= 10 ) and (cCEP1 <= 199) then Result := True else
if (cEstado = 'RJ') and (cCEP1 >= 200) and (cCEP1 <= 289) then Result := True else
if (cEstado = 'ES') and (cCEP1 >= 290) and (cCEP1 <= 299) then Result := True else
if (cEstado = 'MG') and (cCEP1 >= 300) and (cCEP1 <= 399) then Result := True else
if (cEstado = 'BA') and (cCEP1 >= 400) and (cCEP1 <= 489) then Result := True else
if
if (cEstado
(cEstado =
= 'SE')
'PE') and
and (cCEP1
(cCEP1 >=
>= 490)
500) and
and (cCEP1
(cCEP1 <=
<= 499)
569) then
then Result
Result :=
:= True
True else
else
if (cEstado = 'AL') and (cCEP1 >= 570) and (cCEP1 <= 579) then Result := True else
if (cEstado = 'PB') and (cCEP1 >= 580) and (cCEP1 <= 589) then Result := True else
if (cEstado = 'RN') and (cCEP1 >= 590) and (cCEP1 <= 599) then Result := True else
if (cEstado = 'CE') and (cCEP1 >= 600) and (cCEP1 <= 639) then Result := True else
if (cEstado = 'PI') and (cCEP1 >= 640) and (cCEP1 <= 649) then Result := True else
if (cEstado = 'MA') and (cCEP1 >= 650) and (cCEP1 <= 659) then Result := True else
if (cEstado = 'PA') and (cCEP1 >= 660) and (cCEP1 <= 688) then Result := True else
if (cEstado = 'AM') and ((cCEP1 >= 690) and (cCEP1 <= 692) or (cCEP1 >= 694) and
(cCEP1 <= 698)) then Result := True else
if (cEstado = 'AP') and (cCEP1 = 689) then Result := True else
if (cEstado = 'RR') and (cCEP1 = 693) then Result := True else
if (cEstado = 'AC') and (cCEP1 = 699) then Result := True else
if ((cEstado = 'DF') or (cEstado = 'GO')) and (cCEP1 >= 700)and(cCEP1 <= 769)then
Result := True else
if (cEstado = 'TO') and (cCEP1 >= 770) and (cCEP1 <= 779) then Result := True else
if (cEstado = 'MT') and (cCEP1 >= 780) and (cCEP1 <= 788) then Result := True else
if (cEstado = 'MS') and (cCEP1 >= 790) and (cCEP1 <= 799) then Result := True else
if (cEstado = 'RO') and (cCEP1 = 789) then Result := True else
if (cEstado = 'PR') and (cCEP1 >= 800) and (cCEP1 <= 879) then Result := True else
if (cEstado = 'SC') and (cCEP1 >= 880) and (cCEP1 <= 899) then Result := True else
if (cEstado = 'RS') and (cCEP1 >= 900) and (cCEP1 <= 999) then Result := True else
Result := False
end;
end
else
begin
Result := True;
end
end;

Inicio da pagina 

Dica numero : 148


function validapis(Dado : String) : boolean;
{Testa se o número do pis é válido ou não}
var
i, wsoma, Wm11, Wdv,wdigito : Integer;
begin
if AllTrim(Dado) <> '' Then
begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 135/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

wdv := strtoint(copy(Dado, 11, 1));


wsoma := 0;
wm11 := 2;
for i := 1 to 10 do
begin
wsoma
if wm11:=<wsoma
9 then + (wm11 *strtoint(copy(Dado,11 - I, 1)));
begin
wm11 := wm11+1
end
else
begin
wm11 := 2;
end;
end;
wdigito := 11 - (wsoma MOD 11);
if wdigito > 9 then
begin
wdigito := 0;
end;
if wdv = wdigito then
begin
validapis := true;
end
else
begin
validapis := false;
end;
end;
end;

Inicio da pagina 

Dica numero : 149


function TestaCgc(xCGC: String):Boolean;
{Testa se o CGC é válido ou não}
Var
d1,d4,xx,nCount,fator,resto,digito1,digito2 : Integer;
Check : String;
begin
d1 := 0;
d4 := 0;
xx := 1;
for nCount := 1 to Length( xCGC )-2 do
begin
if Pos( Copy( xCGC, nCount, 1 ), '/-.' ) = 0 then
begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 136/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

if xx < 5 then
begin
fator := 6 - xx;
end
else
begin
fator := 14 - xx;
end;
d1 := d1 + StrToInt( Copy( xCGC, nCount, 1 ) ) * fator;
if xx < 6 then
begin
fator := 7 - xx;
end
else
begin
fator := 15 - xx;
end;
d4 := d4 + StrToInt( Copy( xCGC, nCount, 1 ) ) * fator;
xx := xx+1;
end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;

Inicio da pagina 

Dica numero : 150


Desconecta da Rede uma unidade mapeada e traduz as mensagens de erro.

Function DesconectaRede(Letra:Pchar;Forcada:boolean):String;

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 137/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 // Letra = Letra atribuida a unidade


 // Forcada = Força o cancelamento do mapeamento
begin
WNetCancelConnection2(Letra,0,Forcada);
Case GetLastError() of 
1205:
1206: Result
Result :=
:= 'Não
'Perfilfoidopossível
usuário abrir o perfil'; ou inválido';
não encontrado
1208: Result := 'Ocorreu um Erro específico na rede';
2138: Result := 'Rede não encontrada ou fora do ar';
2250: Result := 'Mapeamento inválido ou não encontrado';
2401: Result := 'Existem muitos arquivos abertos';
else
Result := 'Unidade disconectada com sucesso';
end;
end;

Inicio da pagina 

Dica numero : 151


Todas as vezes que são abertas as tabelas é colocado o comando StartTransaction antes
da abertura das
mesmas.
Quando acontece algum erro na abertura das tabelas, o Delphi dispara uma mensagem
de erro. Este erro
pode ter sido provocado por diversos motivos mas é certo que o erro foi de alteração de
uma ou
mais tabelas no Banco de Dados. é aconselhável que se coloque uma rotina de
tratamento de erro
listada abaixo:
- Onde estão as tabelas, coloque as suas tabelas que serão abertas;
- Onde será mostrada a mensagem coloque uma mensagem qualquer avisando sobre o
erro
try
if F_Menu.DBSistema.IsSQLBased then
F_Menu.DBSistema.StartTransaction;
Tabela1.Open;
Tabela2.Open;
Tabela3.Open;
Tabela4.Open;
except
on EDatabaseError do
if MessageDlg(, mtError, [mbOK], 0) <> mrOK Then
raise;
end;
ShowModal;
Sugestão Delphi / Oracle
Criar uma função que irá verificar qual o código de erro enviado pela exceção e então

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 138/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

emitir uma
mensagem em português. Abaixo está uma idéia desta rotina que será inserida no
formulário
principal da sua aplicação.
procedure TF_Menu.ErrorMsg(Sender : TObject; E: exception);
begin
if e is EDBengineError then
TrataErro(E as edbEngineError)
else
application.showException(E);
end;
procedure TF_Menu.TrataErro(E: eDBEngineError);
var
nSQLError : integer;
cSQLMessage : string;
cTable : string;
x : integer;
begin
nSQLError := 0;
cSQLMessage := '';
for x:=0 to e.ErrorCount -1 do
if e.errors[x].NativeError <> 0 then
begin
nSQLError := e.errors[x].NativeError;
cSQLMessage := e.errors[x].message;
end;
if nSQLError <> 0 then
begin
cTable := '';
x := pos('table"',cSQLMessage);
if x > 0 then
begin
cTable := copy(cSQLMessage,x+7,20);
x := pos('"',cTable);
if x > 0 then cTable := copy(cTable,1,x-1);
end;
case nSQLError of 
1 : showmessage('Este
2292 registro
: showmessage('Este já está
resgistro nãocadastrado.');
pode ser excluído porque'+#10+
'existem outros que dependem dele e que não foram excluídos');
12203 : showmessage('Base de Dados está fora do ar. Favor entrar'+#10+
'em contato com o responsável pela rede na '+#10+
'localidade selecionada ou tente mais tarde.');
else
showmessage(IntToStr(nSQLError)+' '+cSQLMessage);
end;
end
else
showmessage('Algo
end; errado aconteceu!');

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 139/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

 
procedure TF_Menu.FormCreate(Sender: TObject);
begin
Application.OnException := ErrorMsg;
end;

Inicio da pagina 

Dica numero : 152


O DBGrid tem uma propriedade não documentada chamada SelectedRows
(Tbookmark). Com ela você pode gerenciar Multiselect da seguinte forma:
var
contador: Integer;
begin
With Dbgrid1 do
Begin
for contador:= 0 to Pred(SelectedRows.Count) do
Begin
Datasource.Dataset.Bookmark:= SelectedRows[contador]; // posiciona nos registros
selecionados
do DBGrid
end;
end;
Inicio da pagina 

Dica numero : 153


Basta você passar a string a ser procurada, a string que à substituirá e campo memo.
Chamando por exemplo no evento OnClick de em botão.

Procedure TForm1.Button1Click (Sender: TObject);


Begin
FindReplace(Edit1.Text,Edit2.Text, Memo1);
end;

Procedure FindReplace (const Enc, subs: String; Var Texto:TMemo);


Var
i, Posicao: Integer;
Linha: string;
Begin
For i:= 0 to Texto.Lines.count - 1 do
begin

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 140/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Linha := Texto. Lines[i];


Repeat
Posicao:=Pos(Enc,Linha);
If Posicao > 0 then
Begin
Delete(Linha,Posicao,Length(Enc));
Insert(Subs,Linha,Posicao);
Texto.Lines[i]:=Linha;
end;
until Posicao = 0;
end;
end;

Inicio da pagina 

Dica numero : 154


function TruncVal(Value: Double; Casas: Integer): Double;
var
sPot: String;
iPot: Integer;
x: Integer;
begin
sPot := '1';
for x := 1 to Casas do sPot := sPot + '0';
begin
iPot := StrToInt(sPot);
end;
Result := StrToInt(IntToStr(Trunc(Value * iPot))) / iPot;
end;

Inicio da pagina 

Dica numero : 155


procedure TForm1.Edit1Change(Sender: TObject);
begin
Listbox1.Perform(LB_SELECTSTRING,0,LongInt(PChar(Edit1.Text)));
end;

Inicio da pagina 

Dica numero : 156

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 141/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

procedure ConvTextOut(CV: TCanvas; const sText: String; x, y,angle:integer);


var
LogFont: TLogFont;
SaveFont: TFont;
begin
SaveFont := TFont.Create;
SaveFont.Assign(CV.Font);
GetObject(SaveFont.Handle, sizeof(TLogFont), @LogFont);
with LogFont do
begin
lfEscapement := angle *10;
lfPitchAndFamily := FIXED_PITCH or FF_DONTCARE;
end; {with}
CV.Font.Handle := CreateFontIndirect(LogFont);
SetBkMode(CV.Handle, TRANSPARENT);
CV.TextOut(x, y, sText);
CV.Font.Assign(SaveFont);
SaveFont.Free;
end;

Inicio da pagina 

Dica numero : 157

function HexToInt(const HexStr: string): longint;


var
iNdx: integer;
cTmp: Char;
begin
result := 0;
for iNdx := 1 to Length(HexStr) do
begin
cTmp := HexStr[iNdx];
case cTmp of 
'0'..'9': Result := 16 * Result + (Ord(cTmp) - $30);
'A'..'F': Result := 16 * Result + (Ord(cTmp) - $37);
'a'..'f': Result := 16 * Result + (Ord(cTmp) - $57);
else
raise EConvertError.Create('Illegal character in hex string');
end;
end;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 142/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 158


procedure TForm1.btnCriaFieldClick(Sender: TObject);
var T: TStringField;
begin
if qryCliente.Active then qryCliente.Close;
T := TStringField.Create(Self);
T.fieldName := 'cli_Nome';
T.FieldKind := fkData;
T.DisplayLabel := 'Nome do Cliente';
T.Visible := True;
T.Name := qryCliente.Name + T.FieldName;
T.Index := qryCliente.FieldCount;
T.DataSet := qryCliente;
qryCliente.FieldDefs.UpDate;
qryCliente.Open;
end;

procedure TForm1.btnApagaFieldClick(Sender: TObject);


var TC: TComponent;
begin
TC := FindComponent('qryClientecli_Nome');
if not (TC = nil) then
begin
qryCliente.Close;
TC.Free;
qryCliente.Open;
end;
end;

Inicio da pagina 

Dica numero : 159

var
button : Integer;
msg1 : Array [0..79] of Char;
msg2 : Array [0..79] of Char;
begin
StrPCopy(Msg1, Edit1.Text + ' ' + Edit2.Text);
StrPCopy(Msg2, Edit3.Text + ' ' + Edit4.Text);
Button := Application.MessageBox (Msg2,Msg1, MB_YESNOCANCEL+
mb_DefButton1+MB_ICONQUESTION);
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 143/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 160


1º Coloque um listbox no form
Modifique o OnCreate do form assim:

procedure TForm1.FormCreate(Sender: TObject);


var
i : Integer;
DevMode : TDevMode;
begin
i := 0;
while EnumDisplaySettings(nil,i,Devmode) do begin
with Devmode do
ListBox1.Items.Add(Format('%dx%d
[dmPelsWidth,dmPelsHeight, %d Colors',
1 shl dmBitsperPel]));
Inc(i);
end;
end;
- Coloque um botão no form
- Altere o evento OnClick do botão conforme abaixo:

procedure TForm1.Button1Click(Sender: TObject);


var
DevMode : TDevMode;
begin
EnumDisplaySettings(nil,Listbox1.ItemIndex,Devmode);
ChangeDisplaySettings(DevMode,0);
end;

Inicio da pagina 

Dica numero : 161


begin
if opendialog1.execute then
begin
mediaplayer1.filename:= opendialog1.filename;
mediaplayer1.open;
mediaplayer1.Perform (wm_lbuttondown,0,$00090009);
mediaplayer1.Perform (wm_lbuttonup,0,$00090009);
end;
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 144/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 162


try
StrToDate(Edit1.Text);
except
on EConvertError do
ShowMessage ('Data Inválida!);
end;

Inicio da pagina 

Dica numero : 163


procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
const
str='1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
max=6;
begin
Edit1.Text:='';
for i:=1 to max do
begin
Edit1.Text:=Edit1.Text+str[random(length(str))+1];
end;
end.

Inicio da pagina 

Dica numero : 164


procedure TForm1.btnTestClick(Sender: TObject);
var i: integer;
begin
for i:= 0 to Table1.FieldCount-1 do
Table1.Fields[i].DisplayWidth:= Length(Table1.Fields[i].DisplayLabel);
end;

Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 145/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 165


Inicio da pagina 

Dica numero : 166


Inicio da pagina 

Dica numero : 167

Inicio da pagina 

Dica numero : 168


Inicio da pagina 

Dica numero : 169


Inicio da pagina 

Dica numero : 170


Inicio da pagina 

Dica numero : 171


Inicio da pagina 

Dica numero : 172


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 146/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 173


Inicio da pagina 

Dica numero : 174


Inicio da pagina 

Dica numero : 175


Inicio da pagina 

Dica numero : 176


Inicio da pagina 

Dica numero : 177


Inicio da pagina 

Dica numero : 178

Inicio da pagina 

Dica numero : 179


Inicio da pagina 

Dica numero : 180

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 147/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 181


Inicio da pagina 

Dica numero : 182


Inicio da pagina 

Dica numero : 183


Inicio da pagina 

Dica numero : 184

Inicio da pagina 

Dica numero : 185


Inicio da pagina 

Dica numero : 186


Inicio da pagina 

Dica numero : 187


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 148/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 188


Inicio da pagina 

Dica numero : 189


Inicio da pagina 

Dica numero : 190

Inicio da pagina 

Dica numero : 191


Inicio da pagina 

Dica numero : 192


Inicio da pagina 

Dica numero : 193


Inicio da pagina 

Dica numero : 194


Inicio da pagina 

Dica numero : 195


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 149/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 196


Inicio da pagina 

Dica numero : 197


Inicio da pagina 

Dica numero : 198


Inicio da pagina 

Dica numero : 199


Inicio da pagina 

Dica numero : 200


Inicio da pagina 

Dica numero : 201

Inicio da pagina 

Dica numero : 202


Inicio da pagina 

Dica numero : 203

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 150/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 204


Inicio da pagina 

Dica numero : 205


Inicio da pagina 

Dica numero : 206


Inicio da pagina 

Dica numero : 207

Inicio da pagina 

Dica numero : 208


Inicio da pagina 

Dica numero : 209


Inicio da pagina 

Dica numero : 210


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 151/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 211


Inicio da pagina 

Dica numero : 212


Inicio da pagina 

Dica numero : 213

Inicio da pagina 

Dica numero : 214


Inicio da pagina 

Dica numero : 215


Inicio da pagina 

Dica numero : 216


Inicio da pagina 

Dica numero : 217


Inicio da pagina 

Dica numero : 218


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 152/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 219


Inicio da pagina 

Dica numero : 220


Inicio da pagina 

Dica numero : 221


Inicio da pagina 

Dica numero : 222


Inicio da pagina 

Dica numero : 223


Inicio da pagina 

Dica numero : 224

Inicio da pagina 

Dica numero : 225


Inicio da pagina 

Dica numero : 226

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 153/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 227


Inicio da pagina 

Dica numero : 228


Inicio da pagina 

Dica numero : 229


Inicio da pagina 

Dica numero : 230

Inicio da pagina 

Dica numero : 231


Inicio da pagina 

Dica numero : 232


Inicio da pagina 

Dica numero : 233


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 154/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 234


Inicio da pagina 

Dica numero : 235


Inicio da pagina 

Dica numero : 236

Inicio da pagina 

Dica numero : 237


Inicio da pagina 

Dica numero : 238


Inicio da pagina 

Dica numero : 239


Inicio da pagina 

Dica numero : 240


Inicio da pagina 

Dica numero : 241


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 155/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 242


Inicio da pagina 

Dica numero : 243


Inicio da pagina 

Dica numero : 244


Inicio da pagina 

Dica numero : 245


Inicio da pagina 

Dica numero : 246


Inicio da pagina 

Dica numero : 247

Inicio da pagina 

Dica numero : 248


Inicio da pagina 

Dica numero : 249

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 156/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 250


Inicio da pagina 

Dica numero : 251


Inicio da pagina 

Dica numero : 252


Inicio da pagina 

Dica numero : 253

Inicio da pagina 

Dica numero : 254


Inicio da pagina 

Dica numero : 255


Inicio da pagina 

Dica numero : 256


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 157/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 257


Inicio da pagina 

Dica numero : 258


Inicio da pagina 

Dica numero : 259

Inicio da pagina 

Dica numero : 260


Inicio da pagina 

Dica numero : 261


Inicio da pagina 

Dica numero : 262


Inicio da pagina 

Dica numero : 263


Inicio da pagina 

Dica numero : 264


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 158/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 265


Inicio da pagina 

Dica numero : 266


Inicio da pagina 

Dica numero : 267


Inicio da pagina 

Dica numero : 268


Inicio da pagina 

Dica numero : 269


Inicio da pagina 

Dica numero : 270

Inicio da pagina 

Dica numero : 271


Inicio da pagina 

Dica numero : 272

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 159/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 273


Inicio da pagina 

Dica numero : 274


Inicio da pagina 

Dica numero : 275


Inicio da pagina 

Dica numero : 276

Inicio da pagina 

Dica numero : 277


Inicio da pagina 

Dica numero : 278


Inicio da pagina 

Dica numero : 279


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 160/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 280


Inicio da pagina 

Dica numero : 281


Inicio da pagina 

Dica numero : 282

Inicio da pagina 

Dica numero : 283


Inicio da pagina 

Dica numero : 284


Inicio da pagina 

Dica numero : 285


Inicio da pagina 

Dica numero : 286


Inicio da pagina 

Dica numero : 287


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 161/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 288


Inicio da pagina 

Dica numero : 289


Inicio da pagina 

Dica numero : 290


Inicio da pagina 

Dica numero : 291


Inicio da pagina 

Dica numero : 292


Inicio da pagina 

Dica numero : 293

Inicio da pagina 

Dica numero : 294


Inicio da pagina 

Dica numero : 295

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 162/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 296


Inicio da pagina 

Dica numero : 297


Inicio da pagina 

Dica numero : 298


Inicio da pagina 

Dica numero : 299

Inicio da pagina 

Dica numero : 300


Inicio da pagina 

Dica numero : 301


Inicio da pagina 

Dica numero : 302


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 163/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 303


Inicio da pagina 

Dica numero : 304


Inicio da pagina 

Dica numero : 305

Inicio da pagina 

Dica numero : 306


Inicio da pagina 

Dica numero : 307


Inicio da pagina 

Dica numero : 308


Inicio da pagina 

Dica numero : 309


Inicio da pagina 

Dica numero : 310


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 164/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 311


Inicio da pagina 

Dica numero : 312


Inicio da pagina 

Dica numero : 313


Inicio da pagina 

Dica numero : 314


Inicio da pagina 

Dica numero : 315


Inicio da pagina 

Dica numero : 316

Inicio da pagina 

Dica numero : 317


Inicio da pagina 

Dica numero : 318

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 165/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 319


Inicio da pagina 

Dica numero : 320


Inicio da pagina 

Dica numero : 321


Inicio da pagina 

Dica numero : 322

Inicio da pagina 

Dica numero : 323


Inicio da pagina 

Dica numero : 324


Inicio da pagina 

Dica numero : 325


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 166/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 326


Inicio da pagina 

Dica numero : 327


Inicio da pagina 

Dica numero : 328

Inicio da pagina 

Dica numero : 329


Inicio da pagina 

Dica numero : 330


Inicio da pagina 

Dica numero : 331


Inicio da pagina 

Dica numero : 332


Inicio da pagina 

Dica numero : 333


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 167/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 334


Inicio da pagina 

Dica numero : 335


Inicio da pagina 

Dica numero : 336


Inicio da pagina 

Dica numero : 337


Inicio da pagina 

Dica numero : 338


Inicio da pagina 

Dica numero : 339

Inicio da pagina 

Dica numero : 340


Inicio da pagina 

Dica numero : 341

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 168/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 342


Inicio da pagina 

Dica numero : 343


Inicio da pagina 

Dica numero : 344


Inicio da pagina 

Dica numero : 345

Inicio da pagina 

Dica numero : 346


Inicio da pagina 

Dica numero : 347


Inicio da pagina 

Dica numero : 348


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 169/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 349


Inicio da pagina 

Dica numero : 350


Inicio da pagina 

Dica numero : 351

Inicio da pagina 

Dica numero : 352


Inicio da pagina 

Dica numero : 353


Inicio da pagina 

Dica numero : 354


Inicio da pagina 

Dica numero : 355


Inicio da pagina 

Dica numero : 356


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 170/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 357


Inicio da pagina 

Dica numero : 358


Inicio da pagina 

Dica numero : 359


Inicio da pagina 

Dica numero : 360


Inicio da pagina 

Dica numero : 361


Inicio da pagina 

Dica numero : 362

Inicio da pagina 

Dica numero : 363


Inicio da pagina 

Dica numero : 364

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 171/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 365


Inicio da pagina 

Dica numero : 366


Inicio da pagina 

Dica numero : 367


Inicio da pagina 

Dica numero : 368

Inicio da pagina 

Dica numero : 369


Inicio da pagina 

Dica numero : 370


Inicio da pagina 

Dica numero : 371


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 172/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 372


Inicio da pagina 

Dica numero : 373


Inicio da pagina 

Dica numero : 374

Inicio da pagina 

Dica numero : 375


Inicio da pagina 

Dica numero : 376


Inicio da pagina 

Dica numero : 377


Inicio da pagina 

Dica numero : 378


Inicio da pagina 

Dica numero : 379


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 173/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 380


Inicio da pagina 

Dica numero : 381


Inicio da pagina 

Dica numero : 382


Inicio da pagina 

Dica numero : 383


Inicio da pagina 

Dica numero : 384


Inicio da pagina 

Dica numero : 385

Inicio da pagina 

Dica numero : 386


Inicio da pagina 

Dica numero : 387

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 174/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 388


Inicio da pagina 

Dica numero : 389


Inicio da pagina 

Dica numero : 390


Inicio da pagina 

Dica numero : 391

Inicio da pagina 

Dica numero : 392


Inicio da pagina 

Dica numero : 393


Inicio da pagina 

Dica numero : 394


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 175/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 395


Inicio da pagina 

Dica numero : 396


Inicio da pagina 

Dica numero : 397

Inicio da pagina 

Dica numero : 398


Inicio da pagina 

Dica numero : 399


Inicio da pagina 

Dica numero : 400


Inicio da pagina 

Dica numero : 401


Inicio da pagina 

Dica numero : 402


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 176/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 403


Inicio da pagina 

Dica numero : 404


Inicio da pagina 

Dica numero : 405


Inicio da pagina 

Dica numero : 406


Inicio da pagina 

Dica numero : 407


Inicio da pagina 

Dica numero : 408

Inicio da pagina 

Dica numero : 409


Inicio da pagina 

Dica numero : 410

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 177/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 411


Inicio da pagina 

Dica numero : 412


Inicio da pagina 

Dica numero : 413


Inicio da pagina 

Dica numero : 414

Inicio da pagina 

Dica numero : 415


Inicio da pagina 

Dica numero : 416


Inicio da pagina 

Dica numero : 417


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 178/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 418


Inicio da pagina 

Dica numero : 419


Inicio da pagina 

Dica numero : 420

Inicio da pagina 

Dica numero : 421


Inicio da pagina 

Dica numero : 422


Inicio da pagina 

Dica numero : 423


Inicio da pagina 

Dica numero : 424


Inicio da pagina 

Dica numero : 425


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 179/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 426


Inicio da pagina 

Dica numero : 427


Inicio da pagina 

Dica numero : 428


Inicio da pagina 

Dica numero : 429


Inicio da pagina 

Dica numero : 430


Inicio da pagina 

Dica numero : 431

Inicio da pagina 

Dica numero : 432


Inicio da pagina 

Dica numero : 433

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 180/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 434


Inicio da pagina 

Dica numero : 435


Inicio da pagina 

Dica numero : 436


Inicio da pagina 

Dica numero : 437

Inicio da pagina 

Dica numero : 438


Inicio da pagina 

Dica numero : 439


Inicio da pagina 

Dica numero : 440


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 181/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 441


Inicio da pagina 

Dica numero : 442


Inicio da pagina 

Dica numero : 443

Inicio da pagina 

Dica numero : 444


Inicio da pagina 

Dica numero : 445


Inicio da pagina 

Dica numero : 446


Inicio da pagina 

Dica numero : 447


Inicio da pagina 

Dica numero : 448


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 182/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 449


Inicio da pagina 

Dica numero : 450


Inicio da pagina 

Dica numero : 451


Inicio da pagina 

Dica numero : 452


Inicio da pagina 

Dica numero : 453


Inicio da pagina 

Dica numero : 454

Inicio da pagina 

Dica numero : 455


Inicio da pagina 

Dica numero : 456

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 183/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 457


Inicio da pagina 

Dica numero : 458


Inicio da pagina 

Dica numero : 459


Inicio da pagina 

Dica numero : 460

Inicio da pagina 

Dica numero : 461


Inicio da pagina 

Dica numero : 462


Inicio da pagina 

Dica numero : 463


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 184/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 464


Inicio da pagina 

Dica numero : 465


Inicio da pagina 

Dica numero : 466

Inicio da pagina 

Dica numero : 467


Inicio da pagina 

Dica numero : 468


Inicio da pagina 

Dica numero : 469


Inicio da pagina 

Dica numero : 470


Inicio da pagina 

Dica numero : 471


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 185/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 472


Inicio da pagina 

Dica numero : 473


Inicio da pagina 

Dica numero : 474


Inicio da pagina 

Dica numero : 475


Inicio da pagina 

Dica numero : 476


Inicio da pagina 

Dica numero : 477

Inicio da pagina 

Dica numero : 478


Inicio da pagina 

Dica numero : 479

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 186/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 480


Inicio da pagina 

Dica numero : 481


Inicio da pagina 

Dica numero : 482


Inicio da pagina 

Dica numero : 483

Inicio da pagina 

Dica numero : 484


Inicio da pagina 

Dica numero : 485


Inicio da pagina 

Dica numero : 486


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 187/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 487


Inicio da pagina 

Dica numero : 488


Inicio da pagina 

Dica numero : 489

Inicio da pagina 

Dica numero : 490


Inicio da pagina 

Dica numero : 491


Inicio da pagina 

Dica numero : 492


Inicio da pagina 

Dica numero : 493


Inicio da pagina 

Dica numero : 494


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 188/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 495


Inicio da pagina 

Dica numero : 496


Inicio da pagina 

Dica numero : 497


Inicio da pagina 

Dica numero : 498


Inicio da pagina 

Dica numero : 499


Inicio da pagina 

Dica numero : 500

Inicio da pagina 

Dica numero : 501


Inicio da pagina 

Dica numero : 502

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 189/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 503


Inicio da pagina 

Dica numero : 504


Inicio da pagina 

Dica numero : 505


Inicio da pagina 

Dica numero : 506

Inicio da pagina 

Dica numero : 507


Inicio da pagina 

Dica numero : 508


Inicio da pagina 

Dica numero : 509


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 190/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 510


Inicio da pagina 

Dica numero : 511


Inicio da pagina 

Dica numero : 512

Inicio da pagina 

Dica numero : 513


Inicio da pagina 

Dica numero : 514


Inicio da pagina 

Dica numero : 515


Inicio da pagina 

Dica numero : 516


Inicio da pagina 

Dica numero : 517


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 191/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 518


Inicio da pagina 

Dica numero : 519


Inicio da pagina 

Dica numero : 520


Inicio da pagina 

Dica numero : 521


Inicio da pagina 

Dica numero : 522


Inicio da pagina 

Dica numero : 523

Inicio da pagina 

Dica numero : 524


Inicio da pagina 

Dica numero : 525

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 192/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 526


Inicio da pagina 

Dica numero : 527


Inicio da pagina 

Dica numero : 528


Inicio da pagina 

Dica numero : 529

Inicio da pagina 

Dica numero : 530


Inicio da pagina 

Dica numero : 531


Inicio da pagina 

Dica numero : 532


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 193/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 533


Inicio da pagina 

Dica numero : 534


Inicio da pagina 

Dica numero : 535

Inicio da pagina 

Dica numero : 536


Inicio da pagina 

Dica numero : 537


Inicio da pagina 

Dica numero : 538


Inicio da pagina 

Dica numero : 539


Inicio da pagina 

Dica numero : 540


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 194/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 541


Inicio da pagina 

Dica numero : 542


Inicio da pagina 

Dica numero : 543


Inicio da pagina 

Dica numero : 544


Inicio da pagina 

Dica numero : 545


Inicio da pagina 

Dica numero : 546

Inicio da pagina 

Dica numero : 547


Inicio da pagina 

Dica numero : 548

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 195/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 549


Inicio da pagina 

Dica numero : 550


Inicio da pagina 

Dica numero : 551


Inicio da pagina 

Dica numero : 552

Inicio da pagina 

Dica numero : 553


Inicio da pagina 

Dica numero : 554


Inicio da pagina 

Dica numero : 555


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 196/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 556


Inicio da pagina 

Dica numero : 557


Inicio da pagina 

Dica numero : 558

Inicio da pagina 

Dica numero : 559


Inicio da pagina 

Dica numero : 560


Inicio da pagina 

Dica numero : 561


Inicio da pagina 

Dica numero : 562


Inicio da pagina 

Dica numero : 563


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 197/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 564


Inicio da pagina 

Dica numero : 565


Inicio da pagina 

Dica numero : 566


Inicio da pagina 

Dica numero : 567


Inicio da pagina 

Dica numero : 568


Inicio da pagina 

Dica numero : 569

Inicio da pagina 

Dica numero : 570


Inicio da pagina 

Dica numero : 571

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 198/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 572


Inicio da pagina 

Dica numero : 573


Inicio da pagina 

Dica numero : 574


Inicio da pagina 

Dica numero : 575

Inicio da pagina 

Dica numero : 576


Inicio da pagina 

Dica numero : 577


Inicio da pagina 

Dica numero : 578


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 199/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 579


Inicio da pagina 

Dica numero : 580


Inicio da pagina 

Dica numero : 581

Inicio da pagina 

Dica numero : 582


Inicio da pagina 

Dica numero : 583


Inicio da pagina 

Dica numero : 584


Inicio da pagina 

Dica numero : 585


Inicio da pagina 

Dica numero : 586


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 200/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 587


Inicio da pagina 

Dica numero : 588


Inicio da pagina 

Dica numero : 589


Inicio da pagina 

Dica numero : 590


Inicio da pagina 

Dica numero : 591


Inicio da pagina 

Dica numero : 592

Inicio da pagina 

Dica numero : 593


Inicio da pagina 

Dica numero : 594

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 201/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 595


Inicio da pagina 

Dica numero : 596


Inicio da pagina 

Dica numero : 597


Inicio da pagina 

Dica numero : 598

Inicio da pagina 

Dica numero : 599


Inicio da pagina 

Dica numero : 600


Inicio da pagina 

Dica numero : 601


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 202/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 602


Inicio da pagina 

Dica numero : 603


Inicio da pagina 

Dica numero : 604

Inicio da pagina 

Dica numero : 605


Inicio da pagina 

Dica numero : 606


Inicio da pagina 

Dica numero : 607


Inicio da pagina 

Dica numero : 608


Inicio da pagina 

Dica numero : 609


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 203/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 610


Inicio da pagina 

Dica numero : 611


Inicio da pagina 

Dica numero : 612


Inicio da pagina 

Dica numero : 613


Inicio da pagina 

Dica numero : 614


Inicio da pagina 

Dica numero : 615

Inicio da pagina 

Dica numero : 616


Inicio da pagina 

Dica numero : 617

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 204/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 618


Inicio da pagina 

Dica numero : 619


Inicio da pagina 

Dica numero : 620


Inicio da pagina 

Dica numero : 621

Inicio da pagina 

Dica numero : 622


Inicio da pagina 

Dica numero : 623


Inicio da pagina 

Dica numero : 624


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 205/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 625


Inicio da pagina 

Dica numero : 626


Inicio da pagina 

Dica numero : 627

Inicio da pagina 

Dica numero : 628


Inicio da pagina 

Dica numero : 629


Inicio da pagina 

Dica numero : 630


Inicio da pagina 

Dica numero : 631


Inicio da pagina 

Dica numero : 632


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 206/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 633


Inicio da pagina 

Dica numero : 634


Inicio da pagina 

Dica numero : 635


Inicio da pagina 

Dica numero : 636


Inicio da pagina 

Dica numero : 637


Inicio da pagina 

Dica numero : 638

Inicio da pagina 

Dica numero : 639


Inicio da pagina 

Dica numero : 640

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 207/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 641


Inicio da pagina 

Dica numero : 642


Inicio da pagina 

Dica numero : 643


Inicio da pagina 

Dica numero : 644

Inicio da pagina 

Dica numero : 645


Inicio da pagina 

Dica numero : 646


Inicio da pagina 

Dica numero : 647


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 208/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 648


Inicio da pagina 

Dica numero : 649


Inicio da pagina 

Dica numero : 650

Inicio da pagina 

Dica numero : 651


Inicio da pagina 

Dica numero : 652


Inicio da pagina 

Dica numero : 653


Inicio da pagina 

Dica numero : 654


Inicio da pagina 

Dica numero : 655


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 209/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 656


Inicio da pagina 

Dica numero : 657


Inicio da pagina 

Dica numero : 658


Inicio da pagina 

Dica numero : 659


Inicio da pagina 

Dica numero : 660


Inicio da pagina 

Dica numero : 661

Inicio da pagina 

Dica numero : 662


Inicio da pagina 

Dica numero : 663

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 210/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 664


Inicio da pagina 

Dica numero : 665


Inicio da pagina 

Dica numero : 666


Inicio da pagina 

Dica numero : 667

Inicio da pagina 

Dica numero : 668


Inicio da pagina 

Dica numero : 669


Inicio da pagina 

Dica numero : 670


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 211/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 671


Inicio da pagina 

Dica numero : 672


Inicio da pagina 

Dica numero : 673

Inicio da pagina 

Dica numero : 674


Inicio da pagina 

Dica numero : 675


Inicio da pagina 

Dica numero : 676


Inicio da pagina 

Dica numero : 677


Inicio da pagina 

Dica numero : 678


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 212/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 679


Inicio da pagina 

Dica numero : 680


Inicio da pagina 

Dica numero : 681


Inicio da pagina 

Dica numero : 682


Inicio da pagina 

Dica numero : 683


Inicio da pagina 

Dica numero : 684

Inicio da pagina 

Dica numero : 685


Inicio da pagina 

Dica numero : 686

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 213/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 687


Inicio da pagina 

Dica numero : 688


Inicio da pagina 

Dica numero : 689


Inicio da pagina 

Dica numero : 690

Inicio da pagina 

Dica numero : 691


Inicio da pagina 

Dica numero : 692


Inicio da pagina 

Dica numero : 693


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 214/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 694


Inicio da pagina 

Dica numero : 695


Inicio da pagina 

Dica numero : 696

Inicio da pagina 

Dica numero : 697


Inicio da pagina 

Dica numero : 698


Inicio da pagina 

Dica numero : 699


Inicio da pagina 

Dica numero : 700


Inicio da pagina 

Dica numero : 701


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 215/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 702


Inicio da pagina 

Dica numero : 703


Inicio da pagina 

Dica numero : 704


Inicio da pagina 

Dica numero : 705


Inicio da pagina 

Dica numero : 706


Inicio da pagina 

Dica numero : 707

Inicio da pagina 

Dica numero : 708


Inicio da pagina 

Dica numero : 709

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 216/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 710


Inicio da pagina 

Dica numero : 711


Inicio da pagina 

Dica numero : 712


Inicio da pagina 

Dica numero : 713

Inicio da pagina 

Dica numero : 714


Inicio da pagina 

Dica numero : 715


Inicio da pagina 

Dica numero : 716


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 217/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 717


Inicio da pagina 

Dica numero : 718


Inicio da pagina 

Dica numero : 719

Inicio da pagina 

Dica numero : 720


Inicio da pagina 

Dica numero : 721


Inicio da pagina 

Dica numero : 722


Inicio da pagina 

Dica numero : 723


Inicio da pagina 

Dica numero : 724


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 218/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 725


Inicio da pagina 

Dica numero : 726


Inicio da pagina 

Dica numero : 727


Inicio da pagina 

Dica numero : 728


Inicio da pagina 

Dica numero : 729


Inicio da pagina 

Dica numero : 730

Inicio da pagina 

Dica numero : 731


Inicio da pagina 

Dica numero : 732

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 219/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 733


Inicio da pagina 

Dica numero : 734


Inicio da pagina 

Dica numero : 735


Inicio da pagina 

Dica numero : 736

Inicio da pagina 

Dica numero : 737


Inicio da pagina 

Dica numero : 738


Inicio da pagina 

Dica numero : 739


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 220/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 740


Inicio da pagina 

Dica numero : 741


Inicio da pagina 

Dica numero : 742

Inicio da pagina 

Dica numero : 743


Inicio da pagina 

Dica numero : 744


Inicio da pagina 

Dica numero : 745


Inicio da pagina 

Dica numero : 746


Inicio da pagina 

Dica numero : 747


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 221/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 748


Inicio da pagina 

Dica numero : 749


Inicio da pagina 

Dica numero : 750


Inicio da pagina 

Dica numero : 751


Inicio da pagina 

Dica numero : 752


Inicio da pagina 

Dica numero : 753

Inicio da pagina 

Dica numero : 754


Inicio da pagina 

Dica numero : 755

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 222/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 756


Inicio da pagina 

Dica numero : 757


Inicio da pagina 

Dica numero : 758


Inicio da pagina 

Dica numero : 759

Inicio da pagina 

Dica numero : 760


Inicio da pagina 

Dica numero : 761


Inicio da pagina 

Dica numero : 762


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 223/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 763


Inicio da pagina 

Dica numero : 764


Inicio da pagina 

Dica numero : 765

Inicio da pagina 

Dica numero : 766


Inicio da pagina 

Dica numero : 767


Inicio da pagina 

Dica numero : 768


Inicio da pagina 

Dica numero : 769


Inicio da pagina 

Dica numero : 770


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 224/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 771


Inicio da pagina 

Dica numero : 772


Inicio da pagina 

Dica numero : 773


Inicio da pagina 

Dica numero : 774


Inicio da pagina 

Dica numero : 775


Inicio da pagina 

Dica numero : 776

Inicio da pagina 

Dica numero : 777


Inicio da pagina 

Dica numero : 778

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 225/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 779


Inicio da pagina 

Dica numero : 780


Inicio da pagina 

Dica numero : 781


Inicio da pagina 

Dica numero : 782

Inicio da pagina 

Dica numero : 783


Inicio da pagina 

Dica numero : 784


Inicio da pagina 

Dica numero : 785


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 226/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 786


Inicio da pagina 

Dica numero : 787


Inicio da pagina 

Dica numero : 788

Inicio da pagina 

Dica numero : 789


Inicio da pagina 

Dica numero : 790


Inicio da pagina 

Dica numero : 791


Inicio da pagina 

Dica numero : 792


Inicio da pagina 

Dica numero : 793


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 227/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 794


Inicio da pagina 

Dica numero : 795


Inicio da pagina 

Dica numero : 796


Inicio da pagina 

Dica numero : 797


Inicio da pagina 

Dica numero : 798


Inicio da pagina 

Dica numero : 799

Inicio da pagina 

Dica numero : 800


Inicio da pagina 

Dica numero : 801

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 228/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 802


Inicio da pagina 

Dica numero : 803


Inicio da pagina 

Dica numero : 804


Inicio da pagina 

Dica numero : 805

Inicio da pagina 

Dica numero : 806


Inicio da pagina 

Dica numero : 807


Inicio da pagina 

Dica numero : 808


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 229/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 809


Inicio da pagina 

Dica numero : 810


Inicio da pagina 

Dica numero : 811

Inicio da pagina 

Dica numero : 812


Inicio da pagina 

Dica numero : 813


Inicio da pagina 

Dica numero : 814


Inicio da pagina 

Dica numero : 815


Inicio da pagina 

Dica numero : 816


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 230/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 817


Inicio da pagina 

Dica numero : 818


Inicio da pagina 

Dica numero : 819


Inicio da pagina 

Dica numero : 820


Inicio da pagina 

Dica numero : 821


Inicio da pagina 

Dica numero : 822

Inicio da pagina 

Dica numero : 823


Inicio da pagina 

Dica numero : 824

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 231/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 825


Inicio da pagina 

Dica numero : 826


Inicio da pagina 

Dica numero : 827


Inicio da pagina 

Dica numero : 828

Inicio da pagina 

Dica numero : 829


Inicio da pagina 

Dica numero : 830


Inicio da pagina 

Dica numero : 831


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 232/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 832


Inicio da pagina 

Dica numero : 833


Inicio da pagina 

Dica numero : 834

Inicio da pagina 

Dica numero : 835


Inicio da pagina 

Dica numero : 836


Inicio da pagina 

Dica numero : 837


Inicio da pagina 

Dica numero : 838


Inicio da pagina 

Dica numero : 839


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 233/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 840


Inicio da pagina 

Dica numero : 841


Inicio da pagina 

Dica numero : 842


Inicio da pagina 

Dica numero : 843


Inicio da pagina 

Dica numero : 844


Inicio da pagina 

Dica numero : 845

Inicio da pagina 

Dica numero : 846


Inicio da pagina 

Dica numero : 847

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 234/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 848


Inicio da pagina 

Dica numero : 849


Inicio da pagina 

Dica numero : 850


Inicio da pagina 

Dica numero : 851

Inicio da pagina 

Dica numero : 852


Inicio da pagina 

Dica numero : 853


Inicio da pagina 

Dica numero : 854


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 235/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 855


Inicio da pagina 

Dica numero : 856


Inicio da pagina 

Dica numero : 857

Inicio da pagina 

Dica numero : 858


Inicio da pagina 

Dica numero : 859


Inicio da pagina 

Dica numero : 860


Inicio da pagina 

Dica numero : 861


Inicio da pagina 

Dica numero : 862


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 236/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 863


Inicio da pagina 

Dica numero : 864


Inicio da pagina 

Dica numero : 865


Inicio da pagina 

Dica numero : 866


Inicio da pagina 

Dica numero : 867


Inicio da pagina 

Dica numero : 868

Inicio da pagina 

Dica numero : 869


Inicio da pagina 

Dica numero : 870

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 237/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 871


Inicio da pagina 

Dica numero : 872


Inicio da pagina 

Dica numero : 873


Inicio da pagina 

Dica numero : 874

Inicio da pagina 

Dica numero : 875


Inicio da pagina 

Dica numero : 876


Inicio da pagina 

Dica numero : 877


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 238/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 878


Inicio da pagina 

Dica numero : 879


Inicio da pagina 

Dica numero : 880

Inicio da pagina 

Dica numero : 881


Inicio da pagina 

Dica numero : 882


Inicio da pagina 

Dica numero : 883


Inicio da pagina 

Dica numero : 884


Inicio da pagina 

Dica numero : 885


Inicio da pagina 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 239/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Dica numero : 886


Inicio da pagina 

Dica numero : 887


Inicio da pagina 

Dica numero : 888


Inicio da pagina 

Dica numero : 889


Inicio da pagina 

Dica numero : 890


Inicio da pagina 

Dica numero : 891

Inicio da pagina 

Dica numero : 892


Inicio da pagina 

Dica numero : 893

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 240/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Inicio da pagina 

Dica numero : 894


Inicio da pagina 

Dica numero : 895


Inicio da pagina 

Dica numero : 896


Inicio da pagina 

Dica numero : 897

Inicio da pagina 

Dica numero : 898


Inicio da pagina 

Dica numero : 899


Inicio da pagina 

Dica numero : 900

 Criado por: 

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 241/242


 

5/11/2018 900 Dic a s De lphi - slide pdf.c om

Delphus Script
Desenvolvimentos Web e Desktop
Mais informaçoes : ( 0-xx-12-9172-6562 )

http://slide pdf.c om/re a de r/full/900-dic a s-de lphi 242/242

Você também pode gostar