Dicas de VBA – Personalizar o Friso II

Dicas de VBA – Personalizar o Friso II

Criado por Paulo Silva em 18 de Outubro de 2011 | 10 comentários

Por Jorge Paulino para o Pplware

No primeiro artigo sobre a personalização do friso (ribbon) foi mostrado como criar um novo separador e um novo grupo com dois controlos, neste caso, dois botões.

Mas podemos utilizar inúmeros controlos de modo a tornar as opções mais simples para o utilizador. Como referido também no artigo anterior, este é o esquema base para construção do friso:

<group id=”Group1? label=”myCheckBox Group”>
<checkBox id=”cb1? label=”Opção A” onAction=”cbGetDescription” />
<checkBox id=”cb2? label=”Opção B” onAction=”cbGetDescription” />
<checkBox id=”cb3? label=”Opção C” onAction=”cbGetDescription” />
<checkBox id=”cb4? label=”Opção D” onAction=”cbGetDescription” />
<checkBox id=”cb5? label=”Opção E” enabled=”false” />
<checkBox id=”cb6? label=”Opção F” enabled=”false” />
</group>

O próximo código XML apresentado irá ser colocado dentro da tab com o ID “customTab1”

Vamos ver então alguns controlos, alguns eventos, designados por callbacks, e algumas opções mais avançadas!

Para criar um grupo com caixas de selecção (checkboxes), no primeiro grupo(myCheckBox Group), podemos o fazer da seguinte forma:

<group id="Group1" label="myCheckBox Group">
<checkBox id="cb1" label="Opção A" onAction="cbGetDescription" />
<checkBox id="cb2" label="Opção B" onAction="cbGetDescription" />
<checkBox id="cb3" label="Opção C" onAction="cbGetDescription" />
<checkBox id="cb4" label="Opção D" onAction="cbGetDescription" />
<checkBox id="cb5" label="Opção E" enabled="false" />
<checkBox id="cb6" label="Opção F" enabled="false" />
</group>

Neste caso estamos a criar um grupo, onde vamos ter várias checkboxes (6). As primeiras quatro estão a chamar o callback cbGetDescription(), onde irmos depois verificar qual a opção seleccionada, e as duas últimas estão desabilitadas para efeitos de demonstração.

No callback (evento) cbGetDescription() podemos usar o seguinte código:

Sub cbGetDescription(control As IRibbonControl, pressed As Boolean)      
Select Case control.id          
Case "cb1"              
MsgBox "Opção A - Seleccionada: " & pressed          
Case "cb2"              MsgBox "Opção B - Seleccionada: " & pressed          
Case "cb3"              MsgBox "Opção C - Seleccionada: " & pressed          
Case "cb4"              MsgBox "Opção D - Seleccionada: " & pressed          
End Select  
End Sub

No segundo grupo (MyDrops Group) estão dois controlos de selecção: Combobox e DropDown. A diferença entre ambos é que na Combobox é possível alterar o texto enquanto na DropDown não. Neste exemplo, e para mostrar diferentes formas de carregamento de dados, na Combobox estão já definidos alguns itens e a DropDown será preenchida dinamicamente com dados de um Array definido no código.

O XML para a sua criação será então o seguinte:

<group id="Group2" label="myDrops Group">      
<comboBox id="cboItems" label="ComboBox:" onChange="cboOnChange">          
<item id="item1" label="Item 1" />          
<item id="item2" label="Item 2" />          
<item id="item3" label="Item 3" />      
</comboBox>      
<dropDown id="dropDynamic" label="Dropdown:"onAction="ddOnAction"  getItemLabel="ddGetItemLabel"                  
getItemCount ="ddGetItemCount" >      
</dropDown>  
</group>

Como código para a Combobox podemos definir então:

Sub cboOnChange(control As IRibbonControl, text As String)
MsgBox "Texto seleccionado: " & text
End Sub

Isto irá mostrar uma mensagem com o texto seleccionado ou inserido.

Para a DropDown o código é ligeiramente mais complexo!

Para começar vamos adicionar na primeira linha do XML o atributo onLoad definindo desta forma que quando o friso é iniciado iremos executar determinado código (poderia ser feito também no evento Workbook_Open).

<customUI xmlns=<a href="http://schemas.microsoft.com/office/2009/07/customui">http://schemas.microsoft.com/office/2009/07/customui</a> 
onLoad="RibbonLoad">

