Algumas das melhores dicas de delphi 1, 2, 3, 4 e 5 [Dicas 21..40] |
-
Executando
um programa em DOS e fechando sua janela em seguida.
-
Mudando o
texto de um TEdit no seu evento OnChange.
-
Pegando a
linha e coluna atuais de um Memo.
-
Fazendo a
tecla enter funcionar como Tab.
-
Convertendo
a primeira letra de um EditBox para maiúscula.
-
Alterando o
nome da unidade(label) do DOS.
-
Verificando
a memória.
-
Limitando
um campo memo a um determinado número de linhas.
-
Movimentando
o ponteiro do mouse.
-
Posicionando
o cursor numa linha de um Memo(RichEdit).
-
Validar
datas.
-
Colocar
o cursor no final do TEdit ao receber o foco.
-
Escondendo
e mostrando a barra de tarefas.
-
Definir
o tamanho do papel em TPrinter.
-
Como
rodar aplicativos windows com o delphi.
-
Testa
se a barra de tarefas está oculta ou não.
-
Como
rodar aplicativos windows com o delphi(2ª dica).
-
Tocando
sons Wav.
-
Inserindo
a data e hora atual nas linhas de um Memo.
-
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
|
[Home]
| [Dicas
1..20]
| [Dicas 21..40] |