
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.
Voltar para a Página Principal