900 dicas delphi

Upload: asabranca83

Post on 11-Jul-2015

8.014 views

Category:

Documents


96 download

TRANSCRIPT

900 Dicas DelphiPerdoenos mas o site aida esta em contruo 160 dicas delphi

1- Mostrar e esconder o Boto Iniciar 2- Mostrar e esconder a Barra de Tarefas 3- Pegando o nome do usurio e a empresa do Windows 4- Arrastar um Form sem clicar no caption 5- Bloquear a tecla CTRL+DEL do DBGrid 6- Escondendo a aplicao da Barra de Tarefas 7- Verificando atributo do arquivo 8- Fazer um BEEP no Computador 9- Fazer uma pausa por um perodo determinado 10- Desabilitando o Splash Screen do Report Smith 11- Lendo o volume do HD 12- Descobrindo o nmero serial do HD 13- Para saber somente o Path da aplicao 14- Interceptar as teclas de funo (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

19- Tocando um som wav sem o media player 20- Obter o diretrio onde seu programa est instalado 21- Bloqueando um arquivo em ambiente de rede 22- Usando Enter para mudar de campo de um DBGrid 23- Funo para obter o nmero do registro atual 24- Enviando um arquivo para a lixeira 25- Carregar um cursor animado (*.ANI) 26- Transferir o contedo de um Memo para o MemoField 27- Capturar o contedo 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 padro e carregar a pagina determinada pelo link 32- Copiar registros de uma tabela para outra incluindo valores Null 33- Deletar arquivos de um diretrio com o caractere curinga * 34- Capturar a lista de aliases disponveis 35- Abrir e fechar a bandeja do drive de CD-ROM 36- Cdigo usados pelas impressoaras HP 37- Copiando arquivos via Delphi 38- Abrir um TComboBox sem clic-lo 39- Mudar a cor da clula ativa do DBGrid 40- Como incrementar 1 ms numa data

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 executvel correspondente a uma determinada aplicao 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 programao 49- Desabilitar as teclas de acesso (CTRL+ALT+DEL), (ALT+TAB), (CTRL+ESC) 50- Fazer um Splash Screen 51- Funo para encriptar uma string 52- Funo reverter uma string 53- Funo para converter um numero inteiro para binrio 54- Funo para converter um numero binrio para inteiro 55- Funo para Encriptar e Descriptar uma String 56- Rotina para verificar erros em toda a aplicao 57- Enviando informaes direto para a impressora 58- Enviando caracteres diretamente ao buffer da impressora 59- Imprimir diretamente para a impressora sem passar pelo gerenciado de impresso 60- Criar barra de status com suporte as caixas de edio do Windows 95 61- Capturando uma tela do Windows 62- Compactao de uma tabela Paradox

63- Configuraes internacionais 64- Listando todas as janelas abertas 65- Primeira letra de um EditBox maiscula 66- Desligar e ligar o monitor (OFF/ON) 67- Invertendo os botes 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 resoluo de vdeo 74- Verificar sistema operacional 75- Nome do usurio 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 botes da MESSAGEDLG 79- Ultimo acesso de um arquivo 80- Obtendo as informaes de verso dos arquivos 81- Acertar padro 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

86- Configurar uma rede Novell 87- Configurao de rede Windows 95/98 com Delphi 88- Criar um arquivo (Bando de dados) em tempo de execuo 89- Controle sobre a digitao 90- Criar arquivo DBF com ndices compostos 91- Sistemas em Delphi para Linux 92- Desenhar um Bitmap no Formulrio 93- Evitando a sada de formulrio 94- Desabilitando simultaneamente as teclas ( ALT + F4 ) 95- Filtrando registros 96- Como saber se um form j esta criado 97- No redimensionar o formulrio 98- Criando forms dinamicamente (SDI) 99- Criando forms dinamicamente (MDI) 100- Definindo o tamanho mnimo e mximo de um form 101- Para fazer protetor de tela com o Delphi 102- Linkar um OBJ ao executvel 103- Alterar LOCAL SHARE via programao 104- Verificando se o Delphi est aberto 105- Criando formulrios 106- Desabilitar acesso a windows 107- Impresso com o TPrinter ( Via gerenciador de impresso)

108- Definir o tamanho do papel em TPrinter 109- Como criar Forms em tempo de execuo 110- Adaptando para resolues de video diferentes? 111- Como posso rolar um form usando pgUP and pgDn. 112- Colocar Funes em uma DLL 113- Verifica validade de CGC e CPF 114- Gera nmero por extenso 115- Preenche com quantidade determinada de zeros o lado esquerdo de uma string 116- Ponto Decimal 117- FindNearest numa Query 118- Relatrios em HTML 119- Desligando Windows via programao 120- Como saber se o CD est no drive 121- Traduo de Mensagens Delphi 3 122- Funo 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 posio do cursor em um Memo 126- Fundo do texto transparente 127- Formatao 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- Diretrio de instalao do windows

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 BMPs em arquivos RES 136- QR armazenado num Blop 137- Deletando um arquivo 138- Diretrio 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- Sugesto para tratamento de erros no Delphi / Cliente-Servidor 152- Gerenciando mais de uma linha selecionada num DBGrid (Multiselect)

153- Procura e substituio 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 parmetros 160- Como mudar a resoluo do vdeo via programao 161- Como rodar vdeos em um panel 162- Validar datas 163- Como gerar senhas aleatrias 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 Funo DayOfWeek 168- Coloca uma mscara nmerica em uma String com nmeros 169- Imprime um texto em outro angulo diferente de 90 170- Chama arquivos BMP de uma Dll 171- Rotina de resgate das variveis de ambiente DOS 172- Executa uma url com o Browser padro 173- Retorna os programas que esto abertos na memria 174- Promove um estado de espera no aplicativo

175 - Retorna a impressora Padro 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 prximo 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 numrico 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 diretrio aps o nome especificado. 188- Converte String em Pchar 189- Converte String em Booleano 190- Filtra todos os nmeros de uma string 191- Funo para impresso de linhas em um relatrio 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

198- Recebe String de data e converte do formato ORIGEM para formato DESTINO 199- Inverte uma String 200- Converte um nmero decimal em algarismos romanos 201- Idade de uma pessoa 202- Tipo de varivel 203- Porcentagem de um valor 204- Formata valor numrico inserindo mascaras de ponto 205- Converte um numero decimal em binrio 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 existncia de uma placa de som 210- Nmero de cpias para a impresso 211- Informaes do Ambiente 212- Alternando entre a declarao de procedure na seo interface e implementation 213- Abreviando Nomes 214- Adicionando hora atual, um nmero determinado de horas. 215- Funco 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 no

220- Reparar e Compactar um banco de dados MS-Access 221- Enviando email com Delphi pelo componente NMSMTP 222- Nmero de cores aceitas pelo monitor 223- Convertendo a 1 letra de um edit para maisculas 224- Obtendo o 'nome do computador' do windows 225- Localizando Valores por Proximidade em uma Tabela. 226- Funo para adquirir Data e Hora de um Arquivo 227- Criando Forms no retangulares 228- Trocando cor de uma linha no DBGrid por uma condio 229- Incrementando e Decrementando com INC( ) e DEC( ) 230- Como Inverter os Botes 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 impresso 235- Como fazer um TMemo receber um arquivo texto ? 236- Como se movimentar/manipular banco de dados? 237- Criao de ndices em tempo de execuo. 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

243- Descobrir quais so 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 msica pelo Winamp 247- Descobrir o drive da aplicao 248- Registrar DLLs 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- Usurio e senha do DBA do MySql 255- Acessar tabelas DBF/NTX no Delphi sem usar o BDE 256- Impresso de cdigo de barras com o QuickReport 257- Como fechar todas as tabelas do DataModule de uma vez 258- Desabilita o boto Fechar do Formulrio 259- Inicializar vrios Edits em um formulrio 260- Executar Pack em Tabelas Paradox 261- Como deletar uma pasta com arquivos e subpastas dentro 262- Obter/Definir tempo mximo de Double-Click do mouse 263- Fazer que seu Programa s abra atravs de outro seu 264- Usar Assembly com Delphi

265- Verificar se a String uma Data vlida 266- Colocar linhas de diferentes alturas em um DBGrid 267- Ligar/Desligar Caps-Lock 268- Verificar se o Delphi est aberto 269- Configurar Sculo 270- Desabilitar Boto fechar do Form 271- Desabilitar um item do TRradioGroup 272- Envia direto para Impressora em Rede 273- Extrair palavra que est sob a posio 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 usurio mude de pgina no TabbedNotebook 278- Criar janela redonda 279- Detectar finalizao do Windows 280- Exibir ano com 4 Dgitos 281- Alterar Fonte do Hint 282- Mostrar Hint independente para cada clula 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

288- Mudando texto do TEdit no OnChange 289- Posicionando cursor na linha de um Memo ou Richedit 290- Escondendo janelas filhas minimizadas 291- Executando operaes padro de um Ole Container 292- Usando JPG no Delphi 3 293- Calculando feriado da Pscoa 294- Extrair cones de uma DLL ou de um EXE 295- Colocar monitor em estado de reduo de energia 296- Compartilhar Pastas 297- Visualizar imagem em um DBGrid 298- Imprimir com preciso Milimtrica 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 binrios no Registro do Windows 303- Mudar a resoluo do vdeo via programao 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 vlida 308- Fazer pesquisa incremental com DBGrid e Edit 309- Adicionar zeros esquerda de um nmero

310- Limpar um campo tipo data via programao 311- Implementar um campo auto-incremental via programao 312- Obter o endereo IP do Dial-Up 313- Exibir a caixa de dilogo padro de solicitao de senha do banco de dados 314- Obter a verso da biblioteca ComCtl32.DLL (usada na unit ComCtrls do Delphi) 315- Implementar rotinas assembly em Pascal 316- Exibir o dilogo 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 varivel 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 programao, se Local Share do BDE est TRUE 327- Criar um EXE que seja executado apenas atravs de outro EXE criado por mim 328- Resolver "Internal error near: IBCheck" do Interbase 5.1.1 Server no NT 329- Inverter os botes do mouse 330- Obter/definir o tempo mximo do duplo-click do mouse 331- Obter os atributos de um arquivo/diretrio 332- Obter o espao total e livre de um disco

333- Obter o tipo de um drive (removvel, fixo, CD-ROM, unidade de rede, etc) 334- Obter informaes 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) esto 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 dgitos para o ano 340- Imprimir caracteres acentuados diretamente para a impressora 341- Imprimir texto justificado com formatao na impressora Epson LX-300 342- Formatar um disquete atravs de um programa Delphi 343- Alterar (e restaurar) o tamanho da pgina na impressora 344- Reproduzir um arquivo de som WAV sem o TMediaPlayer 345- Obter o nome do usurio e da empresa informado durante a instalao do Windows 346- Mostrar uma barra de progresso enquanto copia arquivos 347- Copiar arquivos usando o Shell do Windows 348- Descobrir o cdigo ASCII de uma tecla 349- Evitar que seu programa aparea na barra de tarefas 350- Usar eventos de som do Windows 351- Mudar a coluna ativa em um DBGrid via programao 352- Fechar o Windows a partir do seu programa 353- Carregar um cursor animado (.ani) 354- Enviar um arquivo para a lixeira

