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,
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.
No mais até a próxima.
quinta-feira, 21 de maio de 2009
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,
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,
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,
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,
Assinar:
Postagens (Atom)