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 21..40]
  1. Executando um programa em DOS e fechando sua janela em seguida.

  2. Mudando o texto de um TEdit no seu evento OnChange.

  3. Pegando a linha e coluna atuais de um Memo.

  4. Fazendo a tecla enter funcionar como Tab.

  5. Convertendo a primeira letra de um EditBox para maiúscula.

  6. Alterando o nome da unidade(label) do DOS.

  7. Verificando a memória.

  8. Limitando um campo memo a um determinado número de linhas.

  9. Movimentando o ponteiro do mouse.

  10. Posicionando o cursor numa linha de um Memo(RichEdit).

  11. Validar datas.

  12. Colocar o cursor no final do TEdit ao receber o foco.

  13. Escondendo e mostrando a barra de tarefas.

  14. Definir o tamanho do papel em TPrinter.

  15. Como rodar aplicativos windows com o delphi.

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

  17. Como rodar aplicativos windows com o delphi(2ª dica).

  18. Tocando sons Wav.

  19. Inserindo a data e hora atual nas linhas de um Memo.

  20. Extrair o ícone de um executável.

 

21) Executando um programa DOS e fechando a sua janela em seguida:

Quando você executa um programa DOS no Windows95, sua janela permanece aberta até ser fechada pelo usuário. Para executar um programa DOS que fecha sua janela após a execução, deve ser especificado "command.com /c programa"na linha de comando. Usando a função da API WinExec para executar um programa chamado progdos.exe, a chamada deve ser:



WinExec('command.com /c progdos.exe',sw_ShowNormal);

Se o programa deve ser executado sem que seja visualizado pelo usuário, o segundo parâmetro deve ser sw_Hide. Deve ser especificada a extensão .com senão o programa não será executado.

 

[Download Unit] | [Download Projeto]

Volta ao início

 

22) Mudando o texto de um TEdit no seu evento Onchange:

Se o texto de um TEdit for mudado no seu evento OnChange, este evento será chamado recursivamente até acabar com o espaço de pilha. Para fazer isso, deve-se setar o evento OnChange para NIL antes de mudar o texto, voltando ao original depois, desta maneira:

procedure Edit1Change(Sender : TObject); 
begin 
Edit1.OnChange := NIL; 
if Edit1.Text = 'Texto' then 
Edit1.Text := 'Novo Texto'; 
Edit1.OnChange := Edit1Change; 
end;

Esta dica também vale para evento OnValidate.

 

[Download Unit] | [Download Projeto]

Volta ao início

 

23) Pegando a linha e coluna atuais de um Memo:

Para pegar a linha e coluna de um memo você deve utilizar o seguinte:

With Memo1 do begin 
Line := Perform(EM_LINEFROMCHAR,SelStart, 0); 
Column := SelStart - Perform(EM_LINEINDEX, Line, 0); 
end;

 

[Download Unit] | [Download Projeto]

 

Volta ao início

 

 

24) Fazendo a tecla enter funcionar como Tab:

Para fazer a tecla Enter funcionar como Tab é um processo de 3 passos

1) Setar a propriedade KeyPreview da Form para True 
2) Setar a propriedade Default de todos os botões da Form para False 
3) Criar um evento OnKeyPress para a Form como este: 


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); 
begin 
if Key = #13 then begin 
Key := #0; 
if (Sender is TDBGrid) then 
TDBGrid(Sender).Perform(WM_KeyDown,VK_Tab,0) 
else 
Perform(Wm_NextDlgCtl,0,0); 
end; 
end; 

[Download Unit] | [Download Projeto]

Volta ao início

 

25) Convertendo a primeira letra de um EditBox para maiúscula :

Para converter a primeira letra de um EditBox para maiúsculas este código 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))); 
SelStart := OldStart; 
OnChange := Edit1Change; 
end; 
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

26) Alterando o nome da unidade (label) do DOS:

{ Da unidade C: } 
SetVolumeLabel('c:\', 'NovoLabel'); 


{ Da unidade atual: } 
SetVolumeLabel(nil, 'NovoLabel');

 

[Download Unit] | [Download Projeto]

Volta ao início

 

27) Verificando a memória :

var
MemoryStatus: TMemoryStatus;
begin
MemoryStatus.dwLength:= sizeof(MemoryStatus);
GlobalMemoryStatus(MemoryStatus);
Label1.Caption := 'Total de memória física : ' + IntToStr(MemoryStatus.dwTotalPhys);
end;

 

[Download Unit] | [Download Projeto]

 

Volta ao início

 

28) Limitando um campo memo a um determinado número de linhas:

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

begin
if ((key = chr(13)) and (Memo1.Lines.Count = 3)) then key:= chr(27);
if Memo1.Lines.Count > 3 then
begin
Memo1.Lines.Delete(3);
key:= chr(0);
end; 

end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

29) Movimenando o ponteiro do mouse:

Para movimentar o ponteiro do mouse sem intervenção do usuário, deve-se usar um TTimer e colocar o seguinte código em seu evento OnTimer: 

procedure TFrm_principal.Timer1Timer(Sender: TObject);
var
pt:tpoint;
begin
getcursorpos(pt);

pt.x := pt.x + 11;
pt.y := pt.y + 1;

if pt.x>=panel_cliente.width-1 then
setcursorpos(0,pt.y);

