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

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;

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;

sábado, 8 de outubro de 2011

Instalação do ZeosLib e RaveProject no Delphi 2010.

Ola,

Recentemente consegui a instalação do Delphi 2010, nada contra o Delphi 7, mas estava curioso de pegar uma IDE mais robusta, mais nova. Pois estou acostumado a programar em Java e as IDEs Eclipse e NetBeans fornece vários recursos que eu sinto muita falta quando estou no Delphi.

Bom! após a instalação do Embarcadero Delphi 2010 (passo o link pra vocês depois), tentei abrir alguns projetos meus e pra minha surpresa ele não vem com o Rave e precisamos instalar o Zeos. Segue abaixo o caminho das pedras.

INSTALAR RAVEPROJECT

1) http://www.4shared.com/file/q-c_JCwa/RaveReports_D2010.html


INSTALAR ZEOSLIB


1 – Faça o download do arquivo zeosdbo-7.0.0-alpha em http://zeos.firmos.at/portal.php

2 – Crie uma pasta chamada zeos7 dentro da pasta lib do rad studio. Por exemplo, meu rad studio está em c:\Arquivos de programas\codegear\rad studio\6.0\lib, então meu diretório base será:  c:\arquivos de programas\codegear\rad studio\6.0\lib\zeos7

3 – Descompacte os arquivos dentro do diretório recem criado no ítem 2.

4 – Com o delphi 2009/2010 aberto, vá em file -open project (ctrl+f11) e abra o arquivo zeosdbo.groupproj, dentro de c:\Arquivos de programas\codegear\rad studio\6.0\lib\zeos7\packages\delphi12

5 – vá ao menu project – build all projects

6 – Antes de continuar, se você estiver usando o Windows Vista ou Windows 7 com o UAC habilitado, você terá que dar permissão total para a pasta zeos7 criada, caso contrário não irá funcionar.

7 – Agora, antes da instalação vá ao menu Tools – Options – Environment Options – Delphi Options – Library – win 32 e adicione o caminho a seguir no Library Path: $(bds)\lib\zeos7\packages\delphi12\build

8 – Feito isto, minimize o delphi, abra o diretório c:\Arquivos de programas\codegear\rad studio\6.0\lib\zeos7\packages\delphi12\build, selecione todos os arquivos “.bpl” copie-os e cole-o dentro da pasta bpl do rad studio: c:\users\public\documents\rad studio\6.0\bpl

9 – Volte ao delphi vá ao menu View – Project Manager (ctrl + atl + f11). Selecione e compile as bpls abaixo, uma a uma. Para compilar, clique com o botão direto sobre o bpl. é a primeira opção(Compile).

– zcore120.bpl
– zplain120.bpl
– zparsesql120.bpl
– zdbc120.blq
– zcomponent120.bpl
– zcomponentdesign120.bpl


10 – Depois de compiladas, clique com o botão direito sobre o pacote ZComponentDesign120.bpl (o único em negrito) e clique em Install.

11 – Pronto, feche tudo (File – Close All). Crie um novo projeto e veja que os componentes já podem ser utilizados.

quarta-feira, 5 de outubro de 2011

Delphi - CheckBox no DBGrid.

Ola Pessoal,

Após um tempo de turbulência no trabalho, mais um post.


Estava desenvolvendo mais um sistema para um cliente e me deparei com uma duvida.
- Criei uma tabela nova pro cliente, com um campo Boolean.
- Coloquei um DBGrid para ele acessar essa tabela (adicionar, remover, editar e excluir).
- E um DBNavigator

Uma tabela simples mesmo, possível de controlar com um DBNavigator. Só que fiquei pensando: Porque eu não coloco um simples CheckBox pro cliente neste campo boolean, pra evitar que ele tenha que ficar digitando FALSE/TRUE. Um clique e pronto!

Vamos ao código pra fazer isso ;-)

1) Crie seu formulário, com o DBGrid conectado a tabela.
2) Selecione o seu DBGrid e acione o evento OnDrawColumnCell.
3) Coloque o seguinte código

procedure Tfrm_tarefas.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Check: Integer;
  R: TRect;
begin
  if Column.FieldName = 'concluido' then //COLOQUE O NOME DA COLUNA, NO MEU CASO 'CONCLUIDO'
  begin
    DBGrid1.Canvas.FillRect(Rect);
    Check := 0;
    if tarefasconcluido.AsBoolean = true then
      Check := DFCS_CHECKED
    else
      Check := 0;
    R:=Rect;
    InflateRect(R,-2,-2); {Diminue o tamanho do CheckBox}
    DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
  end;
end;

4) Selecione o seu DBGrid e acione o evento OnCellClick
5) Coloque o seguinte código:


procedure Tfrm_tarefas.DBGrid1CellClick(Column: TColumn);
begin
  tarefas.Edit;
  if tarefasconcluido.AsBoolean = true then
    tarefasconcluido.AsBoolean := false
  else
    tarefasconcluido.AsBoolean := true;
  tarefas.Post;
end;


É isso ai pessoal! Bem simples e fácil

Espero ter ajudado, Abraços

sexta-feira, 26 de agosto de 2011

Teste para entrevista de emprego - Linguagem C

Bom dia Pessoal,


Ontem, eu fiz uma entrevista de emprego e pensei: porque não colocar aqui no blog? se é pra ajudar né ;-)

Bom, vamos a elas (eram 3 questões).

Primeira questão - Famosa função para calcular fatorial
Lembrando que uma função recursiva deve sempre ter três preocupações.
1. Condição de parada
2. Formula do cálculo (Na pressa eu cometi um erro aqui :-s esqueci uma multiplicação, mas que inutiliza todo o código, espero que vocês não cometam o mesmo erro que eu).
3. Retorno da função

Vamos ao código
int Fatoria(int f){
  if (f <= 0)
    return (1);
 else
    return (f * Fatorial(f - 1));
}

Segunda questão - Criar uma lista duplamente linkada (Estou pensando em escrever um post só sobre isso, o charme da linguagem C são os ponteiro e as listas linkadas são muito funcional, quando BEM estruturadas).

typedef struct palavra{
 int posicao;
 char[100] palavra_portugues;
 char[100] palavra_ingles;
 Palavra *proximo;
 Palavra *anterior;
}Palavra;

typedef struct dicionario{
 int tamanho;
 Palavra *primeiro;
 Palavra *ultimo;
} Dicionario;


Terceira questão - Usando a estrutura definida na questão 2, criar uma função que faz uma consulta.

char[100] Busca(char[100] palavra_busca){
 char[100] palavra_retorno;
 Palavra *tmp;

 tmp = Dicionario->primeiro;
 while (tmp->palavra_portugues != palavra_busca && tmp != NULL){
   tmp = tmp->proximo;
 }

 if (tmp == NULL)
   palavra_retorno = "";
 else
   palavra_retorno = tmp->palavra_ingles;

 return(palavra_retorno);
}


É isso ai! Pessoal abraços

sexta-feira, 19 de agosto de 2011

Testando IDE NetBeans para desenvolvimento em Java.

Fazendo uns estudos, navegando, vendo as novidades sobre Desenvolvimento.
Li uma reportagem sobre o novo (não tão novo, apenas pra mim :-) ) IDE para desenvolvimento em Java, o NetBeans 7.0: http://www.infoq.com/br/news/2011/05/netbeans7

O que me chamou atenção foi o editor visual (GridBagLayout) e o GlassFish Server. Já sabia que o NetBeans da suporte a desenvolvimento em C/C++, PHP e HTML, mas para essas linguagens eu utilizo o NotePad++ e acho muito bom, só que o NotePad++ não tem edição gráfica para JavaForms (Swing).

Assim baixei o programa (www.netbeans.org), instalei e fiz uma calculadora para ver todo o potencial.

Vamos a ele:

Passo 1) Baixar o NetBeans e instala-lo - lembrando que deve ter um JDK compatível já instalado.

Passo 2) Abrir o NetBeans e aqui uma coisa me desagradou, demorou bastante para carrega-lo, deve ter sido por causa da procura de atualizações e etc. Deviam deixar para o usuário fazer manualmente.

Passo 3) Criar um projeto - funciona parecido com o Eclipse ou VisualStudio, tudo gira em torno de projetos.
Para isso use CTRL + SHIFT + N.
Na janela que se abre, escolha a Categoria: Java e Projeto: Aplicativo Java. Clique no botão Próximo.
Na próxima tela defina o nome do projeto como Calculadora e clique em finalizar.

Passo 4) Criando o frontend.
Para isso, no projeto Calculadora, clique com o botão direito do mouse e escolha Novo -> Outro.
Na janela que se abre, escolha a Categoria: Formulários GUI Swing e Tipos de arquivos: Formulário JFrame. Clique no botão Próximo.
Na próxima tela defina o nome como CalculadoraUI, pacote como my.calculadora.org e clique em finalizar.

Passo 5) Na parte central do programa, vai aparecer o Frame e no canto direito os componentes (swing) que podemos trabalhar.
Adicione 3 jLabels, 3 jTextFields e 3 jButtons - não sera uma calculadora completa, apenas a operação de soma.
As disposições deles dentro do frame, fica a critério de vocês.

Passo 6) Altere o texto dos jLabels.
Para isso, clique no primeiro jLabel (provavelmente nomeado como jLabel1) com o botão direito do mouse e escolha "Editar Texto". Modifique para "Primeiro numero" e pressione  Enter.
Faça o mesmo processo no segundo label e mude para "Segundo numero".
Faça o mesmo processo para o ultimo label e mude para "Resultado".

Passo 7) Limpar o texto dos jTextFields.
Para isso, clique com o botão direito do mouse sobre o jTextFields e remova o texto deles.

Passo 8) Modificar o texto dos botões.
Para isso, clique com o botão direito do mouse sobre os jButtons e modifique para "Somar", "Limpar" e "Sair".

Passo 9) Adicionar funcionalidade aos botões.
Para isso, clique no jButton-Sair com o botão direito e escolha a opção: Eventos->Action->ActionPerformed.
Coloque o seguinte código na função criada pela IDE: System.exit(0);

Clique no jButton-Limpar com o botão direito e escolha a opção:  Eventos->Action->ActionPerformed.
Coloque o seguinte código na função criada pela IDE:
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");

Clique no jButton-Somar com o botão direito e escolha a opção:  Eventos->Action->ActionPerformed.
Coloque o seguinte código na função criada pela IDE:

float num1, num2, result;
num1 = Float.parseFloat(jTextField1.getText());
num2 = Float.parseFloat(jTextField2.getText());
result = num1 + num2;
jTextField3.setText(String.valueOf(result));

Passo 10) A nossa calculadora simples esta pronta, só falta rodar e testa-lo ;-)
Para isso, Pressione F6 ou menu Executar->Executar projeto principal...


Conclusões: Me agradou muito o GridBagLayout, sendo que escrever o código para posicionamento dos componentes swing e os eventos, toma um tempo razoável do programador, disperdicio de tempo pra mim. Agora não mais ;-)
Quanto ao GlassFish eu não testei, principalmente porque uso o TomCat. Mas me disseram que você pode ter e gerenciar os dois servers no NetBeans, isso é muito bom! Verei mais depois.
A interface do NetBeans é muito boa, limpa... acesso aos comandos é intuitivo, fácil.
Primeira impressão, dou uma nota 8,5 e começarei a utiliza-lo para programas em Java ;-)


Bom! é isso ai gente! um abração!