You are on page 1of 17

DELPHI DICAS DE COMANDOS

Extrair o caminho da Aplicao:

Dicas !!!

Retornar Endereo IP da mquina


* Declare a Winsock na clausula uses da unit Function GetIP:string; var WSAData: TWSAData; HostEnt: PHostEnt; Name:string; begin WSAStartup(2, WSAData); SetLength(Name, 255); Gethostname(PChar(Name), 255); SetLength(Name, StrLen(PChar(Name))); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do begin Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]); end; WSACleanup; end;

Escondendo a Barra de Tarefas do Windows

Para esconder a barra de tarefas do Windows, digite a seguinte rotina: procedure hideTaskbar; 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; E para mostrar novamente, digite a rotina abaixo: procedure showTaskbar; 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;

Habilitando e Desabilitando o Ctrl+Alt+Del, Ctrl + Esc e Alt+Tab

Para desabilitar o Ctrl+Alt+Del, o Alt+Tab e o Ctrl+Esc, utilize a seguinte rotina: procedure TNomeDoForm.ButtonNameClick(Sender: TObject); var Numero : Integer;

begin SystemParametersInfo (97, Word (True), @Numero, 0); end; E para reabilitar, utilize a rotina abaixo: procedure TNomeDoForm.ButtonName2Click(Sender: TObject); var Numero : Integer; begin SystemParametersInfo(97, Word (False), @Numero, 0); end;

Nmero Serial do HD

Uma boa maneira de se evitar pirataria colocar um arquivo como nmero serial do HD. Ao abrir o programa s comparar:se no for o mesmo porque o programa foi copiado para outro computador. Para se descobrir o nmero, faa o seguinte: function 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;

Gravar os Dados das Tabelas Fisicamente

Os bancos de dados normalmente gravam dados da tabela na memria, ao invs de gravar diretamente no arquivo o tempo todo, para otimizar o acesso e reduzir o trfego na rede. S que s vezes necessrio que os dados estejam disponveis imediatamente aps pressionar o boto "Salvar"... para resolver isso, adicione a unit DBIProcs na clusula Uses do form e coloque o seguinte comando no evento AfterPost da tabela: DbiSaveChanges(NomeDaTabela.Handle);

Descobrindo o Path do Alias

Para descobrir o caminho do alias, faa o seguinte: Inclua um objeto TSession no form. Altere a propriedade SessionName para Session1 e, na procedure em que voc quer ver o nome do alias, use a seguinte rotina: var List : TStringList; CaminhoDoAlias : String; begin Session1.Active := True; List := TStringList.Create; Session1.GetAliasParams ('NomeDoAlias', List); CaminhoDoAlias := List.Values['PATH']); { Em Interbase SERVER NAME no lugar de PATH } end;

Problemas com o Print-Setup do Quick-Report

Quando executa o PrintSetup do Preview e voc est trabalhando com papel Personalizado, o QuickReport perde a configurao do Papel Personalizado, colocando o PaperSize de

Custom para Letter. Para resolver o problema guarde o valor da propriedade PaperSize e do Length em variveis e no evento BeforePrint voc atribui o valor da varivel para o QuickReport novamente, dessa forma resolve o problema. Veja exemplo: var Form1: TForm1; cPaperSize : TQRPaperSize; nLength : Extended; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin cPapersize := QuickRep1.Page.PaperSize; nLength := QuickRep1.Page.Length; QuickRep1.Preview; end; procedure TForm1.QuickRep1BeforePrint(Sender: TQuickRep; var PrintReport: Boolean); begin QuickRep1.Page.PaperSize := cPaperSize; QuickRep1.Page.Length := nLength; end;

Simular o pressionamento do mouse.

O exemplo abaixo simula o pressionamento da tecla do boto esquerdo do mouse em uma determinada posio da tela. No exemplo sero utilizados dois botes (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; {Obtm 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 boto esquerdo do mouse} Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0); { Simula soltando o boto esquerdo do mouse } Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0); end;

Caption do Bitbtn com vrias 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 := Vrias linhas no caption de um boto; 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.

Instalando o BDE sem Instalador

As dicas abaixo mostra o que necessrio para instalar o BDE sem usar um instalador ou mesmo o CD do Delphi. Com as dicas abaixo possvel criar uma rotina para instalar de modo personalizado o BDE. Arquivos essenciais para o BDE: EUROPE.BLL USA.BLL IDR20009.DLL IDAPI32.DLL BLW32.DLL IDAPI32.CFG < esse arquivo pode ter qualquer outro nome, desde que seja configurado no registro. Drivers de Banco de Dados: IDPDX32.DLL < Driver Paradox IDASCI32.DLL < Driver ASCII IDDBAS32.DLL < Driver DBase IDODBC32.DLL < Driver ODBC O BDE precisa de pelo menos um Driver de Banco de Dados para funcionar. Esses acima so apenas alguns, existem vrios outros. O BDE 4.51 + Driver Paradox compactados com o Algoritmo ZIP, ocuparam aproximadamente 650 Kb. Entradas no Registro do Win95: HKEY_LOCAL_MACHINE SOFTWARE\Borland\Database Engine DLLPATH -> localizao do BDE (Unidade+Caminho Completo) CONFIGFILE01 -> localizao do arquivo de configurao (Unidade+Caminho Completo+Nome do Arquivo) SOFTWARE\Borland\BLW32 BLAPIPATH -> localizao do BDE (Unidade+Caminho Completo) LOCALE_LIB1 -> localizao do arquivo USA.BLL (Unidade+Caminho Completo+USA.BLL) LOCALE_LIB2 -> localizao do arquivo EUROPE.BLL (Unidade+Caminho Completo+EUROPE.BLL) Segue um pequeno exemplo de como registrar o BDE no Registro do Win95: begin Registry.RootKey := HKEY_LOCAL_MACHINE; Registry.CreateKey(SOFTWARE\Borland\Database Engine); Registry.OpenKey(SOFTWARE\Borland\Database Engine, False);

Registry.WriteString(DLLPATH, C:\ARQUIVOS DE PROGRAMAS\BDE\); Registry.WriteString(CONFIGFILE1, C:\ARQUIVOS DE PROGRAMAS\BDE\IDAPI32.CFG); Registry.OpenKey(\, False); Registry.CreateKey(SOFTWARE\Borland\BLW32); Registry.OpenKey(SOFTWARE\Borland\BLW32, False); Registry.WriteString(BLAPIPATH, C:\ARQUIVOS DE PROGRAMAS\BDE\); Registry.WriteString(LOCALE_LIB1, C:\ARQUIVOS DE PROGRAMAS\BDE\USA.BLL); Registry.WriteString(LOCALE_LIB2, C:\ARQUIVOS DE PROGRAMAS\BDE\EUROPE.BLL); end; Para compilar esse cdigo, ser necessrio declarar a Unit Registry. Como eu disse, esse e um exemplo bem simples. Ele nem mesmo verifica se o BDE j esta registrado ou no. Para criar o Alias atravs do seu instalador, voc pode usar a funo da api do BDE chamada biAddAlias.

DbGrid Zebrado

O exemplo abaixo mostra como deixar cada linha do componente DBGrid de uma cor diferente, dando assim um efeito zebrado. 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 padro

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 relatrio do QuickReport para um 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 Adicionar e como remover senha de uma tabela Paradox

Para testar este exemplo inclua no seu form dois componentes TButton e um componente TEdit. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, Db, DBTables, BDE; type TForm1 = class(TForm) Button1: TButton; Table1: TTable; DataSource1: TDataSource; DBGrid1: TDBGrid; Edit1: TEdit; Label1: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure AddMasterPassword(Table: TTable; pswd: string); procedure RemoveMasterPassword(Table: TTable); var Form1: TForm1; implementation

{$R *.DFM} // Adiciona a senha ao Banco de Dados procedure TForm1.Button1Click(Sender: TObject); begin Table1.Close; Table1.Exclusive := True; Table1.Open; AddMasterPassword(Table1,Edit1.Text); Table1.Close; Table1.Exclusive := False; Table1.Open; end; // Remove a senha ao Banco de Dados procedure TForm1.Button2Click(Sender: TObject); begin Table1.Close; Table1.Exclusive := True; Table1.Open; RemoveMasterPassword(Table1); Table1.Close; Table1.Exclusive := False; Table1.Open; end; // Esta funo adiciona a senha ao banco de dados procedure AddMasterPassword(Table: TTable; pswd: string); const RESTRUCTURE_TRUE = WordBool(1); var TblDesc: CRTblDesc; hDb: hDBIDb; begin { Make sure that the table is opened and is exclusive } if not Table.Active or not Table.Exclusive then raise EDatabaseError.Create(Table must be opened in exclusive + mode to add passwords); { Initialize the table descriptor } FillChar(TblDesc, SizeOf(CRTblDesc), #0); with TblDesc do

begin { Place the table name in descriptor } StrPCopy(szTblName, Table.TableName); { Place the table type in descriptor } StrCopy(szTblType, szPARADOX); { Master Password, Password } StrPCopy(szPassword, pswd); { Set bProtected to True } bProtected := RESTRUCTURE_TRUE; end; { Get the database handle from the cursor handle } Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb))); { Close the table } Table.Close; { Add the master password to the Paradox table } Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False)); { Add the new password to the session } Session.AddPassword(pswd); { Re-Open the table } Table.Open; end; // Esta funo remove a senha ao banco de dados procedure RemoveMasterPassword(Table: TTable); const RESTRUCTURE_FALSE = WordBool(0); var TblDesc: CRTblDesc; hDb: hDBIDb; begin { Make sure that the table is opened and is exclusive } if (Table.Active = False) or (Table.Exclusive = False) then raise EDatabaseError.Create(Table must be opened in exclusive mode to add passwords); { Initialize the table descriptor } FillChar(TblDesc, SizeOf(CRTblDesc), 0); with TblDesc do begin { Place the table name in descriptor } StrPCopy(szTblName, Table.TableName); { Place the table type in descriptor } StrCopy(szTblType, szPARADOX); { Set bProtected to False } bProtected := RESTRUCTURE_FALSE;

end; { Get the database handle from the cursor handle } Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb))); { Close the table } Table.Close; { Add the master password to the Paradox table } Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, FALSE)); { Re-Open the table } Table.Open; end; end.

Como retornar 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 cdigo 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 nmero da cor Caption := Caption + - +IntToStr(ColorToRGB(Image1.Canvas.Pixels[X,Y])); end;

Chamando site pelo Browser padro

Para testar o exemplo abaixo inclua no seu form um componente Button e inclua o cdigo 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;

Como mudar o Papel de parede do Windows via Delphi

Para testar o exemplo abaixo inclua no seu form um componente Button e no evento OnClick o cdigo abaixo: procedure TForm1.Button1Click(Sender: TObject); begin SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,PChar('C:\windows\Arenito.bmp'),SPIF_SENDWININICHANGE); end;

Veja como fazer a sua Proteo de Tela em Delphi

No arquivo .Dpr coloque a seguinte clusula {$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 tambm o application.OnIdle para "rodar" o dito protetor... Tambm 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

Veja como retornar o Ms, Dia ou Ano de uma determinada data no SQL do Paradox

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 aniversrio, e o nome dos clientes que fazer aniversrio em maio

This Page is an antiquarian - possibly outdated - usergenerated website brought to you by an archive. It
was mirrored from Geocities in the end of october 2009. For any questions about this page contact the respective author. For any questions concerning the archive visit our main page:OoCities.org. To report any mal content send URL to oocities[at]gmail[dot]com

Search Google

You might also like