sexta-feira, outubro 27, 2006

Dica de Delphi - Mudando de célula com ENTER no dbGrid

Quando o usuário está editando dados em um dbGrid, ele sempre espera que ao se pressionar a tecla "ENTER", a ação seja mudar para a célula seguinte (a da direita), mas o dbGrid não tem esse comportamento por padrão.

Pensando nisso, elaborei uma rotina, que deverá ser escrita no evento OnKeyUp do dbgrid. Sempre que se atinge a última célula em uma linha, automaticamente ele passa para a linha seguinte e, se estiver na última, uma nova será inserida.

Segue a rotina:

if Key = #13 then
begin
if dbgrid.SelectedIndex = dbgrid.Columns.Count - 1 then
//verifica se e a ultima celula
begin
if DatasetConectadoNoGrid.Eof then
DatasetConectadoNoGrid.Insert
else
DatasetConectadoNoGrid.Next;
//se for o ultimo registro insere um novo,
//caso contrario ele passa para o proximo
registro

dbgrid.SelectedIndex := 0;

//Posiciona na primeira celula
end
else
dbgrid.SelectedIndex := dbgrid.SelectedIndex + 1;
//Se nao estive na ultima celula passa a proxima
end;


Como sempre, em caso de dúvidas, escrevam.

--
Fernando D. Nappe
Analista de Sistemas

quinta-feira, outubro 19, 2006

Colocando zeros a esquerda em valor

Hoje, um dos meus colegas de trabalho estava precisando colocar zeros a esquerda no resultado de uma consulta no MS SQL Server, e ao invés de se mostrar o valor inteiro, por exemplo o nro. 10, ele precisa mostrar 00010. Aí veio a pergunta como fazer isso? Acabamos montando um "solução", não muito elegante eu confesso, mas que resolveu o problema.

Usamos a função STUFF, que insere uma string em outra, e que recebe como parâmetros a string a ser "estufada", o valor inicial aonde a outra string será inserida, o valor a ser deletado e por fim, a string a ser inserida na original.

Abaixo transcrevemos um trechinho que pode ser usado como exemplo para mais alguém que tenha o mesmo problema.

/* Variaveis do exemplo */
declare
@valor_inteiro int,
@valor_string char(6),
@string_com_zeros char(6)

/* Atribucao dos valores */
select
@valor_inteiro = 151,
@valor_string = convert(char(6), @valor_inteiro),
/* Funcao STUFF , esse é o pulo do gato! */
@string_com_zeros = stuff('00000', 7 - Len(@valor_string), Len(@valor_string), @valor_string)

select
@valor_inteiro valor_inteiro,
RTrim(@string_com_zeros) campo_preenchido

Dúvidas é só escrever...abraços
--
Fernando D. Nappe
Analista de Sistemas

terça-feira, outubro 17, 2006

Turbos

Após a iniciativa de vender os direitos sobre suas IDE's, a Borland lançou as versões Turbo (http://www.turboexplorer.com) para várias linguagens. Há o Turbo C++, Turbo Delphi, Turbo Delphi for .NET e Turbo C#. As versões que estão no site podem ser baixadas e usadas sem limitação, inclusive comercialmente. A única restrição é que não se pode adicionar componentes de terceiros nas IDE's, no entanto, eles podem instanciados via programação. Seguem alguns screenshots do Turbo Delphi:

Splash


IDE


Code Explorer

--
Fernando D. Nappe
Analista de Sistemas

segunda-feira, outubro 16, 2006

Sonho de consumo


Honda CB-500 Four!
Ainda compro uma dessas...
hehehehe

Motos clássicas

Pra quem curte motos clássicas (década de 70 pra trás), um excelente site é o www.motosclassicas70.com.br. Vale a pena!