Contribua
você também com uma dica
Atenção algumas funcionam somente com Delphi 3 ou 4
ESCONDENDO, MOSTRANDO, HABILITANDO E DISABILITANDO O BOTÃO INICIAR DO WINDOWS
var
Rgn : hRgn;
// Escondendo
Rgn := CreateRectRgn(0, 0, 0, 0);
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil),Rgn, true);// Mostrar
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil),0,true);// Desabilitar
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0, 'Button', nil),false);// Habilitar
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil),true);
DETECTAR O NÚMERO DE SÉRIE DO HD
Function SerialNum(FDrive:String) :String;
Var
Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try
GetVolumeInformation(PChar(FDrive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except
Result :='';
end;
end;
ESCREVENDO UM TEXTO NA DIAGONAL
procedure TForm1.Button1Click(Sender: TObject);
var
lf : TLogFont;
tf : TFont;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;
PASSANDO DE TPAINTBOX PARA TIMAGE
Image1.Picture.Bitmap.Canvas.Handle := PaintBox1.Canvas.Handle;
TRADUZINDO MAIS MENSAGENS
Primeiro você tem que traduzir os arquivos .Int do diretório Doc do Delphi, é ele que contêm as mensagens. Depois de traduzir, acrescente um End. no final do arquivo e grave-o como .Pas
Coloque o arquivo no diretório Lib do Delphi e mande recompilar o seu projeto com a opção Build All.
FILTER COM STRINGS MAIS FÁCIL
Se você está habituado a usar este código no filter...
Table1.Filter := 'Field = '''+ Table2Nome.asString + '''';
Tente usar este:
Table1.Filter := 'Field = ' + QuotedStr( Table2Nome.asString );
FAZENDO UNDO EM MEMO
Memo1.Perform(EM_UNDO, 0, 0);
OBTENDO O NÚMERO DO REGISTRO ATUAL
Table1.RecNo;
ENVIANDO UM ARQUIVO PARA A LIXEIRA
uses 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;
DESABILITAR O CTRL+ALT+DEL e ALT+TAB
Var
numero: integer;
begin
SystemParametersInfo(97,Word(true),@numero,0);
end;{ Para habilitar é só chamar a mesma função com Word(false) }
CARREGAR UM CURSOR ANIMADO (*.ANI)
const
cnCursorID1 = 1;
begin
Screen.Cursors[ cnCursorID1 ] :=
LoadCursorFromFile('c:\win95\cursors\cavalo.ani' );
Cursor := cnCursorID1;
end;{ O arquivo CAVALO.ANI deverá existir no diretório apontado }
A FUNÇÃO DELAY DO TURBO PASCAL
procedure TForm1.Delay(msecs:integer);
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;
SAINDO DO WINDOWS
{ 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);
TRANSFORMANDO ÍCONE (*.ICO) EM BITMAP (*.BMP)
var
Pic : TPicture;
TI : TIcon;
begin
TI := TIcon.Create;
TI.Handle := ExtractIcon(HInstance, FileNameBuf, 0);
Pic := TPicture.Create;
Pic.Icon := TI;
Image1.Picture := Pic; {TImage}
BitBtn1.Glyph := TBitmap.Create;
with BitBtn1.Glyph do
begin
width := TI.Width;
Height := TI.Height;
Canvas.Draw(0, 0, Pic.Icon);
end;
end;
TRANSFERINDO O CONTEÚDO DE UM MEMO PARA UM MEMOFIELD.
Var
t: TTable;
Begin
t := TTable.create(self);
with t do
begin
DatabaseName := 'Alias';
TableName := 'Tabela.db';
open;
edit;
insert;
fieldByName('campo').assign(memo1.lines);
post;
close;
end;
end;
USANDO ENTER PARA MUDAR DE CAMPO EM DBGRID
Coloque o seguinte código no evento OnKeyDown do DBGrid:
If (Chr(Key)<>#13) then exit;
If (DBGrid1.SelectedIndex + 1 <> DBGrid1.FieldCount) then
DBGRid1.SelectedIndex := DBGRid1.SelectedIndex + 1;
MUDAR O FOCO DO CAMPO EM UM DBGRID
Modificando o foco de um DBGrid
DBGrid1.SelectedIndex:=2; { Vai para a 3a coluna }
ADQUIRINDO UMA PASTA DO WINCHESTER
Label1.Caption := Directory;
MODIFICANDO A POSIÇÃO DO CURSOR EM UM MEMO
Modificando a posição:
ActiveControl:=Memo1;
MemoCursorTo(Memo1,2,3);Obtendo a Posição:
GetMemoLineCol(Memo1,Linha,Coluna);
EXECUTAR UM PROGRAMA D.O.S. E FECHÁ-LO
WinExec("command.com /c programa.exe",sw_ShowNormal);
DEIXANDO O EXE MENOR E MAIS RÁPIDO
Para deixar o programa executável menor e mais rápido, abra a tela de Options/Project.
Na página Compiler tire todos os "X" e deixe somente nas caixas: Optimization, Aligned Records Fields, Open Parameters, Stric var-strings, Extended Sintax, Open Parameters, Huge Strings, Typed Constants.
CONFIGURANDO A PALETA DE COMPONENTES
Gostaria de modificar a paleta de componentes para que facilite o acesso aos componentes mais usados? É fácil, basta clicar com o botão direito do mouse sobre a paleta e selecionar Properties
Assim é possível até mesmo criar novas pastas para armazenar os componentes.
MODIFICANDO OS DESENHOS DO DBNAVIGATOR
Usando o Image Editor (menu Tools do Delphi) você deverá abrir o arquivo DBCtrls.res que está na subpasta LIB da pasta do Delphi. Altere os bitmaps que aparecem na lista.
Salve, abra o Delphi e seu projeto. Selecione a opção Build All do menu Project. Agora o seu navegador já está com os bitmaps novos. (só funciona em run-time)
USANDO OS EVENTOS DE SOM DO WINDOWS
Evento Som Padrão
MessageBeep(0); { ou Beep; }
Evento Parada Crítica
MessageBeep(16);
Evento Pergunta
MessageBeep(32);
Evento Exclamação
MessageBeep(48);
Evento Asterisco
MessageBeep(64);
TOCANDO SONS *.WAV
Para reproduzir sons no formato WAV em um programa em Delphi é simples, o usuário deverá colocar na clásula Uses o MMSystem. E no corpo do programa o comando:
PlaySound('C:\Windows\Media\Som.wav',1,SND_ASYNC);
COMO FAZER PARA O PROGRAMA FUNCIONAR EM REDE?
Não são necessárias grandes mudanças no Delphi e no projeto para este funcione em rede. No BDE, selecione o drive Paradox, no parametro NET DIR informe o caminho onde está a sua base de dados. Não esqueça que, se estiver usando Alias este também deve ser apontado para o drive da rede onde estão os dados. E por último o parametro LOCAL SHARE tem que estar configurado para TRUE na orelha System.
O QUE SIGNIFICA "KEY VIOLATION"?
Este erro é muito comum, principalmente quando estamos começando a utilizar o bando de dados Paradox do Delphi.
Quando criamos um campo chave (o que vai com um *) em uma tabela significa que este campo será o principal - como um código. ELE NÃO PODE TER DOIS REGISTROS COM VALORES IGUAIS. Quando o programa tenta cadastrar dois registros com valores iguais aparece a mensagem "Key Violation".
Para arrumar o problema basta entrar o database desktop e ao restruturar a tabela re-criar os índices.
COLOCAR FUNÇÕES EM UMA DLL
Edite diretamente no DPR, e depois salve como Funcoes.dpr:
Library Funcoes;
Uses SysUtils,Windows;
{ Uma função multiplica inteiros }
Function Multiplica(V1,V2:Longint):Longint; Export;
Begin
Result:= V1 * V2;
end;
Exports { Torna visivel para os programas }
Multiplica;
Begin
end.
Para usar num programa:
Unit Unit1;
Interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Multiplica(V1,V2:Longint):Longint; External 'funcoes.dll';
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);
begin
Caption:=IntToStr(Multiplica(100,40));
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
COMUNICAÇÃO DDE COM EXCEL VIA COMPONENTE
É um componente para possui muitos métodos para enviar dados, formatar cédulas e criar cálculos no Excel diretamente do Delphi.
O uso é muito fácil.
Para conseguir o componente juntamente com os fontes me peça via email!Muitas pessoas já pediram e gostaram.