355- Obter o nmero do registro atual 356- Trabalhar com Filter de forma mais prtica 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 vrias linhas 361- Reproduzir um vdeo AVI em um Form 362- Separar (filtrar) caracteres de uma string 363- Colocar zeros esquerda de nmeros 364- Copiar arquivos usando curingas (*.*) 365- Copiar arquivos 366- Trabalhar com cores no formato string 367- Verificar se determinado programa est em execuo (Word, Delphi, etc) 368- Excluir arquivos usando curingas (*.*) 369- Gerar uma tabela no Word atravs do Delphi 370- Obter a quantidade de registros total e visvel 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 relao ao Desktop do Windows 374- Saber a resoluo de tela atual 375- Verificar se uma unidade de disco (disk-drive) est preparada 376- Salvar/restaurar o tamanho e posio de Form's

377- Definir a quantidade de registros a ser impressa em uma pgina do QuickReport 378- Onde encontrar tutoriais sobre construo 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 regio de movimentao 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 proteo de tela durante seu programa 385- Fazer a barra de ttulo 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 atravs do programa 392- ENTER em vez de TAB no formulrio, no DBGrid e no StringGrid 393- Simular a vrgula atravs do ponto do teclado numrico 394- Paralizar um programa durante n segundos 395- Criar uma tabela (DB, DBF) atravs do seu programa 396- Verificar se um diretrio existe 397- Verificar se um arquivo existe 398- Criar um Alias temporrio atravs do seu programa

