Ola pessoal!
Uma sacada bacana que eu aprendi outro dia com um amigo.
Pra gerar a data por extenso eu utilizava uma função, mas esse amigo me mostrou uma grande sacada que a Borland fez ;-)
Em apenas uma linha você obtém a data por extenso: FormatDateTime('dddddd',now);
Os incríveis 6 (d)'dês" retornam a data por extenso sem precisar de nenhuma função adicional.
Abraços, Emanuel
quarta-feira, 9 de novembro de 2011
terça-feira, 8 de novembro de 2011
Problema com o arquivo midas.dll
Ola pessoal
Estava com esse problema a uma semana, sofrendo pra saber o porque.
Peguei o arquivo na internet. Coloquei na pasta Systems do Windows. No home do projeto. Em tudo que é lugar :-s
Até que li um post em um blog (desculpe! mas não me lembro o nome) que me salvou a vida.
O blog dizia o seguinte:
A partir do Delphi 6, sempre que vocês utilizam ClientDataSet - ele requer a biblioteca midas.
Pra vocês não sofrerem que nem eu ;-) No USES da interface adicione a biblioteca MidasLib. NÃO usem o arquivo midas.dll. Pelo menos pra mim não funcionou.
Abraços
Estava com esse problema a uma semana, sofrendo pra saber o porque.
Peguei o arquivo na internet. Coloquei na pasta Systems do Windows. No home do projeto. Em tudo que é lugar :-s
Até que li um post em um blog (desculpe! mas não me lembro o nome) que me salvou a vida.
O blog dizia o seguinte:
A partir do Delphi 6, sempre que vocês utilizam ClientDataSet - ele requer a biblioteca midas.
Pra vocês não sofrerem que nem eu ;-) No USES da interface adicione a biblioteca MidasLib. NÃO usem o arquivo midas.dll. Pelo menos pra mim não funcionou.
Abraços
quinta-feira, 27 de outubro de 2011
Somando valores em caixa de texto.
Ola pessoal, postando mais um probleminha no trabalho :-p
Probleminha em um site de um cliente. Um problema que ocorre muito com os programadores novos se não prestarem atenção nos detalhes. Aconteceu com os meus alunos, aconteceu agora com nosso estagiário.
E dizem que programar é fácil.
A linguagem JavaScript em questão utiliza a declaração de variáveis sem definição. Isto pode gerar alguns problemas.
Vamos ao código...
O código do formulário em HTML:
<form name="combin" action="pagina.php" method="post" OnSubmit="JavaScript:return valida_formulario()">
<input name="combinacao1" type="text" size="5" value=""/><br>
<input name="combinacao2" type="text" size="5" value=""/><br>
<input name="combinacao3" type="text" size="5" value=""/><br>
<input name="combinacao4" type="text" size="5" value=""/><br>
<input name="combinacao5" type="text" size="5" value=""/><br>
<input name="combinacao6" type="text" size="5" value=""/><br>
<input name="" type="reset" value="Limpar" /> <input type="submit" name="Submit" value="Enviar" />
</form>
E abaixo o código em JavaScript que faz validação do formulário, neste caso, a soma de todos os campos tem que ser 20. Pedro: O erro estava na hora de pegar os valores, o JavaScript estava definindo as variáveis como String. Por tanto na hora de somar, na verdade estava concatenando.
Utilizei a função parseInt para resolver isso! ;-)
<script language="JavaScript">
function valida_formulario()
{
var valor1 = parseInt(document.combin.combinacao1.value);
var valor2 = parseInt(document.combin.combinacao2.value);
var valor3 = parseInt(document.combin.combinacao3.value);
var valor4 = parseInt(document.combin.combinacao4.value);
var valor5 = parseInt(document.combin.combinacao5.value);
var valor6 = parseInt(document.combin.combinacao6.value);
var soma = 0;
soma = valor1+valor2+valor3+valor4+valor5+valor6;
if (soma == 20)
{
return true;
}
else
{
alert('Soma Diferente de Vinte!');
return false;
}
}
</sccript>
É isso ai! mais um post.
Abraços a todos.
Probleminha em um site de um cliente. Um problema que ocorre muito com os programadores novos se não prestarem atenção nos detalhes. Aconteceu com os meus alunos, aconteceu agora com nosso estagiário.
E dizem que programar é fácil.
A linguagem JavaScript em questão utiliza a declaração de variáveis sem definição. Isto pode gerar alguns problemas.
Vamos ao código...
O código do formulário em HTML:
<form name="combin" action="pagina.php" method="post" OnSubmit="JavaScript:return valida_formulario()">
<input name="combinacao1" type="text" size="5" value=""/><br>
<input name="combinacao2" type="text" size="5" value=""/><br>
<input name="combinacao3" type="text" size="5" value=""/><br>
<input name="combinacao4" type="text" size="5" value=""/><br>
<input name="combinacao5" type="text" size="5" value=""/><br>
<input name="combinacao6" type="text" size="5" value=""/><br>
<input name="" type="reset" value="Limpar" /> <input type="submit" name="Submit" value="Enviar" />
</form>
E abaixo o código em JavaScript que faz validação do formulário, neste caso, a soma de todos os campos tem que ser 20. Pedro: O erro estava na hora de pegar os valores, o JavaScript estava definindo as variáveis como String. Por tanto na hora de somar, na verdade estava concatenando.
Utilizei a função parseInt para resolver isso! ;-)
<script language="JavaScript">
function valida_formulario()
{
var valor1 = parseInt(document.combin.combinacao1.value);
var valor2 = parseInt(document.combin.combinacao2.value);
var valor3 = parseInt(document.combin.combinacao3.value);
var valor4 = parseInt(document.combin.combinacao4.value);
var valor5 = parseInt(document.combin.combinacao5.value);
var valor6 = parseInt(document.combin.combinacao6.value);
var soma = 0;
soma = valor1+valor2+valor3+valor4+valor5+valor6;
if (soma == 20)
{
return true;
}
else
{
alert('Soma Diferente de Vinte!');
return false;
}
}
</sccript>
É isso ai! mais um post.
Abraços a todos.
terça-feira, 25 de outubro de 2011
Passagem de parâmetros para o Rave Project.
Sua aplicação deve estar já configurada e funcionando ao gerar o relatório.
Dentro do Rave Report, selecione no Tree Panel, o RaveProject.
E no Object Inspector, selecione a opção Parameters e clique no botão de assistente com os 3 pontinhos (...)
Abrira a janela Strings Editor, dentro desta janela coloque os parâmetros que deseja receber do Delphi.
Clique em OK
Adicione algun(s) Data Text, dependendo da quantidade de parâmetros que ira receber.
Selecione a propriedade DataField e clique no assistente, botão com 3 pontinho (...).
Abrira a janela Data Text Editor, na opção Project Parameters escolha um parâmetro e clique em Insert Parameter.
Clique em OK
O Rave ja esta pronto para receber os parâmetros.
Agora! dentro do Delphi, no seu código, insira o seguinte código antes da linha de RaveProject1.Execute
Dentro do Rave Report, selecione no Tree Panel, o RaveProject.
E no Object Inspector, selecione a opção Parameters e clique no botão de assistente com os 3 pontinhos (...)
Abrira a janela Strings Editor, dentro desta janela coloque os parâmetros que deseja receber do Delphi.
Clique em OK
Adicione algun(s) Data Text, dependendo da quantidade de parâmetros que ira receber.
Selecione a propriedade DataField e clique no assistente, botão com 3 pontinho (...).
Abrira a janela Data Text Editor, na opção Project Parameters escolha um parâmetro e clique em Insert Parameter.
Clique em OK
O Rave ja esta pronto para receber os parâmetros.
Agora! dentro do Delphi, no seu código, insira o seguinte código antes da linha de RaveProject1.Execute
//Seta o Parâmetro valortotalRvProject1.SetParam('ptotal',FormatFloat('#,##0.00',valor_total));//Seta o Parâmetro dataatualRvProject1.SetParam('ptotal',FormatDateTime('dd/mm/yyyy',data));//Executa o rave
RvProject1.Execute;
segunda-feira, 24 de outubro de 2011
Formatações mais usadas.
Boa tarde Pessoal,
Atendendo a alguns pedidos, segue abaixo as formatações que eu mais utilizo no Delphi.
Para moeda - utilizo para formatação de campo numero no rave project, Ztable, ZQuery, ADOTable a ADOQuery
R$ #,##0.00
Para horario - utilizo em campo date/time (comum no Access) no rave project.
hh:nn:ss
Para data - este é a mascara para o componente MaskEdit.
!99/99/0000;1;_
Para data - este é a formatação para função FormatFloat. Comum quando trabalhamos com banco dados MySQL.
'yyyy-mm-dd' ou 'dd/mm/yyyy'
Espero ter ajudado alunos,
Abraços, Emanuel
Atendendo a alguns pedidos, segue abaixo as formatações que eu mais utilizo no Delphi.
Para moeda - utilizo para formatação de campo numero no rave project, Ztable, ZQuery, ADOTable a ADOQuery
R$ #,##0.00
Para horario - utilizo em campo date/time (comum no Access) no rave project.
hh:nn:ss
Para data - este é a mascara para o componente MaskEdit.
!99/99/0000;1;_
Para data - este é a formatação para função FormatFloat. Comum quando trabalhamos com banco dados MySQL.
'yyyy-mm-dd' ou 'dd/mm/yyyy'
Espero ter ajudado alunos,
Abraços, Emanuel
domingo, 23 de outubro de 2011
Criando PDF com Rave Report.
Ola
Como criar um arquivo PDF no Rave Report e abri-lo. Tenho que chamar atenção de vocês a um pequeno detalhe: utilizo a função ShellExecute para abrir o arquivo pdf, então temos que adicionar a biblioteca ShellAPI no USES.
procedure Tfrm_form1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Pdir: Pchar;
begin
if (key = VK_F4) then
begin
dm.Query_bancos.Close;
dm.Query_bancos.Open;
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
RvSystem1.DefaultDest := rdFile;
RvSystem1.DoNativeOutput := false;
RvSystem1.RenderObject := RvRenderPDF1;
RvSystem1.OutputFileName := 'C:\tmp.pdf';
RvProject1.Execute;
//ABRINDO O ARQUIVO PDF CRIADO
GetMem(pDir,256);
StrPCopy(pDir, 'C:\tmp.pdf'); {Aqui vc coloca o caminho + o nome do arquivo}
ShellExecute(0, nil, 'tmp.pdf', nil, Pdir, SW_NORMAL);
FreeMem(pdir,256);
end;
end;
end;
Como criar um arquivo PDF no Rave Report e abri-lo. Tenho que chamar atenção de vocês a um pequeno detalhe: utilizo a função ShellExecute para abrir o arquivo pdf, então temos que adicionar a biblioteca ShellAPI no USES.
procedure Tfrm_form1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Pdir: Pchar;
begin
if (key = VK_F4) then
begin
dm.Query_bancos.Close;
dm.Query_bancos.Open;
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
RvSystem1.DefaultDest := rdFile;
RvSystem1.DoNativeOutput := false;
RvSystem1.RenderObject := RvRenderPDF1;
RvSystem1.OutputFileName := 'C:\tmp.pdf';
RvProject1.Execute;
//ABRINDO O ARQUIVO PDF CRIADO
GetMem(pDir,256);
StrPCopy(pDir, 'C:\tmp.pdf'); {Aqui vc coloca o caminho + o nome do arquivo}
ShellExecute(0, nil, 'tmp.pdf', nil, Pdir, SW_NORMAL);
FreeMem(pdir,256);
end;
end;
end;
sexta-feira, 14 de outubro de 2011
Evitando digitação de virgula em componente Edit - Delphi
Procedimento para serem usados em um componente Edit para evitar a digitação de virgula e só aceitar números.
No seu componente Edit coloque os dois códigos nos eventos OnChange e OnKeyPress.
procedure Tfrm_formulario.edt_valorChange(Sender: TObject);
var
s:string;
v:double;
I:integer;
begin
//1º Passo : se o edit estiver vazio, nada pode ser feito.
If (edt_valor.Text = emptystr) then
edt_valor.Text := '0,00';
//2º Passo : obter o texto do edit, SEM a virgula e SEM o ponto decimal:
s := '';
for I := 1 to length(edt_valor.Text) do
if (edt_valor.text[I] in ['0'..'9']) then
s := s + edt_valor.text[I];
//3º Passo : fazer com que o conteúdo do edit apresente 2 casas decimais:
v := strtofloat(s);
v := (v /100); // para criar 2 casa decimais
//4º Passo : Formata o valor de (V) para aceitar valores do tipo 0,10.
edt_valor.text := FormatFloat('###,##0.00',v);
edt_valor.SelStart := 0;
end;
procedure Tfrm_formulario.edt_valorKeyPress(Sender: TObject;
var Key: Char);
begin
if NOT (Key in ['0'..'9', #8, #9, #13]) then
begin
key := #0;
end;
//Função para posicionar o cursor sempre na direita
edt_valor.selstart := Length(edt_valor.text);
end;
No seu componente Edit coloque os dois códigos nos eventos OnChange e OnKeyPress.
procedure Tfrm_formulario.edt_valorChange(Sender: TObject);
var
s:string;
v:double;
I:integer;
begin
//1º Passo : se o edit estiver vazio, nada pode ser feito.
If (edt_valor.Text = emptystr) then
edt_valor.Text := '0,00';
//2º Passo : obter o texto do edit, SEM a virgula e SEM o ponto decimal:
s := '';
for I := 1 to length(edt_valor.Text) do
if (edt_valor.text[I] in ['0'..'9']) then
s := s + edt_valor.text[I];
//3º Passo : fazer com que o conteúdo do edit apresente 2 casas decimais:
v := strtofloat(s);
v := (v /100); // para criar 2 casa decimais
//4º Passo : Formata o valor de (V) para aceitar valores do tipo 0,10.
edt_valor.text := FormatFloat('###,##0.00',v);
edt_valor.SelStart := 0;
end;
procedure Tfrm_formulario.edt_valorKeyPress(Sender: TObject;
var Key: Char);
begin
if NOT (Key in ['0'..'9', #8, #9, #13]) then
begin
key := #0;
end;
//Função para posicionar o cursor sempre na direita
edt_valor.selstart := Length(edt_valor.text);
end;
Assinar:
Postagens (Atom)