if pt.y>=panel_cliente.height-1 then
setcursorpos(pt.x,0);
end;  

 

[Download Unit] | [Download Projeto]

Volta ao início

 

30) Posicionando o cursor numa linha de um Memo(RichEdit):

Para posicionar o cursor em uma linha de um Memo ou RichEdit, deve-se utilizar o seguinte:

var
Linha:Integer;
begin
Linha:=10;
With Memo1 do
SelStart := Perform(EM_LINEINDEX, Linha, 0);
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

31) Validar datas:


try
StrToDate(Edit1.Text);
except
on EConvertError do
ShowMessage ('Data Inválida!');
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

32) Colocar o cursor no final do TEdit ao receber o foco:

No evento OnEnter do TEdit coloque:

procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit1.Selstart:= Length(Edit1.text);
end;

 

[Download Unit] | [Download Projeto]


Volta ao início

 

33) Escondendo e mostrando a barra de tarefas:

//Para esconder a barra de tarefas do Windows, usa-se um código

//como esse: 


procedure TForm1.Button1Click(Sender: TObject); 
var 
hTaskBar :Thandle; 
begin 
hTaskBar := FindWindow('Shell_TrayWnd',Nil); 
ShowWindow(hTaskBar,Sw_Hide); 
end; 


//Para mostrar a barra de tarefas do Windows, usa-se este código: 


procedure TForm1.Button2Click(Sender: TObject); 
var 
hTaskBar :Thandle; 
begin 
hTaskBar := FindWindow('Shell_TrayWnd',Nil); 
ShowWindow(hTaskBar,Sw_Normal); 
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

34) Definir o tamanho do papel em TPrinter:

Esta procedure configura o tamanho do papel em Run-Time para ser utilizado com o objeto TPrinter; Esta procedure deve ser chamada antes de aplicar o método Printer.BeginDoc.

procedure SetPrinterPage(Width, Height : LongInt);
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
If hDMode <> 0 then
begin
pDMode := GlobalLock( hDMode );
If pDMode <> nil then
begin
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := Width;
pDMode^.dmPaperLength := Height;
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
GlobalUnlock( hDMode );
end;
end;
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

35) Como rodar aplicativos Windows com o delphi:

Use esta procedure para executar programas externos ao Delphi.
Não esquessa de utilizar a SHELLAPI na USES da Unit.


procedure ExecuteProgram(Nome,Parametros:String);
var comando : Array[0..1024] of Char;
parms : Array[0..1024] of Char;
begin
StrPCopy(Comando,Nome);
StrPCopy(Parms,Parametros);
ShellExecute(0,nil,Comando,Parms,nil,sw_showmaximized);
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

 

36) 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;
end;

 

[Download Unit] | [Download Projeto]

Volta ao início

37) Como rodar aplicativos windows com o delphi(2ª dica):

WinExec('C:\windows\notepad.exe', sw_shownormal);

ou

WinExec('C:\windows\notepad.exe', sw_showmaximized);

ou

WinExec('C:\windows\notepad.exe', sw_showminimized);

 

[Download Unit] | [Download Projeto]

Volta ao início

 

38) Tocando sons Wav:

Para reproduzir sons no formato WAV em um programa em Delphi é simples, o usuário deverá colocar na cláusula Uses o MMSystem. E no corpo do programa o comando:

Exemplo:


SndPlaySound('C:\Windows\Media\Som.wav',SND_SYNC);

ou

SndPlaySound('C:\Windows\Media\Som.wav',SND_ASYNC);

ou

SndPlaySound('C:\Windows\Media\Som.wav',SND_NODEFAULT);

ou

SndPlaySound('C:\Windows\Media\Som.wav',SND_LOOP);

ou

SndPlaySound('C:\Windows\Media\Som.wav',SND_NOSTOP);

SND_SYNC - Executa o som sincronicamente, a função só retorna quando o som terminar.
SND_ASYNC - Executa o som assincronicamente, a função retorna assim que inicia o som.
SND_NODEFAULT - Especifica que se o som não pode ser tocado a função não toca o som padrão.
SND_MEMORY - Use se o som está em um arquivo de recursos.
SNDLOOP - Especifica que o som não deve para de tocar até que outro som seja chamado.
SND_NOSTOP - Faz com que o som não possa ser interrompido por outro, retorna FALSE se isto ocorrer.

 

[Download Unit] | [Download Projeto]

 

Volta ao início

 

39) Inserindo a data e hora atual nas linhas de um Memo:

Deve ser feito no Objeto Timer, Onde sua Propriedade Enabled deve ser posta em FALSE;


Procedure TForm1.Timer1Timer(Sender: TObject);
var
  HoraAtual: TDateTime;
begin
  HoraAtual := Now;
     Form1.Memo1.Lines.Add (DateToStr (HoraAtual));
     Form1.Memo1.Lines.Add (TimeToStr (HoraAtual));
     Timer1.Enabled:=false;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
     timer1.Enabled:=true;
end;

end.

 

[Download Unit] | [Download Projeto]

Volta ao início

 

40) Extrair o ícone de um executável:


Inclua a unit Shellapi na cláusula uses do seu form.

Image1.Picture.Icon.Handle:= ExtractIcon(Handle,PChar('c:\windows\calc.exe'),0);

 

[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 fazer o download do 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