399- Criar um Alias atravs do seu programa 400- Detectando a sada 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 ms 406- Verificar se o nmero 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 ms 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 Aplicao a uma extenso 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 Carto de Crdito 421- Validando Ttulo de Eleitor

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- Ttulos 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 ocorrncias de um caractere em uma string 433- Aprendendo a usar o TSplitter 434- Implementando a Funo SubString 435- Criando ToolTips no Estilo Balo 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

444- Modificando os cones do DbNavigator 445- OnGetEditMask, OnGetEditText e OnSetEditText do TStringGrid 446- Gerar uma tabela no Word atravs 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/diretrio. 450- Obtendo o tipo de um drive (removvel, 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 dgitos para o ano. 453- Alterando/Restaurando o tamanho da pgina na impressora. 454- Copiando arquivos usando o Shell do Windows. 455. Descobrindo o cdigo ASCII de uma tecla. 456- Mudando a coluna ativa em um DBGrid via programao. 457- Como trabalhar com Filter de forma mais prtica? 458- Cores no formato string. 459- Como executar um "COMMIT" no Delphi? 460- Posicionando Form's em relao 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 atravs do programa. 464- Registrando o .NET FrameWork para o IIS 465- Verificando se usurio logado um administrador. 466- Abrir um arquivo XLS protegido por senha

467- Substituindo um arquivo INI por um documento XML. 468- Instalando o Pacote RxLib 469- Como no parar a aplicao durante um processo longo? 470- Desativando o menu de contexto padro (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- Verso do .EXE 477- Verificar qual o cdigo 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..." padro do Windows 483- Utilizando TList e Record como Array 484- Uso do TAG 485- Uso de um vetor dinmico (Pascal) 486- Utilizando Arquivo Help em um sistema 487- Usando um InputQuery 488- Usando Locate em campo no indexado

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 no 497- Testa se a sigla do estado vlido 498- Tempo do Hint 499- Tarja lateral (parecido com o Menu iniciar do Windows) 500- Usando SQL para totalizaes 501- Serial em rede 502- Senha universal p/ tabelas PARADOX 503- Testa se a String uma url ou no. 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 extenso de um arquivo 511- Usando um For Select dentro da StoredProcedure no FireBird/Interbase

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 Mn e Mx de um formulrio 518- Potncia 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 parmetro que foi executado com a aplicao. 525- OnClick do DbGrid 526- Nmero para telefone 527- Limpar um campo tipo data via programao 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 execuo

534- Arquivos armazenado num blop 535- Imprimir um TMemo 536- Exibir a caixa de dilogo de solicitao de senha 537- cones do ListView 538- Hints do DbNavigator 539- Habilitar o "Autorun" para CD-Rom 540- Gerar SQL 541- Gerar letras aleatrias 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 posio do mouse 549- Extrair ano, ms ou dia via SQL 550- Exemplo de utilizao ADO 551- Exemplo de como manipular a Porta Serial 552- Executar um mdulo CPL (Painel de Controle) 553- Executar sem o form principal 554- Executar LogOFF 555- Criar um EXE que seja executado apenas atravs de outro EXE criado por mim 556- Executando um .LNK

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- Configurao de Rede Windows 95/98 com Delphi 573- Compilar projeto corretamente 574- Como usar a clusula 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

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 inicializao 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 relatrio 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 formatao 595- Como tocar sons no auto-falante interno do PC 596- Informaes sobre uma impressora 597- Autoocultar a barra de tarefas 598- Ativar a proteo de tela do windows 599- Alterar o cone do boto iniciar do windows 600- Simular um CharCase no dbgrid 601- Simular o pressionamento de uma combinao de teclas

602- Bloqueio de palavras 603- Usando funes externas (de dlls) 604- Exclusividade para o programa 605- Modificando configuraes da impressora entre as pginas 606- Evitando o erro key violation 607- Conferindo se o processador da mquina 386, 486 ou Pentium 608- Desligar/ligar monitor, 486 ou pentium 609- Colocar uma progressbar numa statusbar 610- Cdigo usados pelas impressoaras HP 611- Como criar um contador de pgina para um relatrio 612- Marcando um pedao do cdigo 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 disponveis para o BDE 617- Detectando mudanas de hardware PlugnPlay 618- Usando o adobe acrobat de dentro de sua aplicao 619- Verificar o dgito do cdigo ean13 620- Como saber se existe um componente no seu form 621- Function trim(j:string):string; export; 622- Calcular quantos controles esto no form 623- Implementar rotinas assembly em pascal

624- Funes Aritmticas 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 pginas 633- Data por extenso no quickreport 634- Indexando um vetor 635- Como evitar efeito de maximizao 636- Ordenando um DBGrid clicando no ttulo da coluna (usando Query) 637- Retorna uma String em nmero definido (Replicate) 638- Cancelando a exibio do Form 639- Apagar arquivos via MS-DOS 640- Apagar um subdiretrio 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 contedo de um TstringList 645- Compara dois arquivos textos 646- Como implementar a utilizao das teclas Ctrl-A para selecionar todo o texto de

um componente TRichEdit ou TMemo 647- Como tabular um ListBox 648- Convertendo nomes longos para nomes curtos 649- Copiando arquivos de diretrio para diretrio 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 direo 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 diretrio 662- Deletando um Diretrio 663- Criar sub-diretrio no diretrio do Aplicativo 664- Transformando cone (*.ico) em bitmap (*.bmp) 665- Sobre arquivos de Inicializao (.ini) 666- Como fazer funes de rolagem num TForm usando comandos de teclado? 667- Encriptar/Desencriptar arquivos 668- Exibindo ou compararando data de arquivos

669- Retornar a verso do projeto que esta sendo desenvolvido 670- Como fazer para imprimir o rodap s na ltima pgina. Usando quickreport 671- Listar Arquivos de Um Diretrio 672- Localizar arquivos do Windows 673- Liga o Boto (x) do form 674- Nomes dos arquivos que esto sendo executados 675- Retorna quantos caracteres tem um Edit especificado 676- Desabilitar e habilitar o boto 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 restaurao 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 criao de um diretrio 683- Tamanho de um Diretorio 684- Largura do display do campo de um dbgrid igual ao seu prprio tamanho na tabela 685- Como centralizar o formulrio na rea de trabalho 686- Verificar tipo de arquivo 687- Alterando o NetDir via programao 688- Como fazer para tudo o que for digitado aparecer em maisculo 689- Backup & Restaurao 690- Cdigos de Erro do BDE

691- Digitando uma string (senha) e devolvendo essa string equivalente ao valor hexadecimal 692- Checa se o Smbolo da UF vlido 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 prxima inicializao do windows 696- Alterando a configurao 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 Diretrios 700- Corrigir Erros de campo AutoIncremento 701- Como posicionar os dados a direita de uma campo edit 702- Includo 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 dilogo personalizada de solicitao de senha do banco dados 707- Exibindo corretamente o contedo dos campos boolean 708- Como formatar CEP 709- Retorna o tipo de conexo com a Internet 710- Foto no InterBase 711- Como criar um formulrio no formato oval 712- Como desabilitar a tela de abertura do Delphi

713- Listando os campos da tabela num Memo 714- Lock de Registro 715- Rolagem automtica em ListBox 716- Utilizando a funo StrtoIntDef 717- Obtendo a verso da tabela 718- Obtendo a verso e outras informaes 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 genrica para tratamento de erros na aplicao BDE 725- Insere uma mscara em um valor numrico 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 alteraes feitas no DBGrid em tempo de execuo 731- Limpar o conteudo de um LookupComboBox 732- Cria qualquer controle em tempo de execuo (button, label, stringlist, memo ...) 733- Converter DBGrig em Html 734- Como desabilitar o acesso ao windows

735- Desenhar Um cone (bitmap) Em Clulas do Dbgrid 736- Mudar as imagens do DbNavigator 737- Como retornar 2(dois) valores em uma funo 738- Retorna o total de memria do computador 739- Removendo a barra de rolagem vertical do DBGrid 740- Simulando Checkbox em Dbgrid 741- Executvel com Parmetros 742- Teclas de funes no Dbgrid 743- Gravar um arquivo .Avi ou .Wav dentro de um arquivo Paradox 744- Como formatar data para exibio por extenso 745- Como saber quantos dias tem no ms 746- Como imprimir um form 747- Diferena entre duas horas 748- Converte hora (formato HH:MM) para minutos 749- Como ajustar seu formulrio de acordo com a resoluo de vdeo 750- Converte segundos em horas digital 751- Como criar um link para envio de e-mails sem manipular API, e sempre executando o programa padro para envio de e-mails 752- Obtendo a menor data vlida 753- Nmero de finais de semana no ano corrente 754- Retornando em um edit, o caminho do arquivo selecionado 755- Sobre o Dblookupcombobox

756- Como desabilitar um RadioButton em um RadioGroup 757- Verifica se uma data informada cai em um final de semana 758- Validar datas 759- Funo que envia e-mail pelo Delphi, anexando mais de um arquivo 760- Capturar a tela do computador e enviar via rede 761- Deletar um diretrio 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 representao binria de um Character 766- Retornando a linha e a coluna atual de um Tmemo 767- Como identificar se o Interbase est ativo ou no 768- Como retornar a verso do Word 769- Selecionando os cadastros do ms digitado- SQL 770- Mudando as cores das linhas de um ListBox 771- Ocultando janelas MDI filhas minimizadas 772- Eliminando a movimentao de janels MDI maximizadas 773- Exibindo ProgressBar enquanto copia um arquivo 774- Imprimindo um bitmap da rea de tranferncia 775- Usando OnGetText e OnSetText 776- Mude o separador de casas decimais ('.' e ',') 777- Como fazer para no repetir dados numa listbox 778- Enviando comando de rolagem vertical para um TMemo

779- Parmetros em tempo de execuo para a Query 780- Transformando horas em minutos 781- Como extrair o ms de um campo data usando comando SQL 782- Mostrando um formulrio Modal usando Show 783- Como retornar o nome das Units de um projeto em Run-Time (RTTI) 784- Descobrindo o nmero de linhas de um arquivo TXT 785- Como filtrar registros com o QR 786- Convertendo String para Integer, tratando excesses quando a string no for vlida 787- Definindo uma borda para Memos 788- Criptografando tabelas Paradox 789- Colocando uma figura de fundo em um Memo ou DbMemo 790- Executando procedure/mtodo genricamente 791- Pedindo confirmao para fechar um form 792- Sorteando nmeros com a funo Random 793- Permite que seu DBF ignore o ndice MDX e recrie-o 794- Remove caracteres de uma string deixando apenas nmeros 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 genricamente 800- Como simular a vrgula atravs do ponto do teclado numrico?

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 aplicao 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 cdigo-fonte de stored procedure (Interbase/FireBird) 822- Obter a data do servidor (Interbase) 823- Alterar parcialmente o contedo de uma Query

824- Arredondamento financeiro 825- Lendo os campos da chave-primria (Interbase/FireBird) 826- Obter a clula 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 execuo no Interbase 833- Mostrar bitmap progressivamente 834- Limpar todas as clulas 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 formulrio vibrar (como ocorre no MSN Messenger) 845- Pack em DBF 846- Comandos para Threads

847- Colocar os bitmaps na dll 848- Apagar senha da BIOS 849- Mostrando contedo de um campo memo 850- Formulrio 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 posio certa do formulrio (milmetro) 855- Selecionando todos os registros do DBGrid 856- Relao de Funes 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 dilogo 860- Executando Sons Atravs 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 boto barra de ferramentas do IE 866- Como fazer um DateTimePicker com o display vazio 867- Hints para Itens de Menu 868- Mudando o endereo IP em runtime

869- Mudando o Tamanho de Arquivos JPEG x Qualidade 870- Como exibir linhas longas em um ListBox sem a utilizao 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 contedo de um TRichEdit 875- Mostrando arquivos GIF 876- Criptografando Imagens com o Delphi 877- Formatando tags HTML com o Delphi 878- Busca Rpida em um ListBox 879- Funo DirectoryExists 880- Criando Labels em 3D 881- Funo 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 padro do Windows 885- Como insere uma mscara de valores $ em um valor integer 886- Ocultando uma coluna em um DBGrid 887- Fazendo pesquisa incremental apenas com DBGrid 888- Como apresentar o nmero da linha e coluna em um DBGrid 889- Testa se o arquivo possui caracteres invlidos em seu nome 890- Como usar os arquivos QRP criados com QuickReport

891- Retornando o Path da aplicao no Intraweb 892- Verificando a existncia de uma tabela em um banco de dados MS-Access 893- Como converter um texto acentuado no DOS para Windows 894- Implementando mtodo UpdatesPending em objetos ADODataSet 895- Pegando servidor smtp do Outlook 896- Como apagar vrios 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 relatrio criado no MS Access pelo Delphi 900- Exportando TImage no formato WMF

Inicio da pagina

Dica numero : 1procedure 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 boto} else ShowWindow(buttonhandle, SW_HIDE); {esconde o boto} end; Inicio da pagina

Dica numero : 2

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], nil); If EstadoBarra=True Then 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 : 3uses 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 : 4Adicione a seguinte declarao na seo private do Form: procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest; procedure TForm1.WMNCHitTest(var M: TWMNCHitTest); begin inherited; { ativa a herana 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 cdigo para suas necessidades. Eis os possveis valores para o Result: HTBORDER - Borda da janela que no tem a borda de tamanho HTBOTTOM - Borda horizontal inferior da janela HTBOTTOMLEFT - Canto inferior esquerdo da janela

HTBOTTOMRIGHT - Canto inferior direito da janela HTCAPTION - Barra de Ttulo(Caption) HTCLIENT - rea cliente HTERROR - igual ao HTNOWHERE, a diferena que produz um beep indicando erro HTGROWBOX - Caixa de tamanho (igual ao HTSIZE) HTHSCROLL - Barra de rolagem horizontal HTLEFT - Borda esquerda da janela HTMENU - Em um menu HTNOWHERE - Plano de fundo da janela ou linha de diviso entre janelas HTREDUCE - Boto minimizar HTRIGHT - Borda direita da janela HTSIZE - Caixa de tamanho (igual ao HTGROWBOX) HTSYSMENU - Boto 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 - Boto maximizar Inicio da pagina

Dica numero : 5procedure 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 : 6var H : HWnd; begin H := FindWindow(Nil,'Project1'); if H 0 then ShowWindow(H,SW_HIDE); end; Inicio da pagina

Dica numero : 7

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 : 8messageBeep(0); Inicio da pagina

Dica numero : 9NumSec 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 o arquivo RS_RUN.INI (no diretrio do Windows); // Na seo [ReportSmith] inclua a linha seguinte: ShowAboutBox=0

// Na seo [RS_RunTime] inclua a linha seguinte: ShowAboutBox=0 // No se esquea de distribuir com o seu aplicativo o referido arquivo INI. Inicio da pagina

Dica numero : 11Function 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 : 12procedure 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 : 13ExtractFilePath( Application.ExeName ) Inicio da pagina

Dica numero : 1414- Interceptar as teclas de funo (F1, F2, F3...) Primeiro, coloque a propriedade KeyPreview do formulrio como TRUE. Depois, insira este cdigo no evento OnKeyDown do formulrio: procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F5 then showMessage('I pressed the F5 key'); end;

Voc tambm pode usar as variveis VK_F1 at VK_F12 referentes as outras teclas de funo. Inicio da pagina

Dica numero : 15Quando clicamos sobre o boto de deleo no DBNavigator (o do sinal de menos) surge uma box com a mensagem "Delete Record?" com botes Ok e Cancel. Para fazer aparecer a mensagem em portugus 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 : 16No relatrio, criar a procedure SHOWPREVIEW contendo: Procedure Showpreview;

begin preview.showmodal; end; Onde preview o nome do form criado para preview. No esquecer de incluir o nome da procedure na clusula uses. Aps isso, deve-se incluir no evento CREATE do formulario principal ou do relatrio o 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 formulrio criado, chamado 'preview'. Inicio da pagina

Dica numero : 17Se 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 : 18Insira este cdigo em um evento OnKeyPress de um controle de edio: 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

Dica numero : 19Uses 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 : 20Crie uma vriavel do tipo String e insira a seguinte linha no evento ou funo desejada do formulrio:

ExtractFilePath(Application.Exename); Retorna-r o path atual do arquivo .EXE do seu programa. Inicio da pagina

Dica numero : 21Quando 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, ento 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

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

Dica numero : 23Function 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 : 24uses ShellAPI; Function DeleteFileWithUndo(sFileName : string ) : boolean;

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 : 25const cnCursorID1 = 1; begin Screen.Cursors[ cnCursorID1 ] := LoadCursorFromFile('c:\win95\cursors\lapis.ani' ); Cursor := cnCursorID1; end; PS: O arquivo LAPIS.ANI dever existir no diretrio apontado. Inicio da pagina

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

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

Dica numero : 27procedure 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 : 28procedure TForm1.Button1Click(Sender: TObject); var begin with Form1.Canvas do begin Font.Name := 'Arial'; 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!');

end; end; Inicio da pagina

Dica numero : 29Para extrair cones de um executvel, deve-se usar a funo da API Extraction. Ela usa 3 parmetros: Instance - Instncia da aplicao FileName - Nome do executvel. Deve ser um PChar NumIcon - Nmero do cone a ser recuperado. Se for Word(-1), a funo retorna a quantidade de cones do executvel. Coloque ShellAPI em uses no comeo 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 : 30Para alinhar itens do menu principal direita, deve-se utilizar o seguinte cdigo: {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;

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

Dica numero : 311 Declare o procedure na seo PUBLIC da unit. procedure JumpTo(const aAdress: String); 2 Coloque a clusula ShellAPI na uses no incio 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 : 32procedure 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

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 : 33procedure 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 : 34Tudo 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 cdigo: 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]);

