|
Simular pressionamento do Mouse |
{O exemplo abaixo simula o pressionamento da tecla do botão esquerdo do mouse em uma determinada posição
da tela. No exemplo serão utilizados dois botões (Button1 e Button2), ao clicar no Button2 será executado o
onClick do Button1 como se o mouse tivesse clicado sobre ele }
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Button 1 clicked');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Pt : TPoint;
begin
Application.ProcessMessages;
{Obtém o point no centro do Button1}
Pt.x := Button1.Left + (Button1.Width div 2);
Pt.y := Button1.Top + (Button1.Height div 2);
{Converte Pt para as coordenadas da tela }
Pt := ClientToScreen(Pt);
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
{Move o mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
{Simula o pressionamento do botão esquerdo do mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
{ Simula soltando o botão esquerdo do mouse }
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;
|
Caption do Bitbtn com várias linhas |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
R : TRect;
N : Integer;
Buff : array[0..255] of Char;begin
with BitBtn1 do
begin
Caption := 'Várias linhas no caption de um botão';
Glyph.Canvas.Font := Self.Font;
Glyph.Width := Width - 6;
Glyph.Height := Height - 6;
R := Bounds(0, 0, Glyph.Width, 0);
StrPCopy(Buff, Caption);
Caption := '';
DrawText(Glyph.Canvas.Handle, Buff,StrLen(Buff),R,
DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
OffsetRect(R,(Glyph.Width - R.Right) div 2,
(Glyph.Height - R.Bottom) div 2);
DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,
DT_CENTER or DT_WORDBREAK);
end;
end;
end.
|
DBGrid Mesclado |
{ O exemplo abaixo mostra como deixar cada linha do componente DBGrid de uma cor diferente, dando assim um
efeito mesclado. O controle é feito no evento OnDrawColumnCell.}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If odd(Table1.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clGreen;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;
|
Chamar o editor de e-mail padrão |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
shellExecute(Handle,'Open','mailto:fabiano@softfab.cjb.net', nil, nil,sw_shownormal);
end;
|
Enviar relatório do QuickReport para TXT |
{ Utilize o componente QRTextFilter }
procedure TForm1.Button4Click(Sender: TObject);
begin
{ Exemplo 1 }
QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create(
'C:\REPORT.TXT'));
{ Exemplo 2 }
QuickRep1.ExportToFilter(TQRHTMLDocumentFilter.Create(
'C:\REPORT.htm'));
QuickRep1.ExportFilter.Free;
end;
|
Como retornar a cor de um Pixel de uma imagem |
{Para testar o exemplo inclua em um form um componente Image e inclua neste componente Image uma imagem
qualquer. Inclua o código abaixo no evento OnMouseMove.}
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
// Retornar a cor
Caption := ColorToString(Image1.Canvas.Pixels[X,Y]);
{ Retornar o número da cor }
Caption := Caption + ' - '+IntToStr(ColorToRGB(Image1.Canvas.Pixels[X,Y]));
end;
|
Chamando site pelo Browser padrão |
{Para testar o exemplo abaixo inclua no seu form um componente Button e inclua o código abaixo no evento
OnClick do componente Button.}
implementation
uses UrlMon;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
HlinkNavigateString(nil,'http://www.theclub.com.br');
end;
|
Mudar papel de parede do Windows |
{Para testar o exemplo abaixo inclua no seu form um componente Button e no evento OnClick o código abaixo:}
procedure TForm1.Button1Click(Sender: TObject);
begin
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,PChar('C:\windows\Arenito.bmp'),SPIF_SENDWININICHANGE);
end;
|
Fazer proteção de tela |
No arquivo .Dpr coloque a seguinte cláusula {$D SCRNSAVE } depois do uses.
Deixe o Form principal sem borda e sem icone. No OnActivate coloque left e top como 0 e o Windowstate como
wsMaximize.
No OnCreate coloque application.OnMessage para um metodo que controle a desativacao do screen saver.
Coloque também o application.OnIdle para "rodar" o dito protetor...
Também no OnCreate teste a linha de comando para /c ou /s. Estes parametros dizem o que é para fazer (/c
configura).
Compile e renomeie o .exe para .scr, mova para o diretorio do windows e está pronto seu Protetor em Delphi
|
Retornar mês, dia ou ano via SQL do Paradox |
{Na propriedade SQL de um TQuery coloque o seguinte }
Select EXTRACT(Day from data_Nascimento),Nome
from Clientes
where EXTRACT (Month from data_Nascimento) = 5
{Aqui neste exemplo ele vai retornar o dia do aniversário, e o nome dos clientes que fazer aniversário em maio}
|
Criar Alias |
{Inclua na seção uses a Unit DB }
{ se o alias não existir... }
if not Session.IsAlias('MeuAlias') then
begin
{ Adiciona o alias }
Session.AddStandardAlias('MeuAlias', 'C:\DirProg', 'PARADOX');
{ Salva o arquivo de configuração do BDE }
Session.SaveConfigFile;
end;
{ Se você quiser criar um Alias do tipo DBF, basta trocar 'PARADOX' por 'DBASE'}
|
Criar Alias temporário |
{ Inclua na seção uses a unit DB }
{ Enxergar somente configurações da sessão atual }
Session.ConfigMode := cmSession;
{ Adicionar o Alias }
Session.AddStandardAlias('MeuAlias', 'C:\DirProg', 'PARADOX');
|
Verificar se um Arquivo existe |
if FileExists('c:\carta.doc') then
ShowMessage('O arquivo existe')
else
ShowMessage('O arquivo não existe');
|
Verificar se um Diretório existe |
{ Inclua na seção uses a unit FileCtrl }
if DirectoryExists('C:\MEUSDOCS') then
ShowMessage('O diretório existe')
else
ShowMessage('O diretório não existe');
|
Criar tabelas de dados via Programação |
{ Inclua na seção uses as units dbTables, DB }
procedure CriaTabelaClientes;
var
Tabela: TTable;
begin
Tabela := TTable.Create(Application);
try
Tabela.DatabaseName := 'C:\';
{ ou Tabela.DatabaseName := 'NomeAlias'; }
Tabela.TableName := 'Clientes.DB';
Tabela.TableType := ttParadox; { ou ttDBase }
{ Somente Delphi4 }
if Tabela.Exists then { Se a tabela já existe... }
Exit;
{***}
{ Cria a tabela }
Tabela.FieldDefs.Add('Codigo', ftInteger, 0, true);
Tabela.FieldDefs.Add('Nome', ftString, 30, true);
Tabela.FieldDefs.Add('DataNasc', ftDate, 0, false);
Tabela.FieldDefs.Add('RendaMes', ftCurrency, 0, false);
Tabela.FieldDefs.Add('Ativo', ftBoolean, 0, true);
{ etc, etc, etc }
Tabela.CreateTable;
{ Cria os Índices }
Tabela.AddIndex('ICodigo', 'Codigo', [ixPrimary, ixUnique]);
Tabela.AddIndex('INome', 'Nome', [ixCaseInsensitive]);
{ etc, etc, etc }
finally
Tabela.Free;
end;
end;
|
Parar o Programa por um determinado tempo |
{ Pausa por 1 segundo }
Sleep(1000);
{ Pausa por 10 segundos }
Sleep(10000);
|
Passar de campo com a tecla Enter |
{ Mude a propriedade "KeyPreview" do Form para true. }
{ No evento "OnKeyPress" do Form acrescente o código abaixo: }
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
Perform(WM_NEXTDLGCTL, 1, 0);
end;
end;
{ Em StringGrid, escreva o evento OnKeyPress como abaixo: }
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
StringGrid1.Perform(WM_KEYDOWN, VK_TAB, 0);
end;
{ Em DBGrid, escreva o evento OnKeyPress como abaixo: }
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
DBGrid1.Perform(WM_KEYDOWN, VK_TAB, 0);
end;
|
Acertar a Data e a Hora do Sistema |
{ Coloque dois TEdit no form.
Coloque um TButton no form e altere o evento OnClick
deste botão como abaixo:
}
procedure TForm1.Button1Click(Sender: TObject);
var
DataHora: TSystemTime;
Data, Hora: TDateTime;
Ano, Mes, Dia,
H, M, S, Mil: word;
begin
Data := StrToDate(Edit1.Text);
Hora := StrToTime(Edit2.Text);
DecodeDate(Data, Ano, Mes, Dia);
DecodeTime(Hora, H, M, S, Mil);
with DataHora do begin
wYear := Ano;
wMonth := Mes;
wDay := Dia;
wHour := H;
wMinute := M;
wSecond := S;
wMilliseconds := Mil;
end;
SetLocalTime(DataHora);
end;
|
Saber se determinada Fonte está instalada no Sistema |
{ Coloque este código no OnClick de um botão }
with Screen.Fonts do
if IndexOf('Courier New') >= 0 then
ShowMessage('A fonte está instalada.')
else
ShowMessage('A fonte não está instalada.');
|
Saber se a Impressora possui determinada Fonte |
Inclua na seção uses: Printers
{ Coloque este código no OnClick de um botão }
with Printer.Fonts do
if IndexOf('Draft 10cpi') >= 0 then
ShowMessage('A impressora possui a fonte.')
else
ShowMessage('A impressora NÃO possui a fonte.');
|
Adicionar uma Fonte no Windows |
{ Coloque o código abaixo no OnClick de um botão }
AddFontResource(PChar('c:\MyFonts\Monospac.ttf'));
|
Criar cores |
{ Coloque um TButton no form e escreva o evento OnClick
deste como abaixo: }
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;
|
Posicionar o ponteiro do mouse em um Componente |
{ Digite a procedure abaixo imediatamente após a palavra
implementation no código do seu formulário. }
procedure MouseParaControle(Controle: TControl);
var
IrPara: TPoint;
begin
IrPara.X := Controle.Left + (Controle.Width div 2);
IrPara.Y := Controle.Top + (Controle.Height div 2);
if Controle.Parent <> nil then
IrPara := Controle.Parent.ClientToScreen(IrPara);
SetCursorPos(IrPara.X, IrPara.Y);
end;
{ Para testar, coloque no Form um botão e troque o name dele
para btnOK e modifique o evento OnShow do Form
conforme abaixo: }
procedure TForm1.FormShow(Sender: TObject);
begin
MouseParaControle(btnOk);
end;
|
Fazer Barra de Título ficar piscando |
{ Coloque um TTimer no Form desejado. Define 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;
|
Não permitir Proteção de Tela em seu programa |
{ Na seção "private" do Form principal acrescente: }
procedure AppMsg(var Msg: TMsg; var Handled: Boolean);
{ Na seção "implementation" acrescente (troque TForm1 para
o nome do seu form principal): }
procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.Message = wm_SysCommand) and
(Msg.wParam = sc_ScreenSave) then
Handled := true;
end;
{ No evento "OnCreate" do form principal, coloque: }
Application.OnMessage := AppMsg;
|
Limitar região de movimentação do mouse |
{ Coloque um botão no form e altera o evento OnClick dele
conforme abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
var
R: TRect;
begin
{ Pega o retângulo da área cliente do form }
R := GetClientRect;
{ Converte as coordenadas do form em coordenadas da tela }
R.TopLeft := ClientToScreen(R.TopLeft);
R.BottomRight := ClientToScreen(R.BottomRight);
{ Limita a região de movimentação do mouse }
ClipCursor(@R);
ShowMessage('Tente mover o mouse para fora da área cliente do Form');
{ Libera a movimentação }
ClipCursor(nil);
end;
|
Testar se a unidade está preparada |
function DriveOk(Drive: Char): boolean;
var
I: byte;
begin
Drive := UpCase(Drive);
if not (Drive in ['A'..'Z']) then
raise Exception.Create('Unidade incorreta');
I := Ord(Drive) - 64;
Result := DiskSize(I) >= 0;
end;
{ - Coloque no Form1 um TEdit (Edit1)
- Coloque no Form1 um TButton
- Altere o evento OnClick do Button1 conforme abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
begin
if DriveOk(Edit1.Text[1]) then
ShowMessage('Drive não preparado')
else
ShowMessage('Drive OK');
end;
|
Descobrir resolução de Vídeo |
{ Coloque um TButton no Form e altere o evento
OnClick deste botão como abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Largura: ' + IntToStr(Screen.Width) + #13 +
'Altura: ' + IntToStr(Screen.Height));
end;
|
Não executar duas cópias do programa ao mesmo tempo |
{ Muitos programas Windows permitem apenas uma cópia em
execução de cada vez. Isto é interessante principalmente
quando é um grande aplicativo, pois duas cópias ao mesmo
tempo usuaria muito mais memória. Em aplicativos
desenvolvidos em Delphi podemos ter esta característica.
Vejamos:
- Crie um novo projeto;
- Mude o "Name" do Form1 para DPGFormPrinc;
- Altere o código-fonte do arquivo Project1.dpr
conforme abaixo: }
program Project1;
uses
Forms, Windows,
Unit1 in 'Unit1.pas' {DPGFormPrinc};
{$R *.RES}
var
Handle: THandle;
begin
Handle := FindWindow('TDPGFormPrinc', nil);
if Handle <> 0 then begin { Já está aberto }
Application.MessageBox('Este programa já está aberto. A cópia ' +
'anterior será ativada.', 'Programa já aberto', MB_OK);
if not IsWindowVisible(Handle) then
ShowWindow(Handle, SW_RESTORE);
SetForegroundWindow(Handle);
Exit;
end;
Application.Initialize;
Application.CreateForm(TDPGFormPrinc, DPGFormPrinc);
Application.Run;
end.
|
Excluir Arquivos usando (Coringas *.* ) |
{ - Coloque um Button no Form;
- Altere o evento OnClick do Button conforme abaixo: }
procedure TForm1.Button2Click(Sender: TObject);
var
SR: TSearchRec;
I: integer;
begin
I := FindFirst('c:\Teste\*.*', faAnyFile, SR);
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile('c:\Teste\' + SR.Name) then
ShowMessage('Não consegui excluir c:\Teste\' + SR.Name);
I := FindNext(SR);
end;
end;
|
Verificar se o Word, Excel ou Delphi está em execução |
{ Coloque um Button no Form e altere o evento OnClick deste
como abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
begin
{ Verifica o Delphi }
if FindWindow('TAppBuilder', nil) > 0 then
ShowMessage('O Delphi está aberto')
else
ShowMessage('O Delphi NÃO está aberto');
{ Verifica o Word }
if FindWindow('OpusApp', nil) > 0 then
ShowMessage('O Word está aberto')
else
ShowMessage('O Word NÃO está aberto');
{ Verifica o Excell }
if FindWindow('XLMAIN', nil) > 0 then
ShowMessage('O Excell está aberto')
else
ShowMessage('O Excell NÃO está aberto');
end;
|
Cores em Strings |
procedure TForm1.Button3Click(Sender: TObject);
begin
{ Exibe as cores atuais dos Edit's }
ShowMessage(ColorToString(Edit1.Color));
ShowMessage(ColorToString(Edit2.Color));
{ Altera as cores dos Edit's }
Edit1.Color := StringToColor('clBlue');
Edit2.Color := StringToColor('$0080FF80');
end;
|
Colocar zeros à esquerda como Strzero no Clipper |
Var
Variavel : Strig;
num : integer;
begin
num:= 129;
Variavel := FormatFloat('000000',num );
Caption:= Variavel;
{ O Caption do formulário ficará assim : 000129}
end;
|
Hint com quebra de linha |
{ - Coloque um TButton no Form;
- Altere o evento OnCreate do Form como abaixo: }
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Hint := 'Linha 1 da dica' + #13 +
'Linha 2 da dica' + #13 +
'Linha 3 da dica';
Button1.ShowHint := true;
end;
|
Fechar um programa através do Delphi |
{ - Coloque um botão no form e altere seu evento OnClick
conforme abaixo: }
procedure TForm1.Button1Click(Sender: TObject);
var
Janela: HWND;
begin
Janela := FindWindow('OpusApp'), nil);
if Janela = 0 then
ShowMessage('Programa não encontrado')
else
PostMessage(Janela, WM_QUIT, 0, 0);
end;
{Neste caso OpusApp é o título da aplicação que aparece na barra de título, mas você também poderia tentar
fechar o Bloco de Notas, Word, Excel e outros}
Home
1
- 2 -
3 - 4
Proxima
6 - 7 - 8
- 9 - 10
fontesbrasil.com® Todos os direitos reservados.
Redirecinar: http://www.fontesbrasil.com Melhor visualização 800 x 600