Dicas Delphi

A seguir você poderá copiar e colar todas as dicas para um editor de texto ou  interface Delphi. Lembrando que pequenas modificações poderão ser usados no Kylix. 

Configurar o Delphi para acessar tabelas do Access



Execute o BDE, abra a paleta CONFIGURATION, click em Drivers, Native, MsAccess, uma janela de configuraçăo com várias opçőes será aberta. Configure a DLL32 para IDDA032.DLL ACESS 95 ou IDDA3532.DLL ACESS 97. Na opçăo SYSTEM DATABASE, aponte para o arquivo System.mdw do Acess que geralmente está no subdiretório \Msoffice\Access. Salve a configuraçăo e após isto é só criar seu alias (se já ouver algum criado, delete e configure de novo). Com essa informaçăo em măos, faça o programa năo pedir o prompt de login (a da senha), colocando um TDatabase no projeto. Escolha o alias que vocę criou na propriedade AliasName. Altere LoginPrompt para False. Na propriedade DatabaseName, coloque um nome qualquer (servirá como substituto do alias em todas as TTable e TQuery que acessem esse BD). Altere a propriedade AliasName de todas as TTables e TQueries que acessem essas tabelas para o nome que vocę definiu em DatabaseName no TDatabase.







Apagar um subdiretório



Inclua a unit SHELLAPI na clausula uses do seu form.

procedure DeleteDir( hHandle : THandle; Const sPath : String );
var
OpStruc: TSHFileOpStruct;
FromBuffer, ToBuffer: Array[0..128] of Char;
begin
fillChar( OpStruc, Sizeof(OpStruc), 0 );
FillChar( FromBuffer, Sizeof(FromBuffer), 0 );
FillChar( ToBuffer, Sizeof(ToBuffer), 0 );
StrPCopy( FromBuffer, sPath);
With OpStruc Do
Begin
Wnd:= hHandle;
wFunc:=FO_DELETE;
pFrom:= @FromBuffer;
pTo:= @ToBuffer;
fFlags:= FOF_NOCONFIRMATION;
fAnyOperationsAborted:=False;
hNameMappings:=nil;
//lpszProgressTitle:=nil;
End;
ShFileOperation(OpStruc);
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteDir( Self.Handle,'C:\TESTE');
end;










Testar a impressora



Function TForm1.PrinterOnLine : Boolean;
Const
PrnStInt : Byte = $17;
StRq : Byte = $02;
PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var
nResult : byte;
Begin
Asm
mov ah,StRq;
mov dx,PrnNum;
Int $17;
mov nResult,ah;
end;
PrinterOnLine := (nResult and $80) = $80;
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
If not PrinterOnLine then ShowMessage('Verifique a Impressora!');
end;










Validar datas



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










Procurar arquivos



procedure TForm1.DirList( ASource : string; ADirList : TStringList );
var
SearchRec : TSearchRec;
Result : integer;
begin
Result := FindFirst( ASource, faAnyFile, SearchRec );
if Result = 0 then
while (Result = 0) do
begin
if (SearchRec.Name+' ')[1] = '.' then
{ Se pegou nome de SubDiretorio }
begin
Result := FindNext( SearchRec );
Continue;
end;
ADirList.Add( SearchRec.Name );
Result := FindNext( SearchRec );
end;
FindClose( SearchRec );
ADirList.Sort;
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
var
contador: Integer;
lista: TStringlist;
begin
lista:= TStringlist.create;
DirList('C:\*.*', lista);
end;










Abrir arquivos com aplicativo associado



Inclua a unit SHELLAPI na clausula uses do seu form.