end; Utilize o Help do TSession e consulte seus mtodos para ver por exemplo como capturar o diretrio ou caminho de um Alias com o mtodo '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 : 36Veja abaixo alguns cdigos 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 = 027/040/115/054/072 CPI8 = 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

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 (writecntreadcnt); 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

Dica numero : 38ComboBox1.DroppedDown := True; Inicio da pagina

Dica numero : 39A 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 : 40IncMonth(Data, 1); No exemplo, a varivel Data do tipo TDateTime. Inicio da pagina

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

if DriveNumero >= ord('a') then dec(DriveNumero,$20); EMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(DriveNumero-$40) = -1 then Result := true else 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('No tem Disco no Drive A:'); end; end. Inicio da pagina

Dica numero : 42Para acessar as variveis do ambiente DOS, deve-se usar a funo da API GetDosEnvironment. Ela retorna um PChar que pode ser avaliado. Inicio da pagina

Dica numero : 43Quando voc executa um programa DOS no Windows95, sua janela permanece aberta at ser fechada pelo usurio. Para executar um programa DOS que fecha sua janela aps a execuo, deve ser especificado "command.com /c programa" na linha de comando. Usando a funo da API WinExec para executar um programa chamado proddos.exe, a chamada deve ser: WinExec('c:\command.com /c progdos.exe', sw_ShowNormal);

Se o programa deve ser executado sem que seja visualizado pelo usurio, o segundo parmetro deve ser sw_Hide. Deve ser especificada a extenso .com, seno o programa no ser executado. Inicio da pagina

Dica numero : 44No Microsoft Windows, existe uma tabela do sistema chamada atom table. Esta tabela armezena strings com seus correspondentes identificadores. Existem vrias funes da API do windows, chamadas de atom functions, que permitem que uma aplicao insira, apague, procure por uma determinada atom string, etc.. O cdigo abaixo garante que somente uma instncia do executvel de sua aplicao estar carregado em memria. O form1 seria o form principal da aplicao: 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 convenincia} if GlobalFindAtom(MINHA STRING') = 0 then {zero significa no encontrar} atom := GlobalAddAtom(MINHA STRING) else begin {Se o programa j estiver rodando, ento mostrar a mensagem e parar} MessageDlg(A aplicao j encontra-se em execuo!!', mtWarning, [mbOK], 0); Halt; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin {Remove o item da tabela, de modo que a aplicao possa ser executada novamente} GlobalDeleteAtom(atom); end; Inicio da pagina

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

Dica numero : 46No Evento OnKeyPress de um Edit: if Key = Chr(VK_RETURN) then Perform(WM_NEXTDLGCTL,0,0); Inicio da pagina

