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.


quinta-feira, 21 de maio de 2009

Customização de erro na página

Pessoal, vou mostrar como não tomar aquele erro feio do ASP .NET do servidor quando ocorre erro na página.

A primeira coisa e criar uma página HTML customizada de erro.
A segunda coisa é colocar o bloco de código abaixo no WEBCONFIG do seu projeto:


Como colocar? Onde colocar esse código?

Bem simples, abra seu WEBCONFIG e coloque dentro da TAG system.web!

Neste momento o customErrors mode="On" estar ligado e qualquer erro no projeto será chamado o página erro404.htm.

Então foi isso pessoal. Até uma próxima dica...

Att,

quarta-feira, 20 de maio de 2009

InputQuery com mascara de MaskEdit

Olá galera,

essa vai para os que conhecem o inputQuery... Vai uma dica maneira!

Veja na função abaixo como colocar o maskedit no InputQuery:

function InputQueryDef(const ACaption, APrompt: string;
var Value: String): Boolean;
var
Form: TForm;
Prompt: TLabel;
MaskEdit: TMaskEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;

function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
Caption := APrompt;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
end;
MaskEdit := TMaskEdit.Create(Form);
with MaskEdit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
EditMask := '!99/99/0000;1;_';
Text := Value;
SelectAll;
end;
ButtonTop := MaskEdit.Top + MaskEdit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'OK';
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'Cancelar';
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), MaskEdit.Top + MaskEdit.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Value := MaskEdit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;


Esta função não é nada mais nada menos que a propria função nativa do Delphi, só que rescrita com o MaskEdit!

Só isso...

Att,

Cadastro de senha mais segura!

Bem, vou mostrar agora uma função que obriga a senha possuir o primeiro caracter maiusculo e conter números.

Veja logo abaixo esta função:

function fValidaSenhaEspecial(const senha: string): boolean;
var
i, y: integer;
_s : string;
begin
// Inicia a função do falsa...
result := false;
// Verificando se a primeira letra é maiúscula.
if (pos(uppercase(copy(senha,1,1)),senha) = 1) then
for y := 1 to 9 do
for i := 1 to Length(senha) do
begin
_s := copy(senha,i,1);
// Verificando se há algum numero na string.
if (_s = inttostr(y)) then
// Todas validações foram feitas com sucesso.
result := true;
end;
end;


Simples não!?

Vamos ver agora como utiliza-la.

procedure Form1.Buttononclick(Sender: TObject);
begin
// Desta forma ele retorna FALSE
if (ValidaSenhaEspecial('elias10')) then
showmessage('Senha deve conter carecter o primeiro maiusculo e numeros!');

// Desta forma ele retorna TRUE
if (ValidaSenhaEspecial('Elias10')) then
showmessage('Senha OK!');
end;


Então pessoal, foi esta minha dica de hoje. Espero que ajude em algum lugar do seu código.

Att,

segunda-feira, 18 de maio de 2009

Vou mostrar aqui um pequeno exemplo da tecnologia REFLECTION

Vamos lá.

A primeira cousa a se fazer é criar um projeto em File -> New -> Project, lá vão ter algumas opções, escolha Console Application.

Proxímo passo é fazer o using do Reflecton. Logo no inicio do .CS faça o using System.Reflection;.

Agora, para exemplificar, vamos criar uma classe chamada Funcionario, veja como abaixo:
class Funcionario
{
public Funcionario(int codigo, string nome)
{
Codigo = codigo;
Nome = nome;
}

public int Codigo { get; set; }
public string Nome { get; set; }
public event EventHandler PegarValor;
}


Feito isso, já posso passar para a utilização propriamente dito do reflection. O primeiro passo é criar o objeto Funcionario passando os valores para seu construtor.
Funcionario FUNC = new Funcionario(123, "Elias Medeiros");

Agora, vamos atribuir os tipos referente ao objeto Funcionario para uma variavel do tipo Type. Com isso, vamos conseguir retorna qualquer tipo que o objeto possua.
Type Tipos = FUNC.GetType();

Vamos agora percorrer os tipos do objeto Funcionario.

1º - Propriedades: Reparem que estou criando uma variavel (PI) do tipo PropertyInfo para retornar as propriedades do objeto Funcionario. Para isso eu passo a variavel Tipos.GetProperties()...
foreach (PropertyInfo PI in Tipos.GetProperties())
{
Console.WriteLine(string.Format("Propriedade: {0} - Valor: {1}", PI.Name, PI.GetValue(FUNC, null)));
}


2º - Construtores e parametros: Neste caso, vamos criar um variavel (CI) do tipo ConstructorInfo. Para isso eu passo a variavel Tipos.GetConstructors().... Da mesmo forma, para pegar seus paametros, sendo que a variável será do tipo ParameterInfo. Para isso eu passo a variavel CI.GetParameters()....
foreach (ConstructorInfo CI in Tipos.GetConstructors())
{
Console.WriteLine(string.Format("Construtor: {0}", CI.Name));
foreach (ParameterInfo PI in CI.GetParameters())
{
Console.WriteLine(string.Format(" Parametros: {0}", PI.Name));
}
}


3º - Eventos: Para o caso de eventos, segui o mesmo princípio. Sendo que a variável será do tipo EventInfo. Para isso eu passo a variável Tipos.GetEvents()....
foreach (EventInfo EI in Tipos.GetEvents())
{
Console.WriteLine(string.Format("Eventos: {0}", EI.Name));
}


Então pessoal, esse foi um pequeno exemplo de Reflection. Espero que ajude...

Att,

Parceria