quarta-feira, 18 de novembro de 2009

Playback contínuo no VLC.

O VLC é o leitor multimédia que uso mais regularmente. Eu gosto de usar o VLC, acho-o leve, suficientemente discreto e além de permitir visualizar todos os vídeos com todos os codecs que me consigo lembrar, ainda tem um conjunto de funcionalidades ímpar (streaming, efeitos realtime, etc...). Hoje deparei-me com uma pequena dificuldade, queria colocar um vídeo a correr contínuamente e não estava a conseguir. A solução é simples mas não tão obvia como seria de esperar. É necessário activar a opção de loop contínuo que está na definição das preferencias na playlist.

Estas opções apenas aparecem no menu "Tools/Preferences". Na janela que surge escolher no canto inferior esquerdo a opção "All" de "Show Settings". Depois ainda na coluna da esquerda seleccionar a opção Playlist e em seguida escolher à direita a opção que mais nos convém.



http://www.videolan.org/vlc/

Google Image Swirl

A Google tem mais uma aplicação fantástica online: o Google Image Swirl. Trata-se de uma forma mais interactiva de pesquisar imagens e de navegar posteriormente pelas imagens encontradas de uma forma muito natural e intuitiva. Uma vez encontrada uma imagem do tema que procurarmos, basta ir clicando nas diversas imagens e ir "entrando" nas imagens relacionadas até encontrar "aquela" imagem!

Muito bom!

http://image-swirl.googlelabs.com/

quinta-feira, 12 de novembro de 2009

Como determinar numa base de dados quais as tabelas que contém um determinado campo?

Há dias deparei-me com a necessidade de determinar quais as tabelas que continham um determinado campo. Tratava-se de uma chave estrangeira que eu já tinha visto que estava a ser designada em várias tabelas da mesma forma: FuncionarioID. A solução é muito simples, basta consultar as tabelas sys.tables e sys.columns:

USE MyDB
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_idAS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID c.OBJECT_ID
WHERE c.name LIKE '%FuncionarioID%'
ORDER BY schema_nametable_name;



Mais informação sobre este assunto em: http://msdn.microsoft.com/en-us/library/ms345522.aspx

quarta-feira, 4 de novembro de 2009

Criação de interfaces gráficas em Java usando Cardlayout

Vou abrir aqui um precedente e colocar um pequeno vídeo, não editado, com uma ajuda para uns amigos meus. Se o tempo o permitir, fica a promessa de criar uns vídeos mais produzidos e mais temas abordados.

Por vezes surge a necessidade de organizar a interface gráfica de uma aplicação em painéis separados que são apresentados ao utilizador em função de opções que ele faz, por exemplo, num menu.

Utilizando o Netbeans (ferramenta que uso para criação de aplicações em Java), ao criar uma nova aplicação Java desktop, são criados vários ficheiros sendo que, um deles, é a aplicação principal (normalmente uma classe com a designação XPTOView.java). No painel inspector, vemos que este formulário é composto por vários objectos:
  • FrameView – a janela propriamente dita
  • mainPanel – um JPanel onde são colocados os diversos controlos
  • menuBar – um JMenuBar: o menu que é apresentado no topo do ecrã
  • statusPanel – um painel que faz a divisão do painel principal e apresenta uma barra barra de estado no rodapé
A ideia então é usar o mainPanel para ir apresentando os diversos ecrãs ao utilizador. Para tal devemos indicar ao mainPanel que queremos usar o layout cardlayout e acrescentar ao mainPanel o conjunto do panels que são necessários para mostrar as diversas interfaces da aplicação. Imaginem um baralho de cartas onde cada carta é uma interface gráfica com o utilizador, é precisamente disso que se trata.

O Netbeans suporta este conceito de forma muito simples.

1.Crie uma nova aplicação Java Desktop (Basic application).
2.No painel Inspector, clicar com o botão direito do rato no mainPanel e definir o layout como CardLayout.
3.Ainda no Inspector e sobre o mainPanel clicar com o botão direito do rato e fazer "Add from Panel" / "Swing containers" e adicionar quantos painéis os desejados.
4.Cada painel associado vai ter um "cardname" (veja o painel Properties a secção Layout de cada “subpainel”).
5.Ao menu adicione alguns “menu items” por exemplo no menu File.
6.Desenhar os paineis...
7.A cada item do menu que adicionou em 5 ligue os respectivos eventos.
8.Em cada evento o que vamos fazer é indicar qual o painel a mostrar no mainPanel. Para tal temos de criar uma instância do objecto Cardlyout e indicar-lhe qual o card a mostrar:

1.//Obtém a instância do cardlayout associado ao mainPanel
CardLayout cl = (CardLayout)(mainPanel.getLayout());


//Activa o painel cujo card name é card2.
cl.show(mainPanel, "card2");