Dica numero : 47Se 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 : 48Paradox: Session.AddStandardAlias('SeuAlias', edtPath.text, 'Paradox'); Session.SaveConfigFile; Inicio da pagina

Dica numero : 49var 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 : 50Form1:=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 : 51function 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);

encrypt:=dummy; end; Inicio da pagina

Dica numero : 52function TForm1.StrReverse(MyString : string) : String; var i: integer; HelpString: string; begin HelpString := ''; for i := 1 to Length(MyString) do HelpString := 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

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; end; Inicio da pagina

Dica numero : 55const 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 := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8)); StartKey := (Byte(Result[I]) + StartKey) * MultKey + 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));

StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey; end; end; Inicio da pagina

Dica numero : 56Para tratar erros de forma genrica, em todo o seu programa, insira no mtodo ON CREATE do formulrio principal a linha: Application.OnException:=RotinaGeral; RotinaGeral uma procedure na qual dever constar o cdigo para verificar e enviar as mensagens de erro do seu sistema. Inicio da pagina

Dica numero : 57Muitas vezes torna-se necessrio, ou at mesmo, imprescindvel que voc envie informaes diretamente para a impressora, uma vez que a utilizao da impresso tpica do Windows um pouco demorada e o uso do driver Genrico/Somente Texto no muito confivel. Uma boa soluo para enviar informaes diretamente para a impressora usar o seguinte cdigo: 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 possvel, inclusive, utilizar os cdigos de configurao da impressora. Para a impressora padro Epson, por exemplo, voc poderia utilizar algo assim:

Write(Imp, #27#69 + 'Teste' + #27#70); { impresso em negrito } Write(Imp, #15 + 'Teste' + #18); { impresso no modo condensado } Write(Imp, #12); { salto de pgina } Inicio da pagina

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

Algumas opes, principalmente em impressoras matriciais, so obtidas atravs do envio dos chamados "cdigos de escape" para a impressora (por exemplo, alterar espaamento entre as linhas (#45), tipo de fonte (#18, #23), etc). Em verses 16-bit do Windows, isso no era complicado, mas agora, nas verses 32-bit, o acesso direto ao hardware no mais possvel. Portanto, para enviarmos caracteres diretamente a impressora, devemos utilizar o "escape" chamado "PASSTHROUGH" do Windows e enviarmos a informao desejada diretamente. Na documentao do Win32 SDK este escape dado como obsoleto, mas enquanto utilizarmos impressoras matriciais que necessitem de "cdigos escape" para certas funcionalidades, ele ser necessrio. Ao utilizar impressoras Postscript tenha cuidado, pois nem sempre esta tcnica ir funcionar. Em impressoras matriciais, voc pode enviar qualquer tipo de caracteres que achar necessrio. Abaixo segue um cdigo 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;

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 funo "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; { Informao qualquer a enviar diretamente para a impressora } strFoo := 'Passthrough string'; { Copia da string para a estrutura } StrPCopy(Buff.Buffer, strFoo); { Indicamos o tamanho da informao} 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

Dica numero : 59procedure 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 Impresso - Linha 2'); Writeln(F,Teste de impressao - Linha 3'); Writeln(F,#27#18+Teste de Impresso - Linha 4'); Writeln(F,Teste de impressao - Linha 5'); Writeln(F,#12); // Ejeta a pgina CloseFile(F); end; Inicio da pagina

Dica numero : 60No 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 : 61procedure 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);

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

Dica numero : 62Para compactar (remover fisicamente todos registros apagados) de uma tabela Paradox deve-se utilizar o seguinte cdigo: 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 : 63Normalmente o Delphi busca os formatos de data/hora, moeda e formato numrico da Configurao

Internacional do Painel de Controle. Isto pode levar a erros quando avaliando datas, nmeros 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 precedncia sobre a configurao padro. Para uma lista completa das variveis, procure em Currency Formating Variables na ajuda do Delphi. Inicio da pagina

Dica numero : 64Para listas (pegar) todas as janelas abertas, deve-se usar a funo API EnumWindows, que usa uma funo Callback, com dois parmetros, um Handle para a janela e um ponteiro. Voc pode us-la como um cdigo semelhante a este (este lista as janelas abertas, mesmo invisveis, 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

Dica numero : 65Para converter a primeira letra de um Edit para maisculas este cdigo 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 : 66Turn 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 : 67Adicionar clusula Uses, Shellapi. Digitar os seguintes parmetros: Swapmousebutton(true) ; Para voltar ao normal basta mudar para False. Inicio da pagina

Dica numero : 68Primeiro deve-se adicionar clusula 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 : 69Arquivos Paradox podem ser compartilhados em rede. Para que isto ocorra devemos:

Adicionar o Database Engine Configuration (BDE Config); Selecionar a pgina Drivers; Selecionar o driver PARADOX e alterar o parmetro NET DIR para o local onde sero gravados os arquivos de controle para compartilhamento. Por exemplo, "G:\MEUAPLIC", onde G corresponde ao drive de rede e MEUAPLIC, o diretrio onde est o aplicativo (executvel); Depois selecionar a pgina System; Alterar o parmetro LOCAL SHARE para TRUE. Aps isto o BDE controlar o compartilhamento de arquivos Paradox em rede. Inicio da pagina

Dica numero : 70Para fazer pesquisa incremental numa tabela usando um EDIT, deve-se colocar o seguinte cdigo em seu evento OnChange: procedure TForm1.Edit1Change(Sender: TObject); begin

Width Edit1 do if Text '' then Table1.FindNearest([Text]); end; Inicio da pagina

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

Veja abaixo como ficar o cdigo 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. No esquecer de mudar para TRUE a propriedade ShowHint. Inicio da pagina

Dica numero : 72Esta 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

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 : 73Para mostrar as resolues de vdeo disponveis, deve-se usar a funo da API EnumDisplaySettings: ela pega todos os modos de vdeo disponveis. Para alterar os modos, deve-se usar a funo ChangeDisplaySettings, que muda a resoluo de vdeo e quantidade de cores. Inicio da pagina

Dica numero : 74unit sobreManager; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls;

type TfrmSobreManager = class(TForm) btnOK: TButton; ProductName: TLabel; Version: TLabel; Label1: TLabel; Label2: 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 INFORMAES do SISTEMA OPERACIONAL (FaC) procedure TfrmSobreManager.FormCreate(Sender: TObject); var verInfo : TOsVersionInfo; str : String; I : Word; begin verInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if GetVersionEx(verInfo) then begin stOSVersao.Caption := 'Verso : '+ IntToStr(verInfo.dwMajorVersion) + IntToStr(verInfo.dwMinorVersion); stOSBuilder.Caption := 'Compilao : '+IntToStr(verInfo.dwBuildNumber); str := 'Sistema Operacional : '; case verInfo.dwPlatformId of VER_PLATFORM_WIN32s : stOS.Caption := str +'Windows 95'; VER_PLATFORM_WIN32_WINDOWS : stOS.Caption := str +'Windows 95 Osr2 / 98';

VER_PLATFORM_WIN32_NT : stOS.Caption := str +'Windows NT'; end; str := ''; for I := 0 to 127 do str := str + verInfo.szCSDVersion[I]; stOSService.Caption := 'Informaes Adicionais : '+ str; end end; end. Inicio da pagina

Dica numero : 75Existe na API do BDE uma funcao chamada DbiGetNetUserName, que retorna o nome do usurio 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 : 76Crie um Alias para o seu banco da dados(Fizemos com um banco do Interbase). Adicione o seguinte cdigo ao seu programa(Neste caso o cdigo 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);

For i:= 1 To MyStringList.Count-1 do ListBox1.Items.Add(MyStringList.Strings[i]); finally MyStringList.Free; end; end; O mtodo GetTableNames trabalha com cinco parmetros: 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 smbolos(Wildcards) como por exemplo '*'. 3-Item do tipo Boolean=Para pesquisas em Paradox e dBASE, defina True para incluir a extenso 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 tambm o nome das tabelas de sistema as quais contm a estrutura dos dados. Defina False para tabelas Paradox e dBASE. 5-Item do tipo TStringList=Nome do StringList onde sero guardados os nomes das tabelas. Inicio da pagina

Dica numero : 77Caracter Definies ! Faz com que a digitao da mscara fique parada no primeiro caracter, fazendo com que os caracteres digitados que se movam. Ex: !;0;_ > Todos os caracteres digitados sero convertidos para maisculas. Ex: >aaa;0;_ < Todos os caracteres digitados sero convertidos para minsculas. Ex: Anula o uso dos caractes > e aaaaaa;0;_ \ Utilizado para marcar determinado caracter no especial como fixo. Ex: !\(999\)0000000;0;_ L Exige caracteres alfabticos obrigatrios para a posio, do tipo A-Z, a-z. Ex: LLL;1;_ l Somente caracteres alfabticos para a posio, mas no-obrigatrios, do tipo A-Z, a-z. Ex: lll;1;_ A Exige caracteres alfanumricos obrigatrios para a posio, do tipo A-Z, a-z, 0-9. Ex: AAA;1;_ a Somente caracteres alfanumricos para a posio, mas no-obrigatrios, do tipo A-Z, a-z, 0-9. Ex: aaa;1;_

C Requer um caracter obrigatrio para a posio. Ex: CCC;1;_ c Permite o uso de qualquer caracter para a posio, limitando apenas o nmero de caracteres. Ex: ccc;1;_ 0 Exige caracteres numricos obrigatrios para a posio, do tipo 0-9. Ex: 000;1;_ 9 Somente caracteres numricos para a posio, no-obrigatrios, do tipo 0-9. Ex: 999;1;_ # Somente caracteres numricos para a posio e o uso dos sinais de - ou +, noobrigatrios. Ex: ###;1;_ : Utilizado como separador de horas, minutos e segundos. / Utilizado como separador de dia, ms e ano. Inicio da pagina

Dica numero : 78Para traduzir algumas as mensagens do Delphi que aparecem nos botes e nas caixas de avisos da funo 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 esto gravados em C:\DELPHI2\SOURCE\VCL. Os arquivos *.RC so arquivos "s texto", e contm diversas mensagens utilizadas nos programas compilados no Delphi. O exemplo que se segue realiza alteraes nos arquivos CONSTS.RC e DBCONSTS.RC. A alterao de outros arquivos "RC" pode ser feita de modo similar. Para maiores detalhes, envie-me um e-mail ([email protected]), ou, melhor ainda, consulte o livro "Dominando o Delphi" (edio para o Delphi 1), de Marcos Cant, ed. Makron Books. O assunto "Usando recursos de tabelas de strings" est no captulo 21, pgina 876. No sei se a edio para o Delphi 2 cobre este assunto. a) Faa uma cpia dos arquivos CONSTS.RC e DBCONSTS.RC em um diretrio seguro, para o caso de algo sair errado. b) Pelo mesmo motivo, faa uma cpia dos arquivos CONSTS.RES e DBCONSTS.RES, que esto no diretrio LIB do Delphi. No meu caso, o diretrio destes arquivos C:\DELPHI2\LIB. c) Use o Bloco de Notas para abrir e alterar os arquivos CONSTS.RC e DBCONSTS.RC. (O Edit tambm serviria; entretanto, para acentuao correta no Windows, o Bloco de Notas melhor).

