Pular para o conteúdo principal

Postagens

Desenvolvimento de aplicações para dispositivos móveis II (Java)

Dando continuidade ao post anterior, iremos criar nossa primeira aplicação, nosso Olá mundo, nada muito elaborado, apenas um passo a passo inicial, mostrando um pouco sobre a ferramenta e suas possibilidades. Iniciando... Com o NetBeans aberto vá em Arquivo->Novo Projeto, você verá a seguinte tela: Após escolher a categoria Moblity, defina o projeto como Aplicativo MIDP , clicando em próximo teremos: Defina o nome do projeto e os diretórios, não esqueça de desmarcar a caixa Criar MIDlet Olá, na tela seguinte teremos: No artigo anterior foi definido que nas matérias seguintes usaríamos o SDK Series 40 da nokia, sendo assim defina a plataforma do emulador (aparelho virtual para testar nossas aplicações), o dispositivo, as configurações ( CLDC -1.1) e o perfil (MIDP-2.0). Em seguida precisamos apenas avançar e finalizar a criação do projeto. Nosso projeto está pronto e aguardando o desenvolvimento de nossa primeira aplicação então vamos iniciar criando um novo arquivo (

Desenvolvimento de aplicações para dispositivos móveis I (Java)

O crescimento do potencial computacional dos dispositivos móveis como celulares, pda's entre outros, somado a preços baixos tem tornado essa área promissora. Dispositivos com diversos recursos de comunicação (bluetooth, infravermelho, GPRS) são comuns e praticamente itens obrigatórios, apesar do fato de que boa parte de seus futuros donos se quer saberão como ligar esses recursos. Considerando o grande numero de celulares no mundo precisamos apenas focar o nosso objetivo e começar os estudos. Em relação a aplicações corporativas a coisa fica ainda melhor, as operadoras tem oferecido cada vez mais planos muito atraentes para as empresas onde muitas vezes os aparelhos saem de graça ou a um preço muito baixo. Primeiramente... Trabalharemos utilizando o java como linguagem (já deu para perceber), o j2me para ser mais preciso, como ferramenta o NetBeans e para testar nossas aplicações o SDK da Nokia, o Series 40 pois meu celular é dessa série. Vamos baixar o Java SE Development

Como Verificar se um Objeto Existe (Delphi)

Em alguns momentos surge a necessidade de verificar se um determinado objeto existe, ou seja se já foi criado, principalmente quando se trabalha com criação dinâmica em tempo de execução, então vamos ao exemplo: - Vamos criar uma variável, um vetor do tipo caixa de texto: var Minha_caixa : array of TEdit; - Em seguida definir o tamanho desse vetor, no caso será dez: setLength(Minha_caixa, 10) - Agora iremos criar nossa caixa de texto: // lembrando que o vetor inicia em zero // logo o índice final é o tamanho total - 1 for vl_i := 0 to Length(Minha_caixa) -1 do begin Minha_caixa[vl_i] := TEdit.Create(self); with Minha_caixa[vl_i] do begin Parent := Self; Name := 'Caixa_N'+IntToStr(vl_i); Text := 'Esta é a '+IntToStr(vl_i)+' º caixa !'; ReadOnly := true; Height := 21; Width :=

Ler de um arquivo de configuração (.INI no Delphi)

Em muitos casos precisamos tornar nossas aplicações customizáveis, disponibilizando parâmetros que possam ser alterados, sejam eles informações a respeito de uma conexão com o banco de dados, uma senha, ou mesmo possibilitar a alteração do layout do sistema, tudo depende da necessidade e de como o programador pensa em termos de mobilidade para o usuário final. Exemplo de arquivo INI [PARAMETRO] SENHA=12345 Lendo um arquivo INI var // variável que irá conter o arquivo config : TIniFile; // variável que irá armazenar parâmetro a ser lido do arquivo param : string; begin // associa o arquivo de configuração a variável config := TIniFile.Create('C:\Aplicacao\config.ini'); //variável param recebe 12345 param := config.readstring('PARAMETRO','SENHA',''); end;

Introdução ao Eclipse (Java)

Introdução O projeto Eclipse.org nasceu da iniciativa de grandes empresas lideres em seus seguimentos, tais como Borland, IBM, QNX Software, Rational Software, Red Hat, Suse, Toghether Software (comprada pela Borland), Sybase e Fujitsu. Em fevereiro de 2004 o Eclipse.org tornou-se independente, ficando “ livre” da IBM. Apesar de ser uma IDE free e opensource, o Eclipse é bem completo, permitindo que seja feito nele tudo o que pode ser feito em uma IDE paga, claro, que em alguns casos com um grau de dificuldade maior, mas para atividades de desenvolvimento básicas como desenvolvimento em Swing, Jsp, Servlets ele atende muito bem, tem grandes facilidades para desenvolvimento de EJBs, mas nada que se compare ao Jbuilder da Borland neste quesito. O Eclipse é uma IDE que possui facilidades que vão desde a rápida visualização de todos os arquivos contidos no projeto, ferramentas de gerenciamento de trabalho coletivo, um Class browser ou Package Explorer, que permite visualizar toda a e

dbGrid zebrado (Delphi)

Quando utilizamos dbGrid e este recebe muitos registros fica dificil ler toda a linha, principalmente se possuimos um grande número de colunas, um recurso que podemos lançar mão para ao menos amenizar essa situação é o efeito "zebrado", onde temos linhas com cores diferentes, na verdade duas cores diferentes que se intercalam. Então vamos ao exemplo, no evento OnDrawColumnCell: if odd (ClientDataSet4.RecNo) then DBGrid1.Canvas.Brush.Color:= clmenubar else DBGrid1.Canvas.Brush.Color:= clCream; TDbGrid(Sender).Canvas.font.Color:= clBlack; if gdSelected in State then with (Sender as TDBGrid).Canvas do begin Brush.Color := clmoneygreen; FillRect(Rect); Font.Style := [fsbold] end; TDbGrid(Sender).DefaultDrawDataCell(Rect, TDbGrid(Sender).columns[datacol].field, State);

Palavra com a primeira letra em Maiúsculo (Delphi)

Para casos onde temos palavras que são armazenadas todas em maiúsculo, geralmente surge a necessidade de utiliza-la de uma maneira mais elegante, como o título sugere, então vamos lá: function Primeira_Letra_Maiuscula(p_texto: string): string; begin IF p_texto <> '' THEN result := UpperCase(Copy(p_texto,1,1))+LowerCase(Copy(p_texto,2,Length(p_texto))); end;

Consulta Top-N SQL Server

Esse tipo de consulta é útil em situações onde precisamos encontrar, por exemplo, os N maiores ou menores dentro de determinado grupo, os funcionários mais bem pagos, os que vendem mais, as mercadorias menos vendidas e assim por diante. No SQL Server utilizamos o predicado TOP para recuperar um determinado número de registros e ordenamos a consulta com o ORDER BY. Baixe aqui o script com a criação da tabela e os inserts para o teste. No exemplo abaixo desejamos encontrar os três funcionários que ganham mais: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC DESC Agora desejamos encontrar os três funcionários que possuem os menores salários: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC Podemos perceber que ambos os códigos são idênticos, precisamos apenas mudar a ordem na cláusula ORDER BY.

Centralizar Texto em Edit

Como todos sabemos o Edit mantém todo texto digitado a esquerda, o que não fica bem quando o usamos para a entrada de números, pois bem, o exemplo abaixo apresenta uma alternativa para centralizar um determinado valor dentro de um Edit: procedure EditChange(Sender: TObject); var vl_label : TLabel; //variável do tipo Label begin vl_label := TLabel.Create(self); //criamos um label WITH vl_label DO BEGIN Font.Name := TEdit(sender).Font.Name; //pegamos a fonte usada no edit Caption := TEdit(sender).Text; //pegamos o conteúdo do edit SendMessage(TEdit(sender).Handle, EM_SETMARGINS, EC_LEFTMARGIN, (TEdit(sender).Width-vl_label.Width) div 2); //centraliza no label e retorna para o edit END ; vl_label.Free; end ;

Remover pontos de nome de arquivo (Delphi)

O exemplo a seguir nos mostra como remover pontos de um nome de arquivo, deixando é claro o da extensão: procedure TForm1.Button1Click(Sender: TObject); var vl_a: integer; vl_i: integer; begin //verifica indice do ultimo ponto FOR vl_i:= Length(LabeledEdit1.Text) DOWNTO 1 DO BEGIN IF Copy(LabeledEdit1.Text, vl_i, 1) = '.' THEN BEGIN vl_a := vl_i; Break; END; END; //copia texto ignorando os pontos, exceto quando o ponto estiver no inidice encontrado //anteriormente FOR vl_i:= 1 TO Length(LabeledEdit1.Text) DO BEGIN IF ( Copy(LabeledEdit1.Text, vl_i, 1) <> '.' ) THEN LabeledEdit2.Text := LabeledEdit2.Text + Copy(LabeledEdit1.Text, vl_i, 1) ELSE IF ( vl_i = vl_a ) THEN LabeledEdit2.Text := LabeledEdit2.Text + Copy(LabeledEdit1.Text, vl_i, 1) END; end; Baixe o exemplo aqui .

Mover ponteiro do Mouse automaticamente (Delphi)

Em certas ocasiões desejamos fazer com que o usário veja determinada funcionalidade, ou mesmo tentamos indicar o melhor procedimento a tomar naquele momento, nada melhor como mover o ponteiro do mouse, já que concentramos certa atenção nele, então vamos ao exemplo: var vl_p: TPoint; begin vl_p.X := 315; vl_p.Y := 89; vl_p := ClientToScreen(vl_p); SetCursorPos(vl_p.X, vl_p.Y); end; Baixe o exemplo completo aqui .

Descobrir tipo do Arquivo (Delphi)

Segue um exemplo de como verificar o tipo de um determinado arquivo, digita-se o nome do arquivo juntamente com o caminho no Edit1, e ao clicar no botão o Edit2 recebe o tipo do arquivo: Function TipoArquivo(const p_File: String): String; var v_Inf: TSHFileInfo; begin IF SHGetFileInfo(PChar(p_File),0,v_Inf,Sizeof(v_Inf),SHGFI_TYPENAME) <> 0 THEN Result := StrPas(v_Inf.szTypeName) ELSE BEGIN Result := ExtractFileExt(p_File); Delete(Result,1,1); Result := Result +' File'; END; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := TipoArquivo(Edit1.Text); end; Baixe o exemplo aqui .

Trigger no Mysql

Uma trigger é um objeto de banco de dados associado a uma tabela, e de acordo com uma determinada ação executada nesta tabela a trigger é executada. Sintaxe: DELIMITER | CREATE TRIGGER trigger_nome -- nome da trigger trigger_tempo -- quando a trigger dispara(AFTER, BEFORE) trigger_evento -- evento que a dispara(INSERT, UPDATE, DELETE) ON tabela_nome -- tabela que a trigger faz referência FOR EACH ROW -- deve ser disparada para todos os registros trigger_comandos END; | DELIMITER ; Exemplo: DELIMITER | CREATE TRIGGER log_usuario AFTER INSERT ON usuarios FOR EACH ROW BEGIN INSERT INTO log SET user_id=NEW.id, data=NOW(); END; | DELIMITER ; Nesse exemplo foi criada uma trigger de log , que para cada inserção na tabela usuarios insere também um registro na tabela log .

Mudar Cursor de Edit Criado Dinamicamente

Temos o seguite caso, devemos criar Edits em tempo de execução, onde sempre que o ponteiro do mouse passar por um Edit, seja ele qual for, o ponteiro do Mouse deve mudar, apresentando dois tipos distintos, um para o caso do Edit estar vazio e outro quando ele estiver preenchido, além do fato de que quando um certo formulário for aberto o conteúdo do Edit selecionado deve ir para um Edit do novo formulário, segue abaixo o código, ou baixe aqui o exemplo: var Form1 : TForm1; Edt : TEdit; Cont : integer = 1; vLeft : integer = 8; vTop : integer = 40; vWidth : integer = 81; vHeight: integer = 21; vSelect: string; implementation uses Unit2; {$R *.dfm} procedure TForm1.criaEdt(p_left: integer; p_top: integer; p_width: integer; p_nome: string); begin Edt := TEdit.Create(Self); WITH Edt DO BEGIN Parent := Self; Left := p_left; Top := p_top; Width := p_width; Height := 21; Name := 'A'+p_nome; OnMouseMove:= EdtMouseMov

Manipular o Registro do Windows

Algumas vezes surge a necessidade de se utilizar os valores do registro do windows, então em primeiro lugar devemos ter em mente exatamente qual a chave devemos procurar, no nosso exemplo vamos buscar o nome do usuário logado no windows, então vamos ao exemplo: var objRegistro : TRegistry; begin vl_objRegistro := TRegistry.Create; TRY vl_objRegistro.RootKey := HKEY_CURRENT_USER; IF vl_objRegistro.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer', True) THEN Edit.Text := UpperCase( vl_objRegistro.ReadString('Logon User Name') ); FINALLY objRegistro.Free; END; end;

Inserir e retirar itens de ListBox

Nesse exemplo temos uma lista de itens em um ComboBox e quando clicamos no botao inserir o ListBox é verificado, caso não haja um item igual ele insere, e o botao remove faz o oposto, verifica se o item existe, caso exista ele é removido. Baixe aqui o exemplo. procedure TForm1.InserirClick(Sender: TObject); var v_i: integer; v_a: boolean; begin //VERIFICA SE JÁ EXISTE ALGUM ITEM IGUAL, SE TIVER NÃO INSERE TRY FOR v_i := 0 TO ListBox1.Items.Count-1 DO BEGIN IF ComboBox1.Text = ListBox1.Items[v_i] THEN BEGIN v_a := TRUE; Break; END ; END ; IF v_a = FALSE THEN ListBox1.Items.Add(ComboBox1.Text); EXCEPT END ; end; procedure TForm1.RemoverClick(Sender: TObject); var v_i: integer; begin //VERIFICA SE JÁ EXISTE ALGUM ITEM IGUAL, SE TIVER DELETA TRY FOR v_i := 0 TO ListBox1.Items.Count-1 DO BEGIN IF ComboBox1.Text = ListBox1.Items[v_i] THEN ListBox1.Items.Delete(v_i); END ; EXCEPT END ; end ;

Armazenando BMP's em arquivo de recurso ".RES"

1. Crie um arquivo texto, com um nome qualquer e a extensão ".RC", para o exemplo usaremos "RECURSO.RC". Nesse arquivo digite o seguinte: GRAFICO BITMAP "C:\Imagens\Grafico.bmp" Lembrando que para cada imagem teremos uma linha. 2. Após salvar o arquivos devemos Compilar o mesmo usando o programa BRCC32.EXE localizdo no diretorio BIN do Delphi, feito isso, sera gerado o arquivo RECURSO.RES. 3. Na Unit que usará o recuro devemos colocar o seguinte: {$R RECURSOS.RES} Para usar a imagem contida no arquivo de recurso precisamos apenas criar uma variavel do tipo bitmap e depois executar o seguinte comando: VarTipoTBitmap:= LoadBitmap(HInstance,'BITMAP_1');

Consulta Top-N Oracle

Esse tipo de consulta é útil em situações onde precisamos encontrar, por exemplo, os N maiores ou menores dentro de determinado grupo, os funcionários mais bem pagos, os que vendem mais, as mercadorias menos vendidas e assim por diante. Para conseguirmos isso no Oracle precisaremos implementar uma consulta interna (ou view em linha), que irá retornar todos os registros necessários, e na consulta externa iremos limitar a exibição num total desejado. Baixe aqui o script com a criação da tabela e os inserts para o teste. No exemplo abaixo desejamos encontrar os três funcionários que ganham mais: SELECT NOME, SALARIO FROM ( SELECT FU.NOM_FUNC NOME, FU.SAL_FUNC SALARIO FROM FUNCIONARIOS FU ORDER BY FU.SAL_FUNC DESC ) WHERE ROWNUM <= 3 Agora desejamos encontrar os três funcionários que possuem os menores salários: SELECT NOME, SALARIO FROM ( SELECT FU.NOM_FUNC NOME, FU.SAL_FUNC SALARIO FROM FUNCIONARIOS FU ORDER BY FU.SAL_FUNC ) WHERE ROWNUM <= 3 P

Java

Em 1991, na Sun Microsystems, foi iniciado o Green Project , o berço do Java, uma linguagem de programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia. Para provar a viabilidade desta idéia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de Sand Hill Road no Menlo Park com uma demonstração funcional da idéia inicial. O protótipo se chamava *7 (leia-se “StarSeven”), um controle remoto com uma interface gráfica touchscreen . Para o *7, foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudando e ensinando

SQL Server

Em 1988 a Microsoft lançou sua primeira versão do SQL Server. Ela foi desenvolvida para a plataforma OS/2 juntamente com a Microsoft e a Sybase. Durante os anos 90 a Microsoft iniciou o desenvolvimento de uma versão para a plataforma NT. Enquanto o SQL Server estava sendo desenvolvido a Microsoft decidiu que ele deveria ser uma camada encapsulada sobre o sistema operacional NT. Em 1992 a Microsoft assumiu a responsabilidade maior sobre o futuro do SQL Server para o NT. Em 1993 o Windows NT 3.1 e o SQL Server 4.2 para NT foram lançados. A filosofia da Microsoft em combinar um banco de alta performance com uma interface fácil de usar mostrou-se um sucesso. Microsoft rapidamente tornou-se o segundo mais popular vendedor de softwares de bancos de dados relacionais. Em 1994 a Microsoft e a Sybase formalmente encerraram sua parceria. Em 1995 a Microsoft lançou a versão 6.0 do SQL Server. Esse lançamento foi uma das maiores rescritas da tecnologia SQL Server. A versão 6.

Oracle

O Oracle é um SGBD (sistema gerenciador de banco de dados) que surgiu no fim dos anos 70, quando Larry Ellison vislumbrou uma oportunidade que outras companhias não haviam percebido, quando encontrou uma descrição de um protótipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia. Ellison e os co-fundadores da Oracle Corporation, Bob Miner e Ed Oates, perceberam que havia um tremendo potencial de negócios no modelo de banco de dados relacional tornando assim a maior empresa de software empresarial do mundo. O SGBD da Oracle é líder de mercado. O Oracle 9i foi pioneiro no suporte ao modelo web. O Oracle 10g, mais recente, se baseia na tecnologia de grid. Recentemente fora lançado o Oracle 11g que veio com melhorias em relação ao Oracle 10g. Além da base de dados, a Oracle desenvolve uma suíte de desenvolvimento chamada de Oracle Developer Suite, utilizada na construção de programas de computador que

MySQL

Criado na Suécia por dois suecos e um finlandês: David Axmark, Allan Larsson e Michael "Monty" Widenius, que têm trabalhado juntos desde a década de 1980. Hoje seu desenvolvimento e manutenção empregam aproximadamente 70 profissionais no mundo inteiro, e mais de mil contribuem testando o software, integrando-o a outros produtos, e escrevendo a respeito dele. O sucesso do MySQL deve-se em grande medida à fácil integração com o PHP incluído, quase que obrigatoriamente, nos pacotes de hospedagem de sites da Internet oferecidos atualmente. Empresas como Yahoo! Finance, MP3.com, Motorola, NASA, Silicon Graphics e Texas Instruments usam o MySQL em aplicações de missão crítica. A Wikipédia é um exemplo de utilização do MySQL em sites de grande audiência. Hoje suporta Unicode, Full Text Indexes, replicação, Hot Backup, GIS, OLAP e muitos outros recursos. O MySQL faz parte da empresa Sun Microsystems que "criou" o Java. A Sun pagou uma quantia de 1 bilhão de dólare

Delphi

O Delphi foi lançado em 1995 para a plataforma Windows 16 bits, foi o primeiro a ser descrito como ambiente RAD (em português, Desenvolvimento Rápido de Aplicações). A segunda versão, lançada um ano depois, já produzia aplicativos para a plataforma Windows 32 bits, sendo que uma versão em C++ - o C++ Builder - surgiu alguns anos depois. Em 2001, uma versão para plataforma Linux, conhecida como Kylix, foi disponibilizada. Em 2002, foi lançada uma nova versão compatível com Linux (através do Kylix e a paleta de componentes CLX ), sendo que em 2003 o Delphi 8 passou a incluir suporte para desenvolvimento de aplicações .NET. No final de 2004 foi lançada a versão Delphi 2005 (correspondente a versão 9), com suporte, na mesma IDE, ao desenvolvimento para plataformas Windows 32 bits e Windows .NET, além de integrar no mesmo ambiente de desenvolvimento a possibilidade de se desenvolver utilizando o ambiente do Delphi, C++ Builder ou C#. No final de 2005 foi lançada a versão Delphi 200

Interação Cliente/Servidor sem Conexão com Datagramas (Java)

A transmissão sem conexão com datagramas é parecida com a maneira como a correspondência é transportada através do serviço postal. Se uma mensagem grande não couber em um envelope, você a divide em partes de mensagem separadas que você coloca em envelopes separados, numerados seqüencialmente. Cada uma das cartas é, então, remetida ao mesmo tempo. As cartas podem chegar em ordem, fora da ordem, ou não chegar (pouco provável). O receptor monta novamente os pedaços da mensagem na ordem seqüencial antes de tentar dar sentido a mensagem. Se a mensagem é suficientemente pequena para caber em um envelope, não há necessidade de se preocupar com a questão seqüencial. A classe Servidor A classe Server_D define dois DatagramPackets que o servidor utiliza para enviar e receber informações e um DatagramSocket que envia e recebe esses pacotes. O construtor para a classe Server_D cria a interface gráfica com o usuário na qual os pacotes de informação serão exibidos. Em seguida, o construtor cri