Quer aprender Delphi for PHP?

Caros amigos delphianos, estão com dificuldades em encontrar um bom material sobre Delphi for PHP? Visite a Comunidade Delphi so PHP e veja algumas notícias sobre as novas tendências desta ferramenta. Lá você vai encontrar dicas, downloads, artigos, videos e muito mais sobre o Delphi for PHP. Para se cadastrar é muito simples, rápido e seguro. Clique aqui e seja o mais novo membro da Comunidade Delphi so PHP e bons estudos.

No mais até a próxima.


sábado, 4 de outubro de 2008

Pegar nome do usuário na rede

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;

Criando um instalador do seu aplicativo.

{Supondo que você fez um sistema, que está no diretório C:\Contas, deixe apenas o Arquivo executável .exe e as suas tabela .db (para Arquivoc Paradox) e os arquivos de índice que são de extensão *.PX e *.XG0. Se você possui imagens coloque as também. Supondo ainda que você queira instalar o seu programa no diretório C:\ContasNew.

1) Na primeira tela, escolha a opção Create a new Setup Project

2) Na segunta tela (New Project), na caixa Project Name escreva o nome que quer dar em seu Projeto (Ex. ContasNew)

3) Clique em Create

4)Na lista que irá aparecer clique no 1º botão (Application Informatio)

5)Clique no botão Browse, e escolha o executável, no meu caso será o Contas.exe que está dentro do diretório C:\Contas

6)Na opção Defalt Destination Directory deixe apenas C:\ContasNew, se quizer que seja instalado dentro do diretório Arquivos de Programa deixe como ao lado \ContasNew

7)Clique em OK

8)Clique na opção General Options, clique no DBE (Borland DataBase Engine)

9)Irá aparecer uma segunda tela, clique em avançar.

10) Se no seu programa você utiliza um alias para se referenciar as suas tabelas, clique em New você terá que digitar o nome

do seu Alias e depois clique em OK

11) Clique em Avançar, escolha (marque a opção) Save .CFG file for.......

12) Clique em Avançar. No campo Path digite o caminho de suas tabelas (C:\ContasNew)

13) No campo Type, escolha o tipo de Tabela que você usou (Paradox)

14) Clique em avançar, depois em Concluir e depois em OK.

15) Clique no botão Groups and Files.

16) Clique sobre a pasta Program Files.

17) Clique em Launch Explorer, irá aparecer o Explorer do windows. Entre no diretório que estão os seus arquivos *.exe, *.db, *.PX e etc)

18) Selecione todos os Arquivos (Tecla Shift pressionada)

19) Após selecionados os arquivos, arraste-os para a barra de tarefas, em cima do Icone do InstallShield, ele será maximizado e você colocará os arquivos no espaço em branco do File Groups .

20) Clique em OK (neste monento, o DBE e todos os seus arquivos já estão configurados).

21) Clique no botão Dialog Boxes. Iremos montar as telas que irão fazer a interface com o usuário na hora da instalação.

22) Selecione apenas a opção Welcome Message (2º), Select Program Folder e a opção Setup Complete (Última opção)

23) Clique em OK.

24) No final da página clique em Click Here for page 2

25) Clique no botão de Disk Builder

26) Escolha o tamanho dos disquetes Disk Syze (1.44), depois clique em Build

27) Depois de pronto o disco, clique em Close. (Criamos no mínimo 3 discos, pois o DBE ocupa 3 discos e mais o nosso programa).

28) Se você quiser testar se a instalação está correta, clique em Test Run.

29) Para copiar os discos de instalação, clique em Copy to Floppy.

30) Selecione o disco que você quer copiar ou selecione todos os discos em Copy All Disk ..... E selecione para que drive será copiado os discos de instalação.

31) Pronto. Os seus discos de instalação já estão copiados. }

Retornando o abono salarial.

Esta é uma função para calcular de modo progressivo um abono (de uma folha de pagamento, por exemplo) sem cometer injustiça. Digamos que todos os funcionários que ganham até R$ 299,99 recebam um abono de R$ 50,00 e acima deste valor, um abono de R$ 30,00.


Se não aplicarmos a fórmula, poderá acontecer que, quem ganha, por exemplo, R$ 290,00 receberá R$ 340,00 (e o correto seria ganhar R$ 324,00) passando a ganhar mais de que quem ganhava R$ 300,00, pois este terá apenas um abono de R$ 30,00, recebendo R$ 330,00. A função a seguir corrige estas distorções e pode ser aplicada num banco de dados para diversas faixas salariais:


function Abono (S, F, A1, A2: Double) : Double;
begin
If S>=F then
begin
Result:=S+A2
end
else
begin
If S>F-A1 then
Result:=(100-(((F-S)/A1)*100))*A2/100+F
else
Result:=S+A1
end;
end;

Onde S = Salário (No nosso exemplo R$ 290,00 ou R$ 300,00).
F = Faixa do Abono (No nosso exemplo R$ 300,00).
A1 = 1º Abono (Valor mais alto, no nosso exemplo R$ 50,00).
A2 = 2º Abono (Valor mais baixo, no nosso exemplo R$ 30,00).
Result = Retorno da função com o calculo do novo salário.

Para utilizar basta chamar a função passando as variáveis ou campos do banco de dados exatamente como na ordem acima. Como exemplo, veja como ficaria o código do botão "Calcular Novo Salário" na interface abaixo:


procedure TForm1.Button1Click(Sender: TObject);
begin
Edit5.Text := FloatToStr(
Abono( StrToFloat(Edit4.Text), //Salário
StrToFloat(Edit1.Text), //Faixa
StrToFloat(Edit2.Text), //Aumento 1
StrToFloat(Edit3.Text) //Aumento 2
)
); //FloatToStr();
end;

Evento para deixar um grid zebrada.

Evento para deixar um grid zebrada.

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;

até a próxima pessoal.

INÍCIO E FIM DE UMA TRANSAÇÃO

INÍCIO E FIM DE UMA TRANSAÇÃO
Toda transação tem um ponto de partida, normalmente uma chamada ao método StartTransaction. O término da transação, por sua vez, é definido por uma chamada ao método Commit (confirma) ou Rollback (cancela). Portanto, em termos de código, seria algo assim:

var t : TTransactionDesc;
begin
// dbExpress
try
t.IsolationLevel := xilREADCOMMITTED;
SQLConnection.StartTransaction( t );
// Aqui seriam feitos os updates, deletes e inserts
SQLConnection.Commit( t );
except
SQLConnection.Rollback( t );
end;

// ADO
try
ADOConnection.BeginTrans;
// Aqui seriam feitos os updates, deletes e inserts
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
end;

// BDE
try
Database.StartTransaction;
// Aqui seriam feitos os updates, deletes e inserts
Database.Commit;
except
Database.Rollback;
end;

// IBX
try
IBTransaction.StartTransaction;
// Aqui seriam feitos os updates, deletes e inserts
IBTransaction.Commit;
except
IBTransaction.Rollback;
end;
end;

Como não deixar um programa executar mais de uma vez.

Evitar que um programa seja executado mais de uma vez
{ 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.

Observações
Para testar este programa você deverá compilar o projeto e fechar o Delphi. Depois, procure o
Project1.exe (projeto compilado) usando o Windows Explorer e tente executá-lo mais de uma vez e veja
o que acontece. Mas porque alterar o name do form principal para "DPGFormPrinc"? Este poderia ser
qualquer outro nome, mas preferi usar as iniciais do meu nome (DPG). Procurei deixar um nome bem
pessoal para não correr o risco de colocar um nome que possa ser encontrado em outro aplicativo do Windows.
Por exemplo: se deixar Form1, será bem fácil encontrar outro aplicativo feito em Delphi que possua uma
janela com este nome, o que causaria problema.

Como conectar utilizando arquivo .ini?

Um dos maiores problemas do programador está quando temos de colocar o caminho do banco de dados no sistema. Nossa proposta é simplificar o máximo esta tarefa.

Acrescente ao projeto os arquivos “CaminhoBanco”. (Clique aqui para fazer o download).
Acrescente ao uses do Datamodule o frmCaminhoBanco.


No datamodule coloque:

//Na sessão USES:
//INIFiles, Forms;

No DataModuleCreate:

const
AliasName = 'Nome do Programa';
FileName = 'Config.ini';
var
ServerName: String;
IniFileName: TIniFile;
ListaParms: TStringList;
begin
DM.Banco.Connected := False;
//Lê arquivo.ini no diretório da aplicação
IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName);
try
ServerName:= Trim(IniFileName.ReadString(Application.ExeName,'Banco',''));
finally
IniFileName.Free;
end;
//Termina a aplicação se o servidor não foi fornecido
if ServerName = '' then
Begin
frmCaminhoBanco := TfrmCaminhoBanco.Create(Application);
frmCaminhoBanco.ShowModal;
frmCaminhoBanco.Free;
end;
//Cria lista de Parâmetros
ListaParms:= TStringList.Create;
With ListaParms do
begin
add('user_name=SYSDBA');
add('password=masterkey');
end;
//Define conexão
try
try
Banco.DatabaseName := ServerName;
Banco.Params := ListaParms;
except
Begin
frmCaminhoBanco := TfrmCaminhoBanco.Create(Application);
frmCaminhoBanco.ShowModal;
frmCaminhoBanco.Free;
end;
end;
finally
ListaParms.Free;
end;

no DataModuleDestroy:

Banco.Connected := False;

Pronto! Agora é só executar o sistema e ele abrirá uma janela solicitando o caminho do banco toda vez que o arquivo Config.ini não existir no mesmo diretório do sistema ou quando o sistema for executado pela primeira vez.

Parceria