Voc s deve alterar as strings que esto entre aspas. No altere o nome das constantes, que esto no incio 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, "&No" No necessrio alterar todas as mensagens. Se desejar, altere apenas aquelas que voc utiliza em seus sistemas. Lembre-se de salvar as alteraes efetuadas. d) Acione o prompt do DOS, e execute do seguinte modo o compilador de recursos do Delphi 2 (BRC32.EXE), que est no diretrio 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 iro gerar os arquivos CONSTS.RES e DBCONSTS.RES. Copie os dois "*.RES" para o diretrio LIB do DELPHI (no meu caso C:\DELPHI2\LIB) f) Crie uma aplicao no Delphi que utilize a funo MessageDlg, e botes "BitBtn". Ao rodar o seu programa, as mensagens j devem aparecer traduzidas. Inicio da pagina

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

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 : 80Um dos recursos disponibilizados pelo Delphi a customizao das informaes de verso a serem "anexadas" na linkagem. Pouco utilizado, este recurso muito interessante, pois possibilita o cadastro de diversas informaes sobre o arquivo gerado, como: nmero de verso, nome do produto, nome interno do arquivo, nome da empresa, etc. Podemos alterar as informaes na pgina "Version Info", da pgina "Project Options": Ateno com o item "Auto-increment build number": ele s ser incrementado automaticamente quando for executada a opo "Build All" para compilar o projeto. Porm, no existem rotinas "prontas" para obtermos estas informaes. necessrio fazermos chamadas diretamente a API Win32, mais espeficamente, para as funes como a "GetFileVersionInfo" e a "VerQueryValue". Abaixo encontramos uma funo, a "FileVerInfo", que exemplifica o processo de obteno das informaes. Ela ir retornar "True" caso o arquivo informado no parmetro

"FileName" possuir as informaes de verso, e devolver por referncia um "TStringList" contendo as informaes.

//Cdigo 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 funo "VerQueryValue" e conseguimos informaes 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), Return, UINT(Len)) then FileInfo.Add(KeyBr[i] + ': ' + PChar(Return));

end; if VerQueryValue(Buffer,'\',FixedFileInfo, UINT(Len)) then with TVSFixedFileInfo(FixedFileInfo^) do begin Flags := ''; {Efetuamos um bitmask e obtemos os "flags" do arquivo} 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 Padro. Cdigo: ', 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 : begin TypeArq := Concat(TypeArq,'Device driver - Driver ');

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 : TypeArq := Concat(TypeArq,'de Vdeo'); VFT2_DRV_MOUSE : TypeArq := Concat(TypeArq,'de Mouse'); 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

Dica numero : 81procedure 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','Tera','Quarta','Quinta', 'Sexta', 'Sbado'); 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', 'Maro','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 : 82Ajuste a propriedade Style do ComboBox para csOwnerDrawVariable. procedure TForm1.FormCreate(Sender: TObject); var

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 : 83Bookmarks permitem ao programador "memorizar" um determinado local da tabela para que possa retornar mais tarde, muito simples e fcil de usar j que existem apenas trs mtodos que lhe

permitem utilizar este recurso. Para marcar um determinado local em uma tabela necessitamos criar uma nova instancia de TBookmark e executar o mtodo 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 mtodo GotoBookMark() , este mtodo recebe como parmetro o TBookmark recebido como retorno de GetBookMark.}

table1.GotoBookMark(bmLocalImportante); {Aps utilizar o Bookmark para o que desejar importante que a memria utiliza por este recurso seja novamente liberada para o sistema,para executar esta operao utilize o mtodo FreeBookMark.}

table1.FreeBookMark(bmLocalImportante); {Podem ser criados vrios Bookmarks para uma mesma tabela, sendo este numero limitado apenas pela quantidade de memria livre no equipamento.} end; OBS:Mas cuidado com o uso indevido deste recurso, cada instancia de TBookMark reserva uma determinada poro de memria que s ser novamente liberada para ser reutilizada aps a execuo de um FreeBookmark. Se vrios Bookmarks forem criados e no liberados podem comprometer a execuo do programa. Inicio da pagina

Dica numero : 841. insira um Datasource, um DBGrid e dois Table's no form 2. link o Table1 com Datasource1 e DBGrid1

3. defina um banco de dados, uma tabela e ative o Table1 4. defina tambm para o Table2, mas use uma tabela diferente 5. adicione todos os campos do Table1 atravs do Fields Editor 6. mude a propriedade Visble para False do campo do Combobox 7. d um clique com o boto direito do mouse sobre o Fields Editor e escolha New F