procedure TForm1.ExecFile(F: String);
var
r: String;
begin
case ShellExecute(Handle, nil, PChar(F), nil, nil, SW_SHOWNORMAL) of
ERROR_FILE_NOT_FOUND: r := 'The specified file was not found.';
ERROR_PATH_NOT_FOUND: r := 'The specified path was not found.';
ERROR_BAD_FORMAT: r := 'The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).';
SE_ERR_ACCESSDENIED: r := 'Windows 95 only: The operating system denied access to the specified file.';
SE_ERR_ASSOCINCOMPLETE: r := 'The filename association is incomplete or invalid.';
SE_ERR_DDEBUSY: r := 'The DDE transaction could not be completed because other DDE transactions were being processed.';
SE_ERR_DDEFAIL: r := 'The DDE transaction failed.';
SE_ERR_DDETIMEOUT: r := 'The DDE transaction could not be completed because the request timed out.';
SE_ERR_DLLNOTFOUND: r := 'Windows 95 only: The specified dynamic-link library was not found.';
SE_ERR_NOASSOC: r := 'There is no application associated with the given filename extension.';
SE_ERR_OOM: r := 'Windows 95 only: There was not enough memory to complete the operation.';
SE_ERR_SHARE: r := 'A sharing violation occurred.';
else
Exit;
end;
ShowMessage(r);
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
ExecFile('c:\windows\Telhas.bmp');
end;










Fazer um TEdit aceitar apenas números



Na rotina abaixo, o TEdit só aceitará números de 0 a 9 e o BackSpace (Chr(8)).
Se vocę quiser a vírgula também, coloque dentro do colchete DecimalSeparator

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in['0'..'9',Chr(8)]) then Key:= #0;
end;










Alterar o papel de parede do Windows



procedure TForm1.Button1Click(Sender: TObject);
var
Arquivo: String;
begin
Arquivo:= 'c:\windows\bitmap~1.bmp';
SystemParametersInfo(SPI_SetDeskWallPaper, 0, PChar(Arquivo), 0);
end;










Extrair o número de cores do modo de vídeo corrente do Windows95



var
hnd: THandle;
bitsPorPixel: integer;
begin
hnd:= GetDC( Handle );
bitsPorPixel:= GetDeviceCaps( hnd, BITSPIXEL );
// 8 = 256 cores; 16 = high color; 24 = true color
end;










Habilitar e desabilitar barra de tarefas



procedure hideTaskbar; // desabilita
var wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle:= FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_HIDE);
end;

procedure showTaskbar; // habilita
var wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle:= FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_RESTORE);
end;










Habilitar e desabilitar ctrl+alt+del



// desabilita
procedure TForm1.Button1Click(Sender: TObject);
var
numero: integer;
begin
SystemParametersInfo(97,Word(true),@numero,0);
end;

// habilita
procedure TForm1.Button2Click(Sender: TObject);
var
numero: integer;
begin
SystemParametersInfo(97,Word(false),@numero,0);
end;










Alterar a data e a hora do sistema



procedure TForm1.Button1Click(Sender: TObject);
var
SystemTime : TSystemTime;
begin
With SystemTime do
begin
//Definindo o dia do sistema
wYear:= 1996;
wMonth:= 5;
wDay:= 10;
//Definindo a hora do sistema
wHour:= 20; //hora
wMinute:= 50; //minutos
wSecond:= 59; //segundos
end;
//Colocar a hora e data do sistema
SetLocalTime(SystemTime);
end;










Extrair o tamanho de um arquivo



function TForm1.TamArquivo(Arquivo: string): Integer;
begin
with TFileStream.Create(Arquivo, fmOpenRead or fmShareExclusive) do
try
Result := Size;
finally
Free;
end;
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:= inttostr(TamArquivo('CAMINHO\NOMEDOARQUIVO'));
end;










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










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;

{typedef struct _MEMORYSTATUS
DWORD dwLength; // sizeof(MEMORYSTATUS)
DWORD dwMemoryLoad; // percentual de memória em uso
DWORD dwTotalPhys; // bytes de memória física
DWORD dwAvailPhys; // bytes livres de memória física
DWORD dwTotalPageFile; // bytes de paginaçăo de arquivo
DWORD dwAvailPageFile; // bytes livres de paginaçăo de arquivo
DWORD dwTotalVirtual; // bytes em uso de espaço de endereço
DWORD dwAvailVirtual; // bytes livres}










Número de série do  HD



Function TForm1.SerialNum(FDrive:String) :String;
var
Serial: DWord;
DirLen, Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try
GetVolumeInformation(PChar(FDrive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except
Result := '';
end;
end;










Compartilhar uma pasta de um outro micro e mapear com uma letra



var
err : DWord;
PServer, PSenha, PLetra : PChar;
Begin
PServer := '\\Caminho\Caminho' + #0;
PLetra := 'L:';
PSenha := '';

ERR := WNetAddConnection ( PServer , PSenha , PLetra );

CASE ERR of
ERROR_ACCESS_DENIED : ShowMessage ( 'Acesso negado.' );
ERROR_ALREADY_ASSIGNED : ShowMessage ( 'A letra do drive especificada já está conectada.' );
ERROR_BAD_DEV_TYPE : ShowMessage ( 'O tipo de dispositivo e o tipo de recurso năo săo compatíveis.'
);
ERROR_BAD_DEVICE : ShowMessage ( 'Letra inválida.'
);
ERROR_BAD_NET_NAME : ShowMessage ( 'Nome do servidor năo é válido ou năo pode ser localizado.' );
ERROR_BAD_PROFILE : ShowMessage ( 'Formato incorreto de parâmetros.' );
ERROR_CANNOT_OPEN_PROFILE : ShowMessage ( 'Conexăo permanente năo disponível.' );
ERROR_DEVICE_ALREADY_REMEMBERED : ShowMessage ( 'Uma entrada para o dispositivo especificado já está no perfil do usuário.' );
ERROR_EXTENDED_ERROR : ShowMessage ( 'Erro de rede.' );
ERROR_INVALID_PASSWORD : ShowMessage ( 'Senha especificada inválida.' );
ERROR_NO_NET_OR_BAD_PATH : ShowMessage ( 'A operaçăo năo foi concluída porque a rede năo foi inicializada ou caminho é inválido.' );
ERROR_NO_NETWORK : ShowMessage ( 'A rede năo está presente.'
);
else if Err > 0 then
ShowMessage (IntToStr(Err));
end;
end;










Pegar nome do usuário na rede



Colocar na chamada de Uses de sua Unit as seguintes DCUs : DBITYPES, DBIPROCS, DBIERRS e DB.

function TForm1.usuario : string;
var
szNetName: Array[0..48] of Char;
iResult: DBIResult;
begin
iResult:= DBIGetNetUserName(szNetName);
if iResult <> DBIErr_None then
DBIError( iResult )
else
Result:= StrPas(szNetName);
end;










Como saber o estado das teclas Num lock, Caps lock e Scroll lock



Para saber o estado das teclas acima citadas, utilize a funçăo getkeystate em conjunto com o código das teclas, ela retorna 0 se a tecla estiver OFF e 1 se a tecla estiver ON, assim:

If getkeystate(vk_numlock) = 0 then // Num lock está OFF
If getkeystate(vk_numlock) = 1 then // Num lock está ON
If getkeystate(vk_scroll) = 0 then // Scroll lock está OFF
If getkeystate(vk_scroll) = 1 then // Scroll lock está ON
If getkeystate(vk_CAPITAL) = 0 then // Caps lock está OFF
If getkeystate(vk_CAPITAL) = 1 then // Caps lock está ON










Testando drives



function TForm1.TemDiscoNoDrive(const drive : char): boolean;
var
DriveNumero : byte;
EMode : word;
begin
result := false;
DriveNumero := ord(Drive);
if DriveNumero >= ord('a') then
dec(DriveNumero,$20);
EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
if DiskSize(DriveNumero-$40) <> -1 then
Result := true
else
messagebeep(0);
finally
SetErrorMode(EMode);
end;
end;

Utilize a funçăo assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
if TemDiscoNoDrive('a') then
ShowMessage('Tem disco no drive A:')
else
ShowMessage('Năo tem disco no drive A:');
end;









Executando programas externos



Winexec('Command.com /C Teste.exe',Tipo_de_Janela);

Tipo_de_Janela :

SW_SHOWNORMAL - Visualizaçăo normal da janela
SW_MAXIMIZE - Janela maximizada
SW_MINIMIZE - Janela minimizada
SW_HIDE - Escondido










Reproduzindo sons wav, sem o componente mediaplayer



Coloque na clásula Uses a unit MMSystem

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










Manipular arquivos INI



Inclua a unit IniFiles na clausula uses do seu form.

Procedure TForm1.GravaIni( Numero : Longint ; Texto : String ; Condicao : Boolean);
var
ArqIni : TIniFile;
begin
ArqIni := TIniFile.Create('c:\windows\temp\Teste.Ini');
Try
ArqIni.WriteInteger('Dados', 'Numero', Numero);
ArqIni.WriteString('Dados', 'Texto', Texto);
ArqIni.WriteBool('Dados', 'Condiçăo', Condicao);
Finally
ArqIni.Free;
end;
end;

Procedure TForm1.LeIni( Var Numero : Longint ; Var Texto : String ; Var Condicao : Boolean);
var
ArqIni : tIniFile;
begin
ArqIni := tIniFile.Create('c:\windows\temp\Teste.Ini');
Try
Numero := ArqIni.ReadInteger('Dados', 'Numero', Numero );
Texto := ArqIni.ReadString('Dados', 'Texto', Texto );
Condicao := ArqIni.ReadBool('Dados', 'Condiçăo', Condicao );
Finally
ArqIni.Free;
end;
end;

Utilize as funçőes assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
GravaIni(1234,'TESTE',True);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
N: Integer;
T: String;
C: Boolean;
begin
LeIni(N,T,C);
Showmessage(IntToStr(N)+' '+T);
end;










Exponenciaçăo



Inclua a unit Math na clausula uses do seu form. Depois disso utilize a funçăo Power.
Edit1.text:= FloatToStr(Power(2,4));










Aguardar um determinado nş de segundos (inkey-equivalente do Clipper)



procedure TForm1.Delay(Tempo: Word);
var x1: Double;
begin
x1:= now;
repeat until ((now-x1)*86400) > Tempo;
end;










Tecla ENTER funcionar como TAB



Setar a propriedade KeyPreview do Form para True.
Setar a propriedade Default de todos os botőes do Form para False.
Criar um evento OnKeyPress para o Form como este:

Procedure Tform1.FormKeyPress(Sender: Tobject; var Key: Char);
begin
If key = #13 then
Begin
Key:= #0;
Perform(Wm_NextDlgCtl,0,0);
end;
end;










Utilizar ponto para separar decimais



Vocę pode combinar a variável DecimalSeparator, ThousandSeparator do Delphi com o evento OnKeyPress:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If key = '.' then key:= DecimalSeparator;
end;










Criando um Splash Screen (abertura)



Vocę pode criar uma tela de abertura no seu programa em Delphi. Após ter criado um formulário principal, crie um formulário para a tela de abertura. Aqui iremos chamá-lo de ABERTURAFORM.

Depois de criar os dois formulários, clique no menu VIEW, na opçăo PROJECT SOURCE, que permite que seja exibido o código do arquivo principal do projeto. Localize no código a linha em que o formulário de abertura é criado e apague-a (ou coloque em modo de observaçăo, inserindo // no início da linha).

Linha que deve ser apagada:

begin
...
Application.CreateForm(TAberturaForm, AberturaForm); // Esta linha deve ser apagada
...
end;

Após remover a linha acima, insira as linhas abaixo antes da criaçăo dos demais formulários do seu aplicativo:

Linhas que devem ser inseridas:

begin
AberturaForm:= TAberturaForm.Create(Application);
AberturaForm.show
{Os demais formulários devem ser criados aqui}
...
AberturaForm.Hide;
AberturaForm.Free;
Application.Run;
End;

Os comandos...

AberturaForm:= TAberturaForm.Create(Application); - cria o formulário
AberturaForm.Show - exibe o formulário de abertura na tela
AberturaForm.Hide; - esconde o formulário de abertura
AberturaForm.Free; - tira o formulário da memória










Como limpar todos os edits de um form



procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
for i := 0 to ComponentCount-1 do
begin
If Components[i].ClassName = 'TEdit' then
Tedit(Components[i]).clear;     // ou TEdit(components[i]).text:= ''
end;
end;










Formatar números com zeros ŕ esquerda (Strzero-equivalente do Clipper)



var
Numero: Integer;
begin
Numero:= 123;
Edit1.text:= Format('%5.5d',[Numero]); // resulta '00123';
end;










Obrigar a digitaçăo de caracteres maiúsculos num campo memo



procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
Key:= Upcase(Key);
end;










Imprimindo um campo memo via Canvas



Coloque na clásula Uses a unit printers

procedure TForm1.Button1Click(Sender: TObject);
var
i, altura : Integer;
sMemo : String;
begin
With Printer do
begin
Title:= 'Imprimindo memo';
BeginDoc;
With Canvas do
begin
altura := TextHeight('A');
for i := 1 to Memo1.Lines.Count do
begin
sMemo := Memo1.Lines[I];
TextOut(1, (i - 1) * Altura, sMemo);
end;
end;
EndDoc;
end;
end;











Procura e substituiçăo de string num campo memo



Procedure FindReplace (const Enc, subs: String; Var Texto: TMemo);
Var
i, Posicao: Integer;
Linha: string;
Begin
For i:= 0 to Texto.Lines.count - 1 do
begin
Linha := Texto.
Lines[i];
Repeat
Posicao:=Pos(Enc,Linha);
If Posicao > 0 then
Begin
Delete(Linha,Posicao,Length(Enc));
Insert(Subs,Linha,Posicao);
Texto.Lines[i]:=Linha;
end;
until Posicao = 0;
end;
end;

Utilize a funçăo ssim:

Procedure TForm1.Button1Click (Sender: TObject);
Begin
FindReplace(Edit1.Text,Edit2.Text, Memo1);
end;










Pegando a linha e coluna atuais de um memo



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










Trocando a cor de uma célula num DBGrid



No evento onDrawColumnCell do dbgrid coloque o código para mudar a cor da fonte do dbgrid e a chave do método para "desenhar" os dados.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Field.FieldName = 'NOMEDOCAMPO') then
begin
if condiçăo then // coloque aqui sua condiçăo
begin
DBGrid1.Canvas.Brush.Color:= clAqua;
DBGrid1.Canvas.Font.Color:= clWindowText;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end;










Trocando a cor da fonte num DBGrid



Coloque a propriedade defaultdrawdata do dbgrid em FALSE;
No evento onDrawColumnCell do dbgrid coloque o código para mudar a cor do font do dbgrid e a chave do método para "desenhar" os dados.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
If Condiçăo then Dbgrid1.Canvas.Font.Color:= clFuchsia; // coloque aqui a cor desejada
Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);
end;










Gerenciando mais de uma linha selecionada num DBGrid (Multiselect)



O DBGrid tem uma propriedade năo documentada chamada SelectedRows
(Tbookmark). Com ela vocę pode gerenciar Multiselect da seguinte forma:

var
contador: Integer;
begin
With Dbgrid1 do
Begin
for contador:= 0 to Pred(SelectedRows.Count) do
Begin
Datasource.Dataset.Bookmark:= SelectedRows[contador]; // posiciona nos registros selecionados do DBGrid
end;
end;










Commit (Delphi 3)



Inclua DBISaveChanges(Nome da Tabela.handle) no evento After Post. Inclua em uses a biblioteca DBIProcs.

procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
DBISaveChanges(TTable(Dataset).handle);
end;










Commit (Delphi 2)



Inclua DBISaveChanges(Nome da Tabela.handle) no evento After Post. Inclua em uses a biblioteca DBIProcs.

procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
DBISaveChanges(Table1.handle);
end;










Extrair o número do registro atual em tabelas Paradox ou Dbase



Inclua a unit BDE na clausula uses do seu form.

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
CP: CurProps;
RP: RecProps;
RecID: Longint;
begin
with Table1 do
begin
UpdateCursorPos;
Check(DbiGetCursorProps(Handle, CP));
Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RP));
if StrComp(CP.szTableType, szDBASE) = 0 then
RecID := RP.iPhyRecNum
else if StrComp(CP.szTableType, szPARADOX) = 0 then
RecID := RP.iSeqNum
else raise EDatabaseError.Create('ERRO! Năo é uma tabela Paradox ou dBASE.');
end;
Label1.Caption:= IntToStr(RecID) +' de '+ IntToStr(Table1.recordcount);
end;










Alterando Idapi32.Cfg Via Programa



Substitua AliasName pelo nome do alias que vocę quer criar e em AliasPath pelo path dos arquivos de dados que vocę quer no seu alias.

Inclua na cláusula "USES" as units BD e BDE.

Check(DbiAddAlias(Nil, PChar(' AliasName '), Nil, PChar(' AliasPath'), True));










Criando tabelas



var
Tabela: TTable;
Indices: TIndexOptions;
begin
Tabela:= TTable.Create;
Indices:= [ixPrimary, IxUnique];
with Tabela do
begin
active:= false;
databasename:= 'c:\teste';
tablename:= 'Tabela';
tabletype:= ttDefault;
fielddefs.clear;
fielddefs.add('Codigo', ftInteger, 0, false);
...
indexdefs.clear;
indexdefs.add('Codigo_Chave', 'codigo', Indices);
CreateTable;
end;










Traduzindo o preview padrăo do Quickreport (Delphi 3)



Abra só o arquivo QRPREV.DFM do diretório C:\Arquivos de Programas\Borland\Delphi 3.0\Lib. Atençăo: năo abra o QRPREV.DCU, ok?
Você  pode traduzir várias propriedades exceto NAME dos componentes e você năo deve incluir nenhum componente novo.










Data por extenso no Quickreport



var
nrdia: Integer;
diasemana: array[1..7] of String;
meses: array[1..12] of String;
dia, mes, ano: Word;
begin
diasemana[1]:= 'Domingo';
diasemana[2]:= 'Segunda-feira';
diasemana[3]:= 'Terça-feira';
diasemana[4]:= 'Quarta-feira';
diasemana[5]:= 'Quinta-feira';
diasemana[6]:= 'Sexta-feira';
diasemana[7]:= 'Sábado';
meses[1]:= 'Janeiro';
meses[2]:= 'Fevereiro';
meses[3]:= 'Março';
meses[4]:= 'Abril';
meses[5]:= 'Maio';
meses[6]:= 'Junho';
meses[7]:= 'Julho';
meses[8]:= 'Agosto';
meses[9]:= 'Setembro';
meses[10]:= 'Outubro';
meses[11]:= 'Novembro';
meses[12]:= 'Dezembro';
DecodeDate(DATE,ano,mes,dia);
nrdia:= DayOfWeek(DATE);
QRLabel1.Caption:= diasemana[nrdia]+', '+INTTOSTR(dia)+' de '+meses[mes]+' de '+INTTOSTR(ano);











Filtrando registros com o Quickreport (Delphi 2)



Vocę deve usar o evento OnFilter do componente Quickreport. O mesmo possui a variável PrintRecord do tipo Boolean. Para que o registro năo seja impresso, basta atribuir False a esta variável.

procedure TForm1.QuickReport1Filter(var PrintRecord: Boolean);
begin
PrintRecord:= ( table1salario.value > 200 );
end;










Extraindo o ano, mês ou dia de uma data via SQL



Select * from nome_tabela where extract(year from campo_data) = 1997

Vocę pode extrair o męs (MONTH) ou o dia (DAY).



Home  Proxima     2 - 3 - 4 - 5 - 6 - 7 - 8 - - 10

                      fontesbrasil.com® Todos os direitos reservados.


Redirecinar: http://www.fontesbrasil.com   Melhor visualização 800 x 600