Desta forma vamos executar o callback RibbonLoad() na inicialização do friso, onde iremos carregar alguns valores no array. Estes valores vão ser utilizados pelos métodos GetItemLabel() e GetItemCount() como é possível ver no seguinte código/comentários.

Private paises(4) As String 
Private x As Integer
Sub RibbonLoad(ribbon As IRibbonUI) 
paises(0) = "Portugal" 
paises(1) = "Espanha" 
paises(2) = "França" 
paises(3) = "Alemanha" 
paises(4) = "Inglaterra" 
End Sub
 ' Mostra a determinada posição do array de acordo com o índex recebido 
Sub ddOnAction(control As IRibbonControl, id As String, index As Integer) 
MsgBox paises(index), vbInformation
End Sub
 ' Este evento é chamado uma vez por cada posição na lista, definido no
 ' evento ddGetItemCount(). Desta forma, quando o evento é executado, colocamos 
 ' um valor de cada posição do array e incrementamos o contador de posição
Sub ddGetItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
returnedVal = paises(x)   x = x + 1 
End Sub
' Define o número de itens a aparecer na lista 
 Sub ddGetItemCount(control As IRibbonControl, ByRef returnedVal) 
 returnedVal = UBound(paises) + 1 </em>
 End Sub

O terceiro e último grupo (myMisc Group) tem diferentes controlos para mostrar mais algumas das possibilidades disponíveis (não todas, obviamente). O XML é um pouco extenso mas será explicado de seguida:

<group id="Group3" label="myMisc Group">     <gallery id="MonthGallery" label="Escolher mês usando uma Gallery:"                 columns="3" rows="4" onAction="SetMonth" ></em>         <item id="m01" label="Janeiro"/></em>         <item id="m02" label="Fevereiro"/></em>         <item id="m03" label="Março"/></em>         <item id="m04" label="Abril"/></em>         <item id="m05" label="Maio"/></em>         <item id="m06" label="Junho"/></em>         <item id="m07" label="Julho"/></em>         <item id="m08" label="Agosto"/></em>         <item id="m09" label="Setembro"/></em>         <item id="m10" label="Outubro"/></em>         <item id="m11" label="Novembro"/></em>         <item id="m12" label="Dezembro"/></em>
         <button id="mActual" imageMso="CalendarToolSelectDate" 
                      label="Mês Actual" onAction="SetCurrentMonth" />
      </gallery>
     <editBox id="EditBox1" label="Texto a pesquisar:" onChange="EditBoxOnChange" 
                   imageMso="FindAllDownloadedDocuments" />
     <separator id="separator1"/> 
     <toggleButton id="toggleActivar" label="Activar/Desactivar" 
                           imageMso="AcceptTask" getPressed="toggleGetPressed" 
                           onAction="toggleOnAction" />
     <menu id="Menu1" label="Menu Opções Sistema" itemSize="normal"> 
          <button idMso="Cut"/> 
          <button idMso="Copy"/> 
          <button idMso="Paste"/>
          <menuSeparator id="menuSeparator1" title="Mais opções ..."/>
          <menu id="SubMenu1" label="Ficheiro"> 
                <button idMso="FileSave"/> 
                <button idMso="FileSaveAs"/> 
                <button idMso="FileOpen"/> 
                <button idMso="FileClose"/> 
          </menu> 
          <menu id="SubMenu2" label="Diversos"> 
                <button idMso="FileExit"/> 
          </menu> 
      </menu> 
     <dialogBoxLauncher> 
              <button id="Launcher1" screentip="My Launcher" 
                          onAction="ThisWorkbook.LauncherCode" /> 
      </dialogBoxLauncher> 
     </group>

Para começar uma galeria (Gallery) onde estamos a definir os diferentes meses do ano. Aqui podemos indicar quantas linhas e colunas queremos, assim como utilizar outros controlos. No código XML está definido no final um botão que irá escolher o mês actual.

O código associado é muito simples:

' Mostra o mês de acordo com o index recebido
Sub SetMonth(control As IRibbonControl, id As String, index As Integer)
    MsgBox MonthName(index + 1)
End Sub
 ' Mostra o mês por extenso do mês actual 
Sub SetCurrentMonth(control As IRibbonControl)
    MsgBox MonthName(Month(Now))
End Sub

De seguida temos uma EditBox que permite o utilizador escrever algum texto. No código basta simplesmente mostrar o resultado no callback EditBoxOnChange():

Sub EditBoxOnChange(control As IRibbonControl, text As String)
    MsgBox "O texto indicado foi: " & text, vbInformation
End Sub

Depois um separador e um botão retentivo (toggle button), ou seja, quando pressionado fica seleccionado e quando pressionado novamente perde a selecção.

No código do toggle button mostramos apenas o estado no callback onAction() e definimos também, no callback getPressed(), o estado inicial quando o friso é inicializado.

<em>' Quando o botão (toggle) é pressionado mostra o estado</em>
 <em> Sub toggleOnAction(control As IRibbonControl, pressed As Boolean)</em>
 <em>     MsgBox "Controlo: " & control.id & " - Pressionado: " & pressed</em>
 <em> End Sub</em>
 ' Define o estado inicial do botão
  Sub toggleGetPressed(control As IRibbonControl, ByRef returnedVal)
      returnedVal = True
  End Sub

Depois, no próximo controlo utilizado, não existe qualquer código associado pois estamos a definir funções de sistema através da atribuição de um idMso. Isto significa que cada opção que colocarmos no menu, que poderá ser colocado em outro controlo, irá executar a função que o sistema está preparado para o fazer (save, save as, copy, cut, etc).

Desta forma, podemos colocar no nosso friso algumas opções já existentes no Excel e que podem ser úteis. A lista dos ID’s (idMso) que podemos utilizar pode ser descarregada aqui:

O último controlo, embora meio escondido e disponível no canto inferior direito do grupo, é um DialogBox Launcher que permite simplesmente lançar uma janela com opções relacionadas com o respectivo grupo.

O código pode então mostrar uma mensagem, chamar um userform, etc. Neste exemplo irá mostrar apenas uma mensagem, mas tem uma particularidade, que se aplica a todos os controlos. No XML está definido para o callback onAction() o método ThisWorkbook.LauncherCode. Isto significa que o seguinte código tem de estar localizado no ThisWorkbook para funcionar, pois está a ser apontado para tal.

Sub LauncherCode(control As IRibbonControl)     MsgBox "Mais opções ..."
  End Sub

Podemos apontar para módulos específicos, worksheets, etc.

NOTA IMPORTANTE: Caso o XML não esta correcto (tags inválidas, tags não fechadas, etc) o separador não ficará visível.

E são alguns exemplos que mostram como personalizar o friso e como utilizar o código para cada controlo. Existem muito mais opções para cada controlo e muito mais controlos. Para complementar estes dois pequenos artigos podem ver os seguintes links, que além de um PDF que podem descarregar gratuitamente, podem consultar online:

Podem ainda descarregar o ficheiro de exemplo utilizado neste artigo: download

Arquivado na categoria: Programação

Alternativas grátis às aplicações mais utilizadas II

Alternativas grátis às aplicações mais utilizadas II

Criado por Pedro Pinto em 3 de Outubro de 2011 | 65 comentários

Por João Nascimento para o PPLWARE
Depois de alguns comentários aqui sobre o primeiro post sobre: “Alternativas grátis às aplicações mais utilizadas”, surgiu a ideia de criar outro post sobre o mesmo assunto mas recolhendo as opiniões dos comentários dos leitores, que foram ricos e produtivos em material para escrever este novo post.

Todas as aplicações foram devidamente analisadas e testadas algumas das suas funcionalidades com o objectivo de avaliar se deveriam ou não constar da lista.

free_00

Aqui deixamos então a segunda versão das aplicações gratuitas que podem substituir as aplicações mais utilizadas.

Escritório

Aplicação
Plataforma



Substituto
Windows
Linux
Mac

Microsoft Office
Lotus Symphony
X
X
X

Koffice
X
X
X

Microsoft Outlook
Evolution
X
X
X

Kontact
X
X
X

Microsoft Money
Money Manager EX
X
X
X

Primavera Software
Projecto Colibri
X
X
X

Endnote
Zotero (plugin Firefox)
X
X
X

JabRef
X
X
X

Evernote
Nevernote
X
X
X

Multimédia

Aplicação
Plataforma



Substituto
Windows
Linux
Mac

Windows Media Player
Clementine
X
X
X

Amarok
X
X
X

Songbird
X
X
X

Media Player Classic HC
X

Banshee
X
X
X

SMPlayer
X
X

AIMP
X

KMPlayer
X

Nero
Burn
X

LiquidCD
X

Movie Maker
Lightworks
X
X

Windows Media Center
Mediaportal
X

XBMC
X
X
X

Moovida
X

3D

Aplicação
Plataforma



Substituto
Windows
Linux
Mac

3DS Max
Sculptris
X
X

K-3D
X
X
X

Wings 3D
X
X
X

trueSpace
X

CAD

Aplicação
Plataforma



Substituto
Windows
Linux
Mac

AutoCad
Draftsight
X
X
X

Programação

Aplicação
Plataforma



Substituto
Windows
Linux
Mac

Visual Studio
SharpDevelop
X

Adobe Flash Professional
FlashDevelop
X

Adobe Flash Builder

Scrivener
TextRoom
X
X
X

Mindmaps
Xmind
X
X
X

Microsoft Mathematics
GnuPlot
X
X
X

Adobe Dreamweaver
phpDesigner
X

Utilitários (outras aplicações)

Aplicativo
Plataforma



Substituto
Windows
Linux
Mac

Microsoft Paint
ArtWeaver
X

Windows Notepad
Notepad++
X

MSN
Adium
X

WinRAR
7zX
X

Keka
X

Picasa
FastStone Image Viewer
X

Adobe Reader
Skim
X

Mais uma vez, espero que este pequeno artigo possa mudar a mentalidade de algumas pessoas quanto ao acto de pirataria online. Pois, ninguém gosta de ver o seu trabalho roubado por outras pessoas.

Outro aspecto que gostaria de deixar para consideração, que não deixei no artigo anterior do mesmo tema, é que o que se pretende demonstrar com este tema é que para qualquer aplicação mais utilizada tem os seus substitutos e que estes podem ser usados mesmo quando não migramos de sistema operativo. Por exemplo: ao utilizarmos o libreoffice.org podemos tanto usar no Windows, como Linux, como Mac OS.

Aceitam-se mais sugestões que possam levar mais uma vez a um artigo com titulo: “Alternativas grátis a aplicações mais utilizadas III”.

Download: Artigo em PDF aqui

Extensão Chrome: QRreader beta – Leia códigos QR pelo browser

Extensão Chrome: QRreader beta – Leia códigos QR pelo browser

Criado por Pedro Simões em 4 de Outubro de 2011 | 0 comentários

Já por muitas vezes vos apresentámos aqui os códigos QR. Foram apresentadas soluções para a criação destes códigos e soluções para conseguirem ler esses códigos nos mais diversos equipamentos.

Estes códigos permitem que coloquem a mais diferente informação dentro das imagens e que as possam ler e distribuir das mais diferentes formas. Uma das formas de aceder a esses conteúdos e que ainda não tínhamos apresentado era através do browser. Pois agora é já possível e via Google Chrome com a extensão QRreader.

Esta extensão, que ainda está em beta, permite que leiam os conteúdos dos códigos QR que entenderem e necessitarem.

A forma de a usarem é extremamente simples. Depois de instalada passam a ter no menu de contexto do vosso Chrome mais uma opção.

Essa opção permite que leiam códigos QR e que extraiam deles o seu conteúdo. Caso esse conteúdo seja um endereço de uma página web então esta será aberta num novo separador.

Caso o conteúdo desse código seja um texto então será mostrada uma caixa com o que for extraído do código QR.

Se pretenderem podem copiar esse conteúdo para a memória do vosso computador para posterior utilização. Para isso basta que cliquem no botão OK da caixa de diálogo que é apresentada.

A extensão QRreader está ainda numa fase beta mas as suas principais funcionalidades estão já plenamente funcionais.

Existem planos do seu criador para que sejam adicionadas novas funcionalidades, tais como a capacidade de criar código QR directamente a partir do Chrome.

Usem o QRreader para conseguirem ler o conteúdo dos códigos QR que vos forem passados. Conseguem assim, tal como através de qualquer dispositivo móvel, aceder ao texto que está dentro dessas imagens.

Basta um simples clique em cima de uma dessas imagens e o acesso é imediato. Se for um link o Chrome trata de o abrir, se for texto então é mostrado para o poderem copiar.

Veja aqui mais extensões e aplicações Chrome

Leia mais informação sobre plugins Chrome no Forum Pplware: Google Extensions e Google Chrome

Download: QRreader beta 0.1
Homepage: QRreader beta

Redes – Como funciona um Router?

Redes – Como funciona um Router?

Criado por Pedro Pinto em 4 de Outubro de 2011 | 40 comentários

Para quem gosta de artigos sobre redes informáticas, hoje apresentamos mais um artigo nesta área, que dá a conhecer o funcionamento básico de um router. De modo a entenderem melhor como tudo se processa, é importante (para quem ainda não o fez) que leiam o artigo sobre o modelo de referência OSI da ISO (ver aqui) e o artigo que mostra o funcionamento de um switch (ver aqui).

router_00

O que é um router?

Em traços gerais um router (ou encaminhador) é um equipamento activo de uma rede de dados quer permite a comunicação entre dispositivos de redes diferentes (e também de redes com diferentes tecnologias) e totalmente autónomas. Os router funcionam na camada 3 do modelo OSI (ver aqui) e têm a capacidade (com base nos protocolos de encaminhamento, rotas estáticas ou por conhecerem as redes directamente ligadas) de fazer chegar os pacotes de dados de uma rede de origem a uma determinada rede de destino.

Vamos considerar o seguinte cenário com as seguintes configurações:

PC A
PC D

Endereço IP: 192.168.1.1
Endereço IP: 192.168.2.1

Mascara: 255.255.255.0
Mascara: 255.255.255.0

Gateway: 192.168.1.254
Gateway: 192.168.2.254

PC B
PC C

Endereço IP: 192.168.1.2
Endereço IP: 192.168.2.2

Mascara: 255.255.255.0
Mascara: 255.255.255.0

Gateway: 192.168.1.254
Gateway: 192.168.2.254

router_01

Se o PC A pretender comunicar com o PC B, como os dois pertencem à mesma rede estando assim no mesmo domínio de broadcast, a comunicação é simplesmente feita via switch (Podem ver aqui como tudo funciona).

Agora vamos considerar que uma máquina da rede azul (rede: 192.168.1.0) quer comunicar com uma máquina da rede amarela (rede: 192.168.2.0). Considerando então que por exemplo o PC B quer comunicar com o PC De partindo do principio que os switchs e router já conhecem os Mac Adresses dos equipamentos da rede.

Vamos ver como se processa a comunicação entre os dispositivos:

Como vimos pelo vídeo anterior, quando o PC B com o IP.192.168.1.1 quer comunicar com o PC D(IP.192.168.2.2) que está numa outra rede, a informação segue para o gateway respectivo (que não é nada mais que uma interface no router) e em seguida o router, com base na sua tabela de encaminhamento, encaminha os pacotes para a rede de destino.

Resumindo

De uma forma geral, quando duas máquinas estão em redes distintas é necessário que exista um equipamento que faça encaminhamento de pacotes como por exemplo um router (Existem algumas distribuições que permitem também transformar um PC num router). De referir que os PC’s devem ter configurado o gateway (saiba porquê aqui).

iMediaShare – O seu Android e iPhone na TV

iMediaShare – O seu Android e iPhone na TV

Criado por Pedro Pinto em 5 de Outubro de 2011 | 44 comentários

Quando chega a hora de comprar qualquer dispositivo tecnológico, temos a tendência de optar por aquele que tem a última tecnologia mas também se o preço for atractivo. Há cerca de um ano comprei um LCD e apesar de ser de eu ser bastante ligado à tecnologia, nunca tive muito tempo para explorar as funcionalidades do mesmo. Liguei-o à box do serviço de TV e já está.

Recentemente descobri uma super aplicação para Android e iPhone que permite ter o nosso Android ou iPhone na TV. Vamos conhecer o iMediaShare.

imedia_share00

iMediaShare é uma aplicação que permite apresentar conteúdos multimédia directamente na TV, através de um dispositivo móvel. Esta aplicação permite transformar o nosso smartphone num autêntico controlo remoto, podendo assim os utilizadores ver os conteúdos num ecrã maior.

Veja um video promocional do iMediaShare

Qual a vantagem desta aplicação relativamente a outras?

Bem, o iMediaShare não necessita de qualquer tipo de cabos e tem suporte para vários sistemas como são o caso:

  • TVs
    • Samsung com AllShare
    • LG
    • Sony BRAVIA
    • Philips
    • Panasonic Viera
    • Toshiba
  • Leitores de blu-ray
  • Consolas de jogos
    • Playstation 3 ou Xbox360
  • Audio Players
    • Denon
    • Sonos
    • Onkyo
    • Linn
    • Philips Streamium
    • Yamaha
    • etc.
  • Apple TV (e outros dispositivos com suporte para a tecnologia AirPlay)
  • e outro dispositivos que suportem DLNA/UPnP.

(Para quem não sabe, o DLNA(Digital Living Network Alliance) é uma tecnologia que foi desenvolvido por várias empresas com o objectivo de tornar a conectividade de dispositivos electrónicos muito mais simples. O DLNA funciona com base em algumas tecnologias de comunicação já existentes como é o caso da Ethernet, Wi-Fi ou Bluetooth.

Veja o iMediaShare em acção

Como usar o iMediaShare?

Usar o iMediaShare é mesmo muito simples. Depois de executarmos a aplicação, são disponibilizados um conjunto de canais online, serviços e acesso a dispositivos da rede local

Canais online suportados:

Art4HD, Bild, Beet TV, Break.com, CBS News, CNBC, CNET, COIN-OP TV, College Humor, Dailymotion, Deutsche Welle, Earth Touch, Engadget, Facebook, France 24, Funny or Die, HDNet, Les Debiles, MaYoMo, Motorz, NASA TV, Picasa, PR Newswire, PSN, Revision3, Showtime, Spiegel Online, TED Talks, TWiT TV, VideoBASH, Vimeo, White House, YDN Design, YouTube

imedia_share01

Depois de escolhermos um dos canais, é necessário indicar para que dispositivo pretendemos mandar o conteúdo. Normalmente é neste passo que escolhemos a TV como dispositivo de visualização.

imedia_share02

E está feito. Como referido, além dos canais online podemos visualizar fotografias armazenadas no serviço Picasa ou numa partição de um equipamento local, podemos ler livros, etc etc. Para mim, esta é certamente uma das aplicações mais fantásticas que testei.

Gratuito | 1 MB

Ver no Android MarketiMediaShare

qr_imediashare

Hotmail: Microsoft lança aplicação oficial para Android…

Hotmail: Microsoft lança aplicação oficial para Android…

Criado por Hugo Cura em 5 de Outubro de 2011 | 22 comentários

… e apresenta novas funcionalidades na interface web-based.

Até agora, no Android, a melhor forma de usar e interagir com um email do Hotmail era a partir do browser, numa interface mobile bastante bem adaptada e construída. No entanto, a sua usabilidade e facilidade de utilização em nada se comparam ao que é possível obter de uma aplicação dedicada.

Isso agora mudou e a Microsoft lançou para Android uma aplicação de email dedicada ao Hotmail.


Aplicação Hotmail para Android


Antes de usar Android, a minha conta principal de email era do Hotmail. Embora a utilização de um dispositivo Android obrigue a criação de uma conta Google, o email pode funcionar independentemente mas… a sua utilização a partir do browser não chegava ao que a aplicação Gmail conseguia fornecer. Se, na altura, já existisse esta aplicação para o Hotmail, provavelmente teria sido adoptada! Sim, porque está ao nível da aplicação Gmail.

O Hotmail para Android permite sincronização push (sempre que surgir novo email), sincronização de contactos e sincronização de calendário.

Esta aplicação vem recheada de opções, mais opções que as existentes na aplicação Gmail, de forma a que tudo seja a gosto do utilizador. Permite usar simultaneamente várias contas Hotmail. Existem até funcionalidades úteis, que não existem na aplicação Gmail, como configurar a sincronização em intervalos de tempo (em vez de push) e até ajustar o zoom de uma mensagem de email (funcionalidade “pinch-to-zoom”) aquando da sua leitura. Já na aplicação Hotmail não é possível definir emails como SPAM enquanto que na aplicação do Gmail é possível fazê-lo.

O utilização e visualização de emails é bastante semelhante ao encontrado da aplicação Gmail e, na minha opinião, é o mais adequado que há para smartphones.

Resumindo, as suas funcionalidades são:

  • Obtenção de mensagens sem atrasos (push)
  • Sincronização de calendário e contactos no Android
  • Envio e recepção de anexos
  • Envio de ficheiros, imagens, ou vídeos directamente para a aplicação Hotmail
  • Organização de mensagens em pastas e sub-pastas
  • Widget que mostra as últimas mensagens na caixa de entrada
  • Suporte de várias contas Hotmail

Se é, ainda, utilizador de Hotmail e utiliza também um smartphone Android, então é esta a aplicação que lhe faltava.

Hotmail para Android

Gratuito | Android 2.1 – 2.3.5Download | 6.1MB


Melhorias no Hotmail web-based


Já era sabido que a Microsoft se preparava para lançar novidades no seu serviço de email Hotmail. As novidades mostradas foram bastantes e demonstram que está aqui um concorrente feroz aos serviços Gmail e Yahoo! Mail. O desempenho foi melhorado (emails colocados em cache), pré-carregamento de mensagens, operações feitas de forma assíncrona, espaço ilimitado e… mais, muito mais. Vejamos:

  • Protecção SPAM e Graymail: o SPAM é como uma praga, algo que tem de ser combatido, e o Hotmail conseguiu reduzir o SPAM que chega à caixa de entrada de 35%, em 2006, para menos de 3% actualmente. Este melhoramento significativo deve-se à tecnologia SmartScreen. O Graymail surge agora como um complemente e é a característica atribuída a correio electrónico desinteressante, ainda assim separado de SPAM (algo como newsletters e ofertas de produtos de sites fidedignos).
  • Desinscrição “One-click”: são muitas as newsletters que chegam ao correio electrónico sem que essa inscrição tenha sido solicitada. Esta nova funcionalidade permite, facilmente, desinscrever danewsletter sem ser necessário ler as letras pequenas das instruções para desinscrição (que por vezes nem existem).
  • Limpeza automatizada (“Schedule Cleanup”): esta funcionalidade, integrada nas opções Sweep, permite definir regras automáticas de organização em determinado intervalo de tempo, isto é, permite ter apenas osemails mais recentes de determinado remetente podendo definir, por exemplo, apenas a intenção de veremails com apenas 3 dias, 10 dias, etc. Esta funcionalidade é útil para, por exemplo, ver apenas as últimas ofertas de determinada loja, apagar todas as newsletter com mais de 10 dias, etc.
  • Sinalização de emails: a partir de agora é possível não só sinalizar um email (como já era até aqui) mas também organizá-los em separado, ficando todos os emails sinalizados no topo da lista (algo semelhante às estrelas no Gmail).
  • Acções instantâneas: esta funcionalidade acrescenta, bem junto de cada email, botões de funcionalidades rápidas que surgem quando o cursor passa sobre esse local. É possível definir os botões pretendidos para assim, dependendo da organização de cada utilizador, ter sempre à mão as funcionalidades mais utilizadas. Existem botões para apagar mensagens, sinalizá-las, marcar como não lido, sweep, etc, tudo para usar sem sequer abrir a mensagem.
  • Categorias: as newsletter são identificadas e colocadas automaticamente numa categoria distinta. É possível definir manualmente outras categorias.

Todas estas novas funcionalidades colocam o Hotmail num patamar mais alto e permitem que continue a ser depositada confiança neste serviço.
Hotmail
Inside Windows Live blog

Dicas de VBA – Criando Teclas de Atalho

Dicas de VBA – Criando Teclas de Atalho

Criado por Paulo Silva em 5 de Outubro de 2011 | 7 comentários

Por Jorge Paulino para o Pplware

Estamos de volta com o VBA e algumas demonstrações do seu potencial para resolução de problemas rotineiros do nosso dia a dia de trabalho.

Desta feita vamos ver como criar Teclas de Atalho…

Quando criamos código em VBA necessitamos de o executar e isso pode ser feito de diversas formas:

  • Através de Eventos
  • Através de funções personalizadas (UDF)
  • Através de um objecto que irá chamar o nosso código (quer esteja na worksheet ou na ribbon)
  • Através de teclas de atalho (shortcuts)

A possibilidade de utilizar determinadas teclas para chamar o código que criamos é muito prático e muito útil. Neste pequeno artigo iremos ver algumas formas e exemplos de como associar teclas de atalho a procedimentos e ver as principais diferenças entre os dois métodos disponíveis.

A maneira mais simples e mais usada pela maioria dos utilizadores é seleccionando o separador Developer e escolhendo a opção Macros (ou pressionando as teclas Alt+F8)

Na janela com as macros disponíveis, seleccionamos a macro pretendida e escolhemos a opção Options.

Irá abrir então uma nova janela onde podemos indicar que tecla de atalho iremos associar à macro seleccionada.

Neste exemplo, visível na imagem anterior, para chamar a Macro1, a combinação definida é Ctrl+a. Podemos indicar diversas letras (apenas letras) e se indicarmos uma letra em minúscula a combinação associada seráCtrl+a (por exemplo) e se indicarmos a letra em maiúscula a combinação associada será Ctrl+Shift+a.

Alguns exemplos:

a = Ctrl + a
u = Ctrl + u
A = Ctrl + Shift + a
U = Ctrl + Shift + u

Muito simples e muito prático!

No entanto isto limita-nos à utilização de determinadas combinações de teclas o que poderá ser, em alguns casos, um problema. Além disso não permite a atribuição dinâmica e a utilização de teclas especiais. Mas isto pode ser resolvido utilizando VBA!

Para atribuir uma tecla de atalho a uma macro, utilizamos o método Application.OnKey()

Application.OnKey “combinação”, “procedimento a associar”

Exemplo:

Application.OnKey “^a”, “Macro1″

Neste caso é associada a combinação Ctrl+a à Macro1.

Mas vejamos a tabela de códigos de teclas especiais, que além das letras e números podem ser utilizados:

Tecla

Código

BACKSPACE

{BACKSPACE} ou {BS}

BREAK

{BREAK}

CAPS LOCK

{CAPSLOCK}

CLEAR

{CLEAR}

DELETE ou DEL

{DELETE} ou {DEL}

DOWN ARROW

{DOWN}

END

{END}

ENTER (teclado numérico)

{ENTER}

ENTER

~ (tilde)

ESC

{ESCAPE} ou {ESC}

HELP

{HELP}

HOME

{HOME}

INS

{INSERT}

LEFT ARROW

{LEFT}

NUM LOCK

{NUMLOCK}

PAGE DOWN

{PGDN}

PAGE UP

{PGUP}

RETURN

{RETURN}

RIGHT ARROW

{RIGHT}

SCROLL LOCK

{SCROLLLOCK}

TAB

{TAB}

UP ARROW

{UP}

F1 a F15

{F1} até {F15}

E as teclas que são usadas para combinar:

Tecla

Código

SHIFT

+ (adicção)

CTRL

^ (acento circunflexo)

ALT

% (percentagem)

Assim, com a lista de códigos, podemos combinar e associar conjuntos de teclas a macros que tenhamos criado/gravado. Podemos utilizar o evento Workbook_Open(), que é executado quando o ficheiro de Excel é aberto, e definir no arranque as associações que queremos. Por exemplo:

Private Sub Workbook_Open()
Application.OnKey “+^{UP}”, “MostraResultado”
Application.OnKey “%{INSERT}”, “CopiaDados”
End Sub

Neste caso, a combinação Shift+Ctrl+Seta Cima chama o procedimento MostraResultado e a combinação Alt+Insert chama o procedimento CopiaDados.

No entanto estas atribuições funcionam se os procedimentos estiverem definidos num módulo, pois se estiverem definidos no Workbook ou em determinada Worksheet não irá funcionar. Nestes casos é necessário definir o caminho para eles, como é possível ver no exemplo seguinte:

Private Sub Workbook_Open()
Application.OnKey “+^{UP}”, “ThisWorkbook.MostraResultado”
Application.OnKey “%{INSERT}”, “Sheet1.CopiaDados”
End Sub

Aqui estamos a indicar que o procedimento MostraResultado está criado em ThisWorkbook e o procedimento CopiaDados está criado no código da Sheet1.

Mas atenção que determinadas combinações, especialmente usando a tecla Alt mais uma letra ou número, não funcionam, pois são usados como teclas de atalho do próprio Excel. É importante testar sempre.

Muito importante também verificar se não estamos a utilizar uma combinação do próprio sistema operativo. Por exemplo, a combinação Ctrl+C (“^c”) serve para copiar informação(copy), assim como oCtrl+V (“^v”) serve para colar informação (paste). Se atribuirmos estas combinações a diferentes procedimentos, é sobreposto o funcionamento normal (neste caso o copy/paste) e passará a chamar os procedimentos que definimos. Isto pode ser desagradável para muitos utilizadores.

Um exemplo muito simples para que testem rapidamente e entendam o problema de algumas associações. Coloquem o seguinte código num módulo e executem o procedimento AssociaTeclas.

Sub AssociaTeclas()
Application.OnKey “~”, “Opps”
End Sub
Sub Opps()
MsgBox “Opps !!!”
End Sub

Agora, no Excel, sempre que carregarem na tecla Enter aparecerá uma mensagem com a informação “Opps !!!”.

Mas podemos também desabilitar as associações que definidas. Para tal, basta não definir o segundo argumento do método OnKey() que é opcional.

Sub DesabilitaTeclas()
Application.OnKey “~”
Application.OnKey “^v”
Application.OnKey “^v”
Application.OnKey “%{INSERT}”
Application.OnKey “+^{UP}”
End Sub

Após executar o procedimento DesabilitaTeclas as associações definidas deixariam de funcionar e, neste caso, o Enter voltaria a funcionar como antes, assim como o Ctrl+c e o Ctrl+v.

Neste pequeno artigo vimos como é simples atribuir teclas de atalho para chamar procedimentos, utilizando as opções já disponíveis e através de código, e alguns dos problemas que as associações podem causar.

É sem dúvida uma forma muito prática de chamar código VBA.

Autor: Jorge Paulino
Página Pessoal: http://www.jorgepaulino.com/