AvengerSoft®

Home

Componentes

Apostilas

Programas

Dicas

Dicas+

Delphi on-line

Links

Faq

Suporte técnico

E-mail

------------

Algumas das melhores dicas de delphi 1, 2, 3, 4 e 5 [Dicas 1..20]
  1. A Função SendMessage.

  2. Como fazer o micro soar um beep?

  3. Margem para RichText e Memo.

  4. Como fazer com que o meu aplicativo ocupe toda a tela ?

  5. Desabilita o botão Fechar da barra de titulo do Formulário.

  6. Esconder a aplicação da barra de tarefas.

  7. Fechar um aplicativo com uma mensagem de erro fatal.

  8. Determinar se o aplicativo está minimizado.

  9. Desligando e ligando a proteção de tela do Windows.

  10. Desabilitar um item em um RadioGroup.

  11. Tipos de MessageDLG.

  12. Gera um clone do aplicativo.

  13. Criando cores personalizadas [sistema RGB].

  14. Executa uma url com o Browser padrão.

  15. Executa um arquivo via programação.

  16. Retorna o nome da impressora padrão do Windows.

  17. Testa se a barra de tarefas está oculta ou não.

  18. Fazer a barra de título ficar intermitente (piscante)

  19. Captura a tela e salva-a em um Bitmap.

  20. 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 do

begin

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  

Clique para baixar o winzip em http://www.winzip.com/getsite.cgi?winzip80.exe

 

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

Resolução Mínima 800x600 (desejável 1024x780)
Última atualização: 04/01/2002
Copyright© AvengerSoft®  todos os direitos reservados