segunda-feira, 22 de fevereiro de 2010

Tutorial Mootools - Tipos de requisições AJAX (Parte 3/3 - Request.JSON)

Prezado Leitor,

As postagens anteriores referentes as requisições AJAX, foram explanadas superficialmente. Desta maneira, podem ocorrer dúvidas quanto ao processo de interação entre o cliente e servidor. Portanto, deixem seus comentários, dúvidas e sugestões.

Além de como funciona uma requisição AJAX com JSON, neste tutorial será demonstrado como o PHP deverá preparar os dados para serem entendíveis pelo JavaScript.

Script.js

new Request.JSON({
url:'Estado.php',
onComplete:function(response) {
alert(JSON.encode(response));
}
}).post(null);

Estados.php

$estados = array(
"DF" => "Distrito Federal",
"GO" => "Goiás",
"SP" => "São Paulo",
);

$encodedArray = array_map(utf8_encode, $estados);
echo json_encode($encodedArray);

No exemplo acima foi criado um array com as siglas e o nomes de alguns estados. Na codificação para json é importante que seja definido o encode de caracteres. No caso foi definido utf8.

O javascript receberá os dados através do parâmetro "response" no onComplete. Para exibir como os dados são decodificados foi utilizado o método JSON.encode(response), dentro do alert.

Na documentação oficial, há exemplos utilizando outras opções suportadas por Request.JSON: http://mootools.net/docs/core/Request/Request.JSON

Referência PHP: php.net

Atenciosamente,
Rondson Lima

sexta-feira, 19 de fevereiro de 2010

Tutorial Mootools - Tipos de requisições AJAX (Parte 2/3 - Request.HTML)

Request.HTML é um tipo de requisição AJAX utilizada para obtenção de conteúdo HTML como resposta do servidor.

Os dois exemplos a seguir demonstram algumas das maneiras possíveis de manipular as respostas:

Exemplo 1:

new Request.HTML({
url: baseURL+'/estados',
update: 'elemento',
onRequest: function(){
new Loading();
},
onComplete: function(){
new Ready();
}
}).post(null);

No exemplo acima a resposta HTML da requisição "estados" atualizará o elemento através do parâmetro "update".

Exemplo 2:

new Request.HTML({
url: baseURL+'/estados',
onRequest: function(){
new Loading();
},
onComplete: function(r1,r2,r3){
$('elemento1).set('html',r1);
$('elemento2).set('html',r3);
new Ready();
}
}).post(null);

Este exemplo é útil quando há a necessidade de manipular a resposta para atualizar mais de um elemento. No onComplete são adicionados os parâmetros r1, r2 e r3. Cada um retorna o html diferentemente. Acima foram alterados dois elementos com r1 e r3.

Na documentação oficial, há exemplos utilizando outras opções suportadas por Request.HTML: http://mootools.net/docs/core/Request/Request.HTML

Atenciosamente,
Rondson Lima

segunda-feira, 18 de janeiro de 2010

Tipos de requisições AJAX (Parte 1/3 - Request)

Request é utilizado quando não há a necessidade de obter como resposta da requisição, elementos HTML ou JSON. A seguir um exemplo de como realizar uma requisição AJAX.

var Sair = new Class({

initialize: function(){
new Request({
url: baseURL+'/index/sair',
onRequest: function(){
new Loading();
},
onComplete: function(){
window.location.href = baseURL + '/index/login';
}
}).post(null);
}
});

Perceba que “initialize” é o construtor da classe “Sair”. Para realizar esta requisição basta instanciá-la dentro da tag javascript conforme segue:

new Sair();


Uma dica, aplicar a chamada da classe num evento de clique de um botão.

Detalhe das opções acima:

url - endereço a ser requisitado
onRequest - ação que deverá ser executada no momento da requisição
onComplete - ação que deverá ser executada após a requisição ser completada

Na documentação oficial, há exemplos utilizando outras opções suportadas por Request: http://mootools.net/docs/core/Request/Request

Atenciosamente,
Rondson Lima

Tutorial Mootools - Tipos de requisições AJAX

O que é Mootools

Mootools é uma biblioteca desenvolvida em JavaScript. Compacta, modular, bem documentada e orientada a objetos, foi designada para o desenvolvimento web avançado, proporcionando um código elegante e coerente (MOOTOOLS, 2009).

Tendo em vista que há na web parte da documentação traduzida para o português, segue um link como sugestão para quem está iniciando ou quer aprender os conceitos básicos deste framework: http://www.criarweb.com/manual-mootools/

Este tutorial tem como objetivo simplificar, para melhor entendimento, como funcionam as requisições AJAX com Mootools. São basicamente três tipos (Request, Request.HTML e Request.JSON). Será dividido em três partes.

Ferramentas utilizadas

Mootools versão: 1.2.3
IDE: Eclipse Galileo 3.5, PDT 2.1

Conhecimentos desejados

Noções de: JavaScript; Programação Orientada a Objetos; e AJAX.
Outros requisitos: vontade em aprender :)

Tipos de requisições

Tutorial Mootools - Tipos de requisições AJAX (Parte 1/3 - Request)

Tutorial Mootools - Tipos de requisições AJAX (Parte 2/3 - Request.HTML)

Tutorial Mootools - Tipos de requisições AJAX (Parte 3/3 - Request.JSON)

Referências

MOOTOOLS. Framework Mootools: Site Oficial. Disponível em http://mootools.net/

Atenciosamente,
Rondson Lima

sexta-feira, 8 de janeiro de 2010

Agradecimento

Prezados Leitores,

Gostaria de agradecer a todos que direta ou inderetamente contribuíram para o sucesso deste blog. Mesmo com um pequeno acervo de artigos/tutoriais e um grande período sem postagens, houve uma média mensal de 500 novos visitantes. A maioria dos acessos realizados pelos mecanismos de buscas.

O período sem posts foi devido aos projetos dos quais eu estava participando. O último tratou-se do Trabalho de Conclusão de Curso para obtenção do título de Bacharel em Sistemas de Informação.

Em 2010, continuarei compartilhando meus conhecimentos e experiências.

Sucesso a todos e feliz 2010.

Atenciosamente,
Rondson Lima

quinta-feira, 30 de julho de 2009

PHP - Zend Framework - Como criar um Action sem o phtml

Por padrão, ao criar um Action no Controller estendido do Zend_Controller_Action é necessário criar um phtml no diretório app/views/scripts. Contudo há especifidades em que deseja-se criar um Action mas não o seu phtml. Desta maneira basta inserir a seguinte linha de comando no Action em questão:

$this->_helper->viewRenderer->setNoRender(true);

Caso deseje obrigar a criação de um phtml, somente altere o parâmetro para true.

Atenciosamente,
Rondson Lima

sexta-feira, 5 de junho de 2009

PHP - Como inserir o resultado de uma consulta Mysql num array utilizando a função array_push

A seguir será demonstrado como conectar com banco de dados Mysql e realizar uma consulta.

Os dados obtidos serão inseridos num array contendo a chave e o valor de cada elemento. A chave é nome do campo da tabela, o valor é o conteúdo do campo.



/** Conexão **/
mysql_connect("localhost", "root","") or
die("Não foi possível conectar: " . mysql_error()); // mensagem de excessão

mysql_select_db("testes"); // seta o banco de dados

$resultado = mysql_query("SELECT * FROM tb_usuario"); // consulta sql

$arrayDados = array(); // criar array vazio

while($linha = mysql_fetch_array($resultado, MYSQL_NUM)) {
// incluir valores no array
array_push($arrayDados,
array('id_usuario'=>$linha[0],
'no_usuario'=>$linha[1]
)
);
}

// conferir valores do array
foreach($arrayDados as $chave) {
echo var_dump($chave). "
";
}

// liberar memória utilizada para consulta
mysql_free_result($resultado);


fonte: php.net

Atenciosamente,
Rondson Lima

quarta-feira, 3 de junho de 2009

PHP - Como criar um array com quantidade de chaves e valores pré-determinados

A função array_fill do PHP possibilita a criação de um array com chaves e valores determinados por parâmetro. Exemplo:

$valoresMes = array_fill(1,31,0);

O primeiro parâmetro é passado o valor inicial da chave.
O segundo parâmetro é passado o valor final da chave.
O terceiro parâmetro é passado o valor que cada elemento terá.

resultado:

Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[n] => 0
[31] => 0
)


O exemplo acima poderá ser utilizado, na prática, para informar o número de ocorrências em dias de determinados meses.

fonte: php.net

Atenciosamente,
Rondson Lima.

segunda-feira, 1 de junho de 2009

PHP - Zend Framework - Tutorial - Como construir um formulário utilizando Zend_Form

Conforme os padrões de arquitetura do Zend Framework, devemos considerar a estrutura de pastas conforme abaixo:


A classe UsuarioController deverá possuir o conteúdo a seguir:

UsuarioController.php


class UsuarioController extends GenericoController {

public function getForm() {

$form = new Zend_Form();

$form->setAction($this->getBaseUrl().'/usuario/login')
->setMethod('post');

// cria e configura o elemento usuário
$usuario = $form->createElement('text', 'usuario');
$usuario->addValidator('alnum')
->addValidator('regex', false, array('/^[a-z]/i'))
->addValidator('stringLength', false, array(6,20))
->setRequired(true)
->addFilter('StringToLower');

// cria e configura o elemento senha
$senha = $form->createElement('password', 'senha');
$senha->addValidator('StringLength', false, array(6))
->setRequired(true);

// adiciona elementos ao formulário
$form->addElement($usuario)
->addElement($senha)
->addElement('submit', 'login', array('label' => 'Login'));

return $form;
}

public function indexAction() {
// renderize usuario/form.phtml
$this->view->form = $this->getForm();
$this->render('form');
}

public function loginAction() {
if(!$this->getRequest()->isPost()) {
return $this->_forward('index');
}

$form = $this->getForm();

if(!$form->isValid($_POST)) {
//falha na validação; exibe o formulário novamente
$this->form = $form;
return $this->render('form');
}

$valor = $form->getValues();
}

}


Observação no $this->getBaseUrl(). Deverá ser inserida a baseUrl do projeto, inseri o método no GenericoController para ser utilizado nos demais Controllers, o método é público e contém o código return $this->getFrontController()->getBaseUrl();

O arquivo form.phtml deverá possuir o seguinte conteúdo: < ? = $this->form; ?>

Caso seja exibido apenas form; ?>, é necessário habilitar as short tags no PHP conforme exemplo a seguir:

Habilitar short tags no PHP

No arquivo configuração do PHP, php.ini procure pela palavra abaixo:

short_open_tag

Apague off e escreva on.
Reinicie o Apache.

Pronto, agora a tag estará disponível para utilização. Conforme rege a documentação oficial do Zend_Form.

fonte: http://framework.zend.com/manual/en/zend.form.html

Atenciosamente,
Rondson Lima

quarta-feira, 27 de maio de 2009

Zend Framework - Tutorial de sobrescrita do método preDispatch() do Zend_Controller_Action

O Zend_Controller_Action proporciona dois métodos que podem ser chamados a cada Action solicitada, o preDispatch() e o postDispatch(). Este métodos podem ser úteis de variadas maneiras, entre elas o controle de autenticação.

Este tutorial tem como objetivo exemplificar a utilização do método preDispatch() através da sobrescrita por uma classe extendida do Zend_Controller_Action.

No formulario criado pelo Zend_Form, como exemplo a seguir, setAction será atribuído com a baseUrl + Controller + Action:



$form = new Zend_Form();

$form->setAction($this->baseUrl.'/usuario/cadastrar')
->setMethod('post');

$form->addElement('text','username',array(
'validators' => array(
'alnum',
array('regex', false, '/^[a-z]/i')
),
'required' => true,
'filters' => array('StringToLower'),
));

$form->addElement('submit','Enviar');

echo $form->render();



Percebam que a baseUrl foi passada através de do atributo $this->baseUrl. Uma maneira de passar a baseUrl seria no UsuarioController, na cadastrarAction(), conter o seguinte comando:


$this->baseUrl = $this->getFrontController()->getBaseUrl();
$this->view->baseUrl = $this->baseUrl;


Desta maneira seria possível passar no formulário apenas $this->baseUrl. Porém em todos os Controllers e Actions deveria ter as duas linhas de comando acima. Para que isto não seja necessário devemos utilizar o método preDispatch() do Zend_Controller_Action. Aonde para cada Action chamada será executado o método em questão. Uma maneira de sobrescrever é criar uma classe genérica, em que todas os controllers deverão extender desta classe. A classe genérica deverá extender a classe Zend_Controller_Action.

GenericoController.php:



class GenericoController extends Zend_Controller_Action {

private $baseUrl;

/** Este método é uma sobrescrita do preDispatch() do Zend_Controller_Action
*
* @see app/zf/Zend/Controller/Zend_Controller_Action#preDispatch()
*
* Será executado antes de qualquer chamada a um Action do Controller
*
*/
public function preDispatch() {
$this->baseUrl = $this->getFrontController()->getBaseUrl();
$this->view->baseUrl = $this->baseUrl;
}

}


Espero ter ajudado!

Atenciosamente,
Rondson Lima

quarta-feira, 20 de maio de 2009

PostgreSQL - Como converter data (timestamp) para o formato Brasileiro - BRT

A seguir apresento duas maneiras de converter data através de uma consulta SQL:

1) É utilizado a função date_part que retorna parte de uma data conforme parâmetro informado.

modo 1:


SELECT date_part('day',now()) || '/' || date_part('month',now()) || '/' || date_part('year', now())


resultado: "20/5/2009"

2) É utilizado a função to_char que converte a data informada pelo timestamp (data e hora atual) para o formato informado no segundo parâmetro da função.

modo 2:


SELECT to_char(timestamp 'now', 'DD/MM/YYYY)


resultado: "20/05/2009"


fonte: http://www.postgresql.org/docs/6.3/static/c10.htm

Atenciosamente,
Rondson Lima

segunda-feira, 11 de maio de 2009

Decodificar dados codificados com MIME base 64

Prezados,

Caso deparem-se com dados codificados na base 64 e necessitem decodificar. Apresento-lhes duas maneiras:
1 - PHP:


$base64 = 'JVBERi0xLjMKJZKgoooKNCAwIG9iago8PC9UeXBlL1hPYmplY3QKL1N1YnR5cGUvSW1hZ2UK
MDc3MjA4MiAwMDAwMCBuIAowMDAwNzcyMTk0IDAwMDAwIG4gCjAwMDEwMDYxNjggMDAwMDAg
biAKMDAwMTAwNjI4OSAwMDAwMCBuIAowMDAxMDA2MzA4IDAwMDAwIG4gCjAwMDEwMDYzNzUg
MDAwMDAgbiAKMDAwMTAwNjQ4NyAwMDAwMCBuIAowMDAxMjU1MTk2IDAwMDAwIG4gCjAwMDEy
NTUzMTcgMDAwMDAgbiAKMDAwMTI1NTMzNiAwMDAwMCBuIAowMDAxMjU1NDAzIDAwMDAwIG4g
CjAwMDEyNTU1MTUgMDAwMDAgbiAKMDAwMTQ4NzQyNiAwMDAwMCBuIAowMDAxNDg3NTQ3IDAw
MDAwIG4gCjAwMDE0ODc1NjYgMDAwMDAgbiAKMDAwMTQ4NzYzMyAwMDAwMCBuIAowMDAxNDg3
NzQ1IDAwMDAwIG4gCjAwMDE3NTQ0MjcgMDAwMDAgbiAKMDAwMTc1NDU0OCAwMDAwMCBuIAow
MDAxNzU0NTY3IDAwMDAwIG4gCjAwMDE3NTQ2MzQgMDAwMDAgbiAKMDAwMTc1NDc0NiAwMDAw
MCBuIAowMDAxOTc1NDUwIDAwMDAwIG4gCjAwMDE5NzU1NzEgMDAwMDAgbiAKMDAwMTk3NTU5
MCAwMDAwMCBuIAowMDAxOTc1NjU3IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA0NAovSW5m
byAzIDAgUgovUm9vdCAyIDAgUgo+PgpzdGFydHhyZWYKMTk3NTk3MwolJUVPRgo=';

echo base64_decode($base64);
?>


Na string acima não inseri todos os caracteres porque este é muito extenso, mas o conteúdo completo retornaria um arquivo pdf.

2 - Online:
No site: http://www.opinionatedgeek.com/dotnet/tools/Base64Decode/ é possível decodificar dados na base 64. Insira no textarea o conteúdo clique em 'decode', aparecerá uma caixa de diálogo para salvar o arquivo. Ao efetuar o download substitua a extensão do arquivo para a original. Exemplo:
arquivo baixado: 'attachment.bin'
arquivo alterado: 'attachment.pdf'

Atenciosamente,
Rondson Lima

quinta-feira, 7 de maio de 2009

PHP - Como importar automaticamente todas as classes

Para quem não deseja efetuar importação das classes necessárias em cada classe em edição, há uma função php "__autoload()" responsável por realizar a importação de todas as classes automaticamente, conforme código a seguir.

index.php:


/**
* Método responsável por carregar todas as classes presentes no projeto.
* Desta maneira não é necessário realizar a importação individual de classes.
*
* @param unknown_type $class_name
*/
function __autoload($class_name) {

// Inserir os diretórios no path
set_include_path('.'
.PATH_SEPARATOR.'./controller'
.PATH_SEPARATOR.'./model/'
.PATH_SEPARATOR.'./view/'
.PATH_SEPARATOR.get_include_path());

// Importar as classes
require_once $class_name . '.php';
}

?>


Dependendo das necessidades há outros exemplos no endereço abaixo:
fonte: php.net

quarta-feira, 29 de abril de 2009

Bíblia On-line

Prezados,

Conheçam um serviço disponibilizado pela Arca Universal, trata-se do Bíblia On-line. Neste vocês poderão consultar todos os livros e versículos da bíblia, para utilizar é muito simples:

Selecione o testamento, ou opte por toda a bíblia, escolha o livro e o capítulo e clique em buscar. Há outras opções de busca como também pela palavra.

Este serviço está disponível nos idiomas português e inglês.

link: http://biblia.arcauniversal.com/bibliaServlet?metodoAlvo=iniciar

Atenciosamente,
Rondson Lima

segunda-feira, 1 de setembro de 2008

Instalação do Ubuntu 8.4 no Windows XP com Virtual Box

Neste tutorial será apresentado os procedimentos para a instalação e configuração de uma máquina virtual utilizando VirtualBox no Windows XP, e posteriormente a criação do ambiente para a instalação do Ubuntu 8.04.1.

VirtualBox - Instalação:

1. Faça o download do VirtualBox e Ubuntu através dos links:
http://dlc.sun.com/virtualbox/vboxdownload.html#windows Versão 2.0.6
http://www.ubuntu-br.org/download Versão 8.04

2. A instalação é muito simples. As configurações serão realizadas na execução do virtualizador.

3. Após a instalação inicie o VirtualBox em iniciar > programas > Sun xVM VirtualBox > VirtualBox. Deverá aparecer uma tela conforme a seguir:
VirtualBox - Criação da máquina virtual:

1. Clique em Novo, será aberto um assistente para ajudar na criação da máquina virtual, clique em Próximo.

2. Na tela seguinte escreva um nome para a máquina virtual, como sugestão: Ubuntu 8.4; escolha o Tipo do Sistema, neste caso selecione Ubuntu e clique em Próximo.

3. Selecione a quantidade de memória para a máquina virtual, no meu caso foi recomendado 256 MB para a memória principal. Clique em Próximo.

4. A tela seguinte “Disco Rígido Virtual”, crie uma imagem de disco virtual clicando em novo, o assistente irá direcioná-lo à criação de discos rígidos virtuais, clique em Próximo, selecione “Imagem dinâmica expansível” e clique em próximo, será sugerido pelo assistente o tamanho inicial do disco virtual, 8 GB, caso deseje pode alterar o tamanho da imagem. Clique em Próximo e Finalizar.

5. Depois da criação da máquina virtual, selecione-a e clique em Próximo e Finalizar. Se ocorreu tudo bem, a máquina virtual foi criada conforme imagem a seguir:
6. Se a instalação do Ubuntu ocorrer a partir do CD ou DVD, clique em CD/DVD-ROM e selecione a unidade de origem do CD/DVD-ROM, não esqueça de inserir o CD no drive. Se a instalação partir de uma imagem ISO, selecione o local da imagem.

VirtualBox - Configuração da máquina virtual

1. Na janela da máquina virtual, aparece uma mensagem para configuração do atalho no teclado, que pode ser alterada em Arquivo > Preferências, na guia Entrada.

Ubuntu - Instalação

1. Clique em Iniciar, para inicializar a máquina virtual, neste momento é simulado um boot no sistema.

2. Aguarde um pouco e deverá aparecer uma tela conforme a seguinte:
3. Escolha o idioma e Selecione “Testar o Ubuntu sem qualquer mudança no seu computador” e tecle Enter, aguarde um pouco, aparecerá a janela inicial do Ubuntu:
Neste ponto se você estiver conectado à Internet, na instalação do Ubuntu serão instaladas as atualizações e correções do sistema.

4. Dê dois cliques no ícone “Instalar o sistema no computador” e aguarde. A instalação do Ubuntu é simples e rápida. Escolha o idioma e clique em Avançar, escolha o fuso horário, a hora pode ser alterada após a instalação. Verifique se o teclado está configurado, teste algumas teclas ç ã í.

5. Será iniciado o particionador, que reconhecerá o disco rígido virtual, escolha “Assistido - usar disco inteiro” e clique em Avançar. Preencha os campos na tela “Quem é você”, atribuindo um nome de usuário, senha e nome do computador.

6. Será mostrada uma tela com o resumo da instalação, clique em Instalar. Aguarde o progresso da instalação.

Não se esqueça que após a finalização da instalação você deve desabilitar a opção de boot pelo CD/DVD-ROM no VirtualBox, em Configurações > CD/DVD-ROM > Montar Drive de CD/DVD.

Qualquer dúvida poste seu comentário.

quarta-feira, 6 de agosto de 2008

Tutorial PHP - Como inserir data dinâmica em seu site

Apresento um breve tutorial para inserção de data, com atualização automática, em sites com suporte à linguagem PHP.

Segue código:


function data_atual() {
$agora = time();
$data = getdate($agora);
$str = "Hoje é ";

if($data["wday"]==0) { echo $str . "domingo, "; }
elseif($data["wday"]==1) { echo $str . "segunda-feira, "; }
elseif($data["wday"]==2) { echo $str . "terça-feira, "; }
elseif($data["wday"]==3) { echo $str . "quarta-feira, "; }
elseif($data["wday"]==4) { echo $str . "quinta-feira, "; }
elseif($data["wday"]==5) { echo $str . "sexta-feira, "; }
elseif($data["wday"]==6) { echo $str . "sábado, "; }

if($data["mon"]==1) { $mes = "janeiro"; }
elseif($data["mon"]==2) { $mes = "fevereiro"; }
elseif($data["mon"]==3) { $mes = "março"; }
elseif($data["mon"]==4) { $mes = "abril"; }
elseif($data["mon"]==5) { $mes = "maio"; }
elseif($data["mon"]==6) { $mes = "junho"; }
elseif($data["mon"]==7) { $mes = "julho"; }
elseif($data["mon"]==8) { $mes = "agosto"; }
elseif($data["mon"]==9) { $mes = "setembro"; }
elseif($data["mon"]==10) { $mes = "outubro"; }
elseif($data["mon"]==11) { $mes = "novembro"; }
elseif($data["mon"]==12) { $mes = "dezembro"; }

if($data["mday"]==1) {
$data_atual = $data["mday"]."º de ".$mes." de ".$data["year"].".";
return $data_atual;
}

else {
$data_atual = $data["mday"]." de ".$mes." de ".$data["year"].".";
return $data_atual;
}
}

$hoje = data_atual();
echo $hoje;



O resultado seria: Hoje é quarta-feira, 6 de agosto de 2008.

sábado, 26 de julho de 2008

Tutorial Delphi - Construindo um menu com submenus e teclas de atalho passo a passo

Versão utilizada: Delphi 7

Ao abrir o Delphi automaticamente é criado um projeto padrão, caso contrário clique em File > New > Form

Deverá aparecer algo como:
Na paleta de componentes, na guia Standard, possui os componentes padrões que podem ser adicionados conforme a necessidade, somente é preciso clicar no componente e clicar na área disponível no Form1. Clique no componente:
(MainMenu)
e clique no centro do Form1. Aparecerá um ícone do menu, dê dois cliques.
Aparecerá o editor de design do menu, automaticamente e habilita o foco para edição dos nomes dos menus, faça o teste, apenas digite “&Arquivo” sem aspas + Enter. Deverá aparecer algo como:
Caso contrário, clique em Caption na janela Object Inspector (Inspetor de Objetos) conforme a seguir:
O & (e comercial) deve ser inserido antes da palavra que se deseja colocar como atalho. Quando a aplicação estiver em execução, basta teclar Alt + A, que o menu Arquivo será ativado.

Deixe o menu com esta estrutura:
Ainda no editor de design do menu, vamos criar um atalho do teclado com a combinação de teclas, clique no item Salvar do menu Arquivo, no Inspetor de Objetos, procure a propriedade Shortcut e selecione Ctrl+S, conforme exemplo:
Repita o mesmo procedimento demonstrado acima no item Imprimir, selecionando em ShortCut: Ctrl+P.

Agora nosso menu está com esta estrutura:
Vamos colocar um submenu em Ferramentas, clique com o botão direito em Exportar e clique em Create Submenu. Altere a propriedade Caption para PDF, repita o mesmo procedimento e crie outro submenu para HTML. Segue exemplo:
Pronto, agora aperte a tecla F9 para executar o aplicativo, se você seguiu os passos acima uma janela será aberta com o menu em funcionamento.

Posteriormente veremos com dar funcionalidade ao menu.

sexta-feira, 25 de julho de 2008

Coisas que todos precisam saber a respeito de um CARA DA INFORMÁTICA

1) O CARA DA INFORMÁTICA dorme. Pode parecer mentira, mas o CARA DA INFORMÁTICA precisa dormir como qualquer outra pessoa. Esqueça que ele tem celular e telefone em casa; ligue só para o escritório.

2) O CARA DA INFORMÁTICA come. Parece inacreditável, mas é verdade. O CARA DA INFORMÁTICA também precisa se alimentar e tem hora para isso.

3) O CARA DA INFORMÁTICA pode ter família. Essa é a mais incrível de todas. Mesmo sendo um CARA DA INFORMÁTICA, a pessoa precisa descansar no final de semana para poder dar atenção à família, aos amigos e a si próprio, sem pensar ou falar em informática, impostos, formulários, concertos e demonstrações, manutenção, vírus e etc.

4) O CARA DA INFORMÁTICA, como qualquer cidadão, precisa de dinheiro. Por essa você não esperava, né? É surpreendente, mas o CARA DA INFORMÁTICA também paga impostos, compra comida, precisa de combustível, roupas e sapatos, e ainda consome Lexotan para conseguir relaxar. Não peça aquilo pelo que não pode pagar ao CARA DA INFORMÁTICA.

5) Ler e estudar também é trabalho. E trabalho sério. Pode parar de rir. Não é piada. Quando um CARA DA INFORMÁTICA está concentrado num livro ou publicação especializada ele está se aprimorando como profissional, logo, trabalhando.

6) De uma vez por todas, vale reforçar: O CARA DA INFORMÁTICA não é vidente, não joga tarô e nem tem bola de cristal, pois se você achou isso, demita-o e contrate um PARANORMAL ou DETETIVE. Ele precisa planejar, se organizar e assim ter condições de fazer um bom trabalho, seja de que tamanho for. Prazos são essenciais e não um luxo. Se você quer um milagre, ore bastante, faça jejum, e deixe o pobre do CARA DA INFORMÁTICA em paz.

7) Em reuniões de amigos ou festas de família, O CARA DA INFORMÁTICA deixa de ser O CARA DA INFORMÁTICA e reassume seu posto de amigo ou parente, exatamente como era antes dele ingressar nesta profissão. Não peça conselhos, dicas. Ele tem direito de se divertir.

8) Não existe apenas um "levantamentozinho", uma "pesquisazinha", nem um "resuminho", um "programinha pra controlar minha loja", um "probleminha que a máquina não liga", um "sisteminha", uma "passadinha rápida" (aliás, conta-se de onde saímos e até chegarmos), pois esqueça os "inha e os inho" (programinha, sisteminha, olhadinha), pois os CARAS DA INFORMÁTICA não resolvem este tipo de problema. Levantamentos, pesquisas e resumos são frutos de análises cuidadosas e requerem atenção, dedicação. Esses tópicos podem parecer inconcebíveis a uma boa parte da população, mas servem para tornar a vida do CARA DA INFORMÁTICA mais suportável.

9) Quanto ao uso do celular: celular é ferramenta de trabalho. Por favor, ligue apenas quando necessário. Fora do horário de expediente, mesmo que você ainda duvide, O CARA DA INFORMÁTICA pode estar fazendo algumas coisas que você nem pensou que ele fazia, como dormir ou namorar, por exemplo.

10) Pedir a mesma coisa várias vezes não faz O CARA DA INFORMÁTICA trabalhar mais rápido. Solicite. Depois, aguarde o prazo dado pelo CARA DA INFORMÁTICA.

11) Quando o horário de trabalho do período da manhã vai até 12h, não significa que você pode ligar às 11:58 horas. Se você pretendia cometer essa gafe, vá e ligue após o horário do almoço (relembre o item 2). O mesmo vale para a parte da tarde: ligue no dia seguinte.

12) Quando O CARA DA INFORMÁTICA estiver apresentando um projeto, por favor, não fique bombardeando com milhares de perguntas durante o atendimento. Isso tira a concentração, além de torrar a paciência. ATENÇÃO: Evite perguntas que não tenham relação com o projeto, tipo como vocês entendem, é claro.

13) O CARA DA INFORMÁTICA não inventa problemas, não muda versão de Windows, não tem relação com vírus, NÃO É CULPADO PELO MAL USO DE EQUIPAMENTOS, INTERNET E AFINS. Não reclame! O CARA DA INFORMÁTICA com certeza fez o possível para você pagar menos. Se quer emendar, emende, mas antes demita O CARA DA INFORMÁTICA e contrate um QUEBRA GALHO.

14) Os CARAS DA INFORMÁTICA não são os criadores dos ditados "o barato sai caro" e "quem paga mal paga em dobro". Mas eles concordam.

15) Informática é referente à computadores, e não TVs, celulares e eletrodomésticos. Portanto, O CARA DA INFORMÁTICA não vai te ensinar a mexer no celular, consertar sua TV, etc.

16) E finalmente, O CARA DA INFORMÁTICA também é filho de Deus e não filho disso que você pensou.

17) Agora, depois de aprender sobre O CARA DA INFORMÁTICA, repasse aos seus amigos. Afinal, essas verdades precisam chegar a todos. O CARA DA INFORMÁTICA agradece!


Autor desconhecido.

Valeu Artiaga, por esta eu não esperava. Fala sério, você é o autor e não quer falar!

terça-feira, 15 de julho de 2008

Exibição de registros do banco de dados HSQLDB, utilizando a API JAVA "Swing"

Dando continuidade ao artigo anterior "Tutorial - Conexão com banco de dados HSQLDB utilizando JAVA", vou falar sobre como utilizar a pesquisa no banco de dados HSQLDB para apresentação em uma tabela denominada "JTable" da API Swing. Referente à consulta no banco, a classe "VetorPesquisa" armazena as linhas e colunas pesquisadas na tabela do banco de dados, nos vetores "linhas" e "colunas". Para que seja possível realizar a exibição dos dados registrados no banco, simplesmente podemos passar esses dados no momento da instância da tabela.

A classe JTable dispõe de sete construtores, utilizaremos o construtor passando como parâmetro os vetores criados pela consulta, conforme exemplo abaixo:
VetorPesquisa vetorApto = new VetorPesquisa();
tabApto = new JTable(vetorApto.getLinhas(), vetorApto.getColunas());
No momento da instância do objeto "tabApto", foi criado uma tabela que recebe as linhas seguidas das colunas, que por sua vez os vetores são oriundos da classe "VetorPesquisa" através dos métodos getLinhas() e getColunas() respectivamente. Em seguida é necessário apenas criar um JFrame e adicionar o componente tabApto e exibi-lo conforme exemplo a seguir:

Fonte: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTable.html

sexta-feira, 4 de julho de 2008

Certificado personalizado de participação no Recorde Mundial do Livro dos Recordes Guinness!

Aos participantes que colaboraram para o Mozilla Firefox 3 alcançar o Recorde Mundial do Livro dos Recordes Guinness, não esqueça de baixar o seu certificado personalizado.

Meu certificado:

Acesse também: