|
|
|
Algumas das melhores dicas de delphi 1, 2, 3, 4 e 5 [Dicas 1..20] |
-
A Função
SendMessage.
-
Como fazer o
micro soar um beep?
-
Margem para
RichText e Memo.
-
Como fazer
com que o meu aplicativo ocupe toda a tela ?
-
Desabilita o
botão Fechar da barra de titulo do Formulário.
-
Esconder a
aplicação da barra de tarefas.
-
Fechar um
aplicativo com uma mensagem de erro fatal.
-
Determinar
se o aplicativo está minimizado.
-
Desligando e
ligando a proteção de tela do Windows.
-
Desabilitar
um item em um RadioGroup.
-
Tipos de
MessageDLG.
-
Gera um clone do aplicativo.
-
Criando
cores personalizadas [sistema RGB].
-
Executa uma url com o Browser padrão.
-
Executa um arquivo via programação.
-
Retorna o nome da impressora padrão do Windows.
-
Testa se a barra de tarefas está oculta ou não.
-
Fazer a
barra de título ficar intermitente (piscante)
-
Captura
a tela e salva-a em um Bitmap.
-
Executando
ações padrão de um Ole Container.
|
1)
A Função SendMessage:
A Função SendMessage Envia uma mensagem especificada a janela ou
janelas.
A Função chama uma procedure de janela para a janela especificada e ñ retorna
ate que uma procedure de janela processe a mensagem.
Uma função PostMessage , em contraste,
fixa uma mensagem com uma mensagem enfiada queue.
e retorna imediatamente.
-----------------
Forma geral:
LResult SendMessage( HWND (hWnd), Unit (MSG), WParam (Wparam), Lparam (Lparam));
-----------------
Definição:
HWND (hWnd)
//Manuseia a janela de destino
-----------------
Definição:
Unit (MSG)
//Mensagem a enviar
-----------------
Definição:
WParam (Wparam)
//Primeiro parâmetro de mensagem
-----------------
Definição:
Lparam (Lparam)
//Segundo parâmetro de mensagem
---------------------------------------------------------------------
Ex.: Calcula
a número de linhas de um Memo:
var
numeroLinhas: longint;
begin
numeroLinhas := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart,0);
{Memo1.handle / manuseia a memo1
EM_LINEFROMCHAR / referência abaixo...
Memo1.SelStart / SelStart Determina a posição Corrente do cursor no primeiro
caractere.
0 / Ñ usado, valor Sempre Zero.}
---------------------------------------------------------------------
EM_LINEFROMCHAR: (Numero de linhas)
Uma aplicação envia uma mensagem EM_LINEFROMCHAR para retornar o Índice de linha,
este contem o índice de caracteres especificado, e no controle de múltiplas linhas.
EM_LINEINDEX: (Numero de caracteres por linha)
Uma aplicação envia uma mensagem EM_LINEINDEX para retornar o Índice de linha,
este contem o índice de linhas especificado, e no controle de múltiplas linhas.
[Download Unit] | [Download Projeto]
Volta
ao início
|
2) Como fazer o micro soar um beep? basta chamar a seguinte função:
MessageBeep(0);
MessageBeep(16);
MessageBeep(32);
[Download Unit] | [Download Projeto]
Volta ao
início
|
3)
Margem para RichText e Memo:
Se for um richedit e margens laterais(direita e esquerda) tenta
with RichEdit1 dobegin
Paragraph.FirstIndent; // -> Parágrafo
Paragraph.LeftIndent; // -> margem esquerda
Paragraph.RightIndent; // -> margem direita
end;
ou se for um Memo:
with
Memo1 do
begin
Paragraph.FirstIndent;
// -> Parágrafo
Paragraph.LeftIndent; // -> margem esquerda
Paragraph.RightIndent; // -> margem direita
end;
[Download Unit] | [Download Projeto]
Volta ao início
|
4) Como fazer com que o meu aplicativo ocupe toda a
tela ???
Defina a área do Form para o tamanho da tela, na criação do mesmo.
Exemplo:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Top := 0;
Form1.Left := 0;
Form1.Height := Screen.Height;
Form1.Width := Screen.Width;
end;[Download
Unit] | [Download Projeto]
Volta ao
início
|
5) Desabilita o botão Fechar da barra de titulo do
Formulário :
procedure TForm1.FormCreate(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMenu;
begin
hwndHandle := Self.Handle;
if (hwndHandle <> 0) then
begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;[Download
Unit] | [Download Projeto]
Volta ao
início
|
6) Esconder a aplicação da barra de tarefas:
var H : HWnd;
begin
H := FindWindow(Nil,'Project1'); //Onde Project1
if H <> 0
then
// é o nome do
ShowWindow(H,SW_HIDE); //do aplicativo
end;
//a ser escondido.
[Download Unit] | [Download Projeto]
Volta ao
início
|
7) Fechar um aplicativo com uma mensagem de erro
fatal:
procedure
TForm1.Button1Click(Sender: TObject);
begin
FatalAppExit(0, 'Erro fatal na aplicação.');
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
8) Determinar se o aplicativo está minimizado: Inclua na
seção uses: Windows
if IsIconic(Application.Handle)
then
{ Minimizado }
else
{ Não minimizado }
[Download Unit] | [Download Projeto]
Volta ao
início
|
9) Desligando e ligando a proteção de tela do
Windows:
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE
, 0, nil, 0);{Desliga
a proteção de tela}
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE , 1, nil,
0);
{Desliga
a Proteção de tela}
[Download Unit] | [Download Projeto]
Volta ao início
|
10) Desabilitar um item em um Rádiogroup: TRadioGroup(RadioGroup1.Controls[1]).Enabled:= False;
[Download Unit] | [Download Projeto]
Volta ao
início
|
11) Tipos de MessageDlg: caixa de confirmação com 3 botões:
MessageDlg('Caixa de confirmação com 3 botões', mtConfirmation, mbYesNoCancel, 0);
-----------------------------------------------------------------------
caixa de confirmação com 2 botões:
MessageDlg('Caixa de confirmação com 2 botões', mtConfirmation, mbOkCancel, 0);
-----------------------------------------------------------------------
caixa de confirmação com 3 botões:
MessageDlg('Caixa de confirmação com 3 botões', mtConfirmation, mbAbortRetryIgnore, 0);
-----------------------------------------------------------------------
caixa de confirmação:
MessageDlg('caixa de confirmação simples', mtConfirmation, [mbOk], 0);
-----------------------------------------------------------------------
caixa de perigo com botão de cancelar:
MessageDlg('caixa de warning simples', mtwarning, [mbcancel], 0);
-----------------------------------------------------------------------
caixa de erro com botão de negação:
MessageDlg('caixa de erro simples', mterror, [mbno], 0);
-----------------------------------------------------------------------
caixa de informação com botão de afirmação:
MessageDlg('caixa de informação simples', mtinformation, [mbyes], 0);
-----------------------------------------------------------------------
caixa simples com botão de ajuda:
MessageDlg('caixa simples', mtCustom, [mbhelp], 0);
-----------------------------------------------------------------------
caixa simples com botão de abort:
MessageDlg('caixa simples', mtCustom, [mbabort], 0);
-----------------------------------------------------------------------
caixa simples com botão de ignorar:
MessageDlg('caixa simples', mtcustom, [mbignore], 0);
-----------------------------------------------------------------------
caixa com botão de retry:
MessageDlg('caixa ignorar simples', mtwarning, [mbretry], 0);
-----------------------------------------------------------------------
caixa com botão de All:
MessageDlg('caixa ignorar simples', mtwarning, [mbAll], 0);
-----------------------------------------------------------------------
caixa com botão de NoToAll:
MessageDlg('caixa ignorar simples', mtwarning, [mbNoToAll], 0);
-----------------------------------------------------------------------
caixa com botão de YesToAll:
MessageDlg('caixa ignorar simples', mtwarning, [mbYesToAll], 0);
[Download Unit] | [Download Projeto]
Volta ao
início
|
12) Gera um clone do aplicativo: function
CloneProgram(sExecutableFilePath : string ): string;
var
pi: TProcessInformation;
si: TStartupInfo;
begin
FillMemory( @si, sizeof( si ), 0 );
si.cb := sizeof( si );
CreateProcess(Nil, PChar( sExecutableFilePath ), Nil, Nil,
False, NORMAL_PRIORITY_CLASS,Nil, Nil, si, pi );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
13) Criando cores personalizadas [sistema RGB] :
Coloque um TButton no form e coloque o seguinte código no evento OnClick:
procedure TForm1.Button1Click(Sender: TObject);
var
Vermelho, Verde, Azul: byte;
MinhaCor: TColor;
begin
Vermelho := 0;
Verde := 200;
Azul := 150;
MinhaCor := TColor(RGB(Vermelho, Verde, Azul));
Form1.Color := MinhaCor;
end;
A quantidade de cada cor primária é um número de 0 a 255. Observe que a cor
retornada pela função RGB() está
no formato do Windows (ColorRef), é por isto que fiz a conversão TColor(RGB(...)). [Download Unit] | [Download Projeto]
Volta ao
início
|
14) Executa uma url com o Browser padrão: procedure
ExploreWeb(page:PChar);
//
Requer a ShellApi declarada na cláusula uses da unit
var
Returnvalue : integer;
begin
ReturnValue := ShellExecute(0, 'open', page, nil, nil,SW_SHOWNORMAL);
if ReturnValue <= 32 then
begin
case Returnvalue of
0 : MessageBox(0,'Error: Out of memory','Error',0);
ERROR_FILE_NOT_FOUND: MessageBox(0,'Error: File not found','Error',0);
ERROR_PATH_NOT_FOUND: MessageBox(0,'Error:
Directory not found','Error',0);
ERROR_BAD_FORMAT : MessageBox(0,'Error: Wrong format in EXE','Error',0);
else
MessageBox(0,PChar('Error Nr: '+IntToStr(Returnvalue)+' inShellExecute'),'Error',0)
end;
end;
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
15) Executa um arquivo
via programação: function
FileExec(const aCmdLine: String; aHide, aWait,bWait: Boolean):Boolean;
//
aHide = Se vai ser exibido ou oculto
// aWait = Se o aplicativo será executado em segundo plano
// bWait = Se o Sistema deve esperar este aplicativo ser finalizado para
// prosseguir ou não
var
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb:= SizeOf(TStartupInfo);
dwFlags:= STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
if aHide then
begin
wShowWindow:= SW_HIDE
end
else
begin
wShowWindow:= SW_SHOWNORMAL;
end;
end;
Result := CreateProcess(nil,PChar(aCmdLine), nil, nil,
False,NORMAL_PRIORITY_CLASS,
nil, nil,
StartupInfo, ProcessInfo);
if aWait and Result then
begin
WaitForInputIdle(ProcessInfo.hProcess, INFINITE);
if bWait then
begin
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
end;
end;
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
16) Retorna o nome da impressora
padrão do Windows: //Inclua a Unit Printers na clausula Uses.
function
GetDefaultPrinterName : string;
begin
if(Printer.PrinterIndex > 0)then
begin
Result:=Printer.Printers[Printer.PrinterIndex];
end
else
begin
Result := 'Nenhuma impressora Padrão foi detectada';
end;
end ;
[Download Unit] | [Download Projeto]
Volta ao
início
|
17) Testa se a barra de tarefas
está oculta ou não: function
IsTaskbarAutoHideOn : boolean;
//
requer a unit ShellAPI na clausula uses
var
ABData : TAppBarData;
begin
ABData.cbSize := sizeof(ABData);
Result := (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0;
if
result = True then
Showmessage('Esta
no modo Auto Ocultar .')
else
Showmessage('Não
esta no modo Auto Ocultar.');
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
18) Fazer a barra de título ficar intermitente (piscante):
Inclua na
seção uses: Windows
{ Coloque
um TTimer no Form desejado. Defina a propriedade
Interval do Timer para 1000 (1 segundo). Modifique
o evento OnTimer do Timer conforme abaixo: }
procedure
TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Handle, true);
FlashWindow(Application.Handle, true);
end;
[Download Unit] | [Download Projeto]
Volta ao início
|
19) Captura a tela e salva-a em um
Bitmap: function
CaptureScreenRect( ARect: TRect ):
TBitmap;
//
Exemplo
//Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height)));
var
ScreenDC: HDC;
begin
Result := TBitmap.Create;
with Result, ARect do
begin
Width := Right - Left;
Height := Bottom - Top;
ScreenDC := GetDC( 0 );
try
BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY );
finally
ReleaseDC( 0, ScreenDC );
end;
// Palette := GetSystemPalette;
end;
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
20) Executando ações padrão de um Ole Container: Para executar ações padrão de um Ole
Container (abrir um documento Word ou Excel ou rodar uma apresentação Powerpoint),
pode-se usar este código:
procedure
TForm1.Button1Click(Sender: TObject);
begin
OleContainer1.DoVerb(ovprimary);
end;
[Download Unit] | [Download Projeto]
Volta ao
início
|
Download: |
Para
utilizar os programas e units exemplos é necessário possuir o descompactador
WINZIP 8.0

|
[Home]
| [Dicas 1..20]
| [Dicas 21..40] |
|
|
|