// Place text over center of icon; they both occupy the same space button.setVerticalTextPosition(SwingConstants.CENTER); button.setHorizontalTextPosition(SwingConstants.CENTER); // Place text above icon button.setVerticalTextPosition(SwingConstants.TOP); button.setHorizontalTextPosition(SwingConstants.CENTER); // Place text below icon button.setVerticalTextPosition(SwingConstants.BOTTOM); button.setHorizontalTextPosition(SwingConstants.CENTER); // Place text to the left of icon, vertically centered button.setVerticalTextPosition(SwingConstants.CENTER); button.setHorizontalTextPosition(SwingConstants.LEFT); // Place text to the left of icon and align their tops button.setVerticalTextPosition(SwingConstants.TOP); button.setHorizontalTextPosition(SwingConstants.LEFT); // Place text to the left of icon and align their bottoms button.setVerticalTextPosition(SwingConstants.BOTTOM); button.setHorizontalTextPosition(SwingConstants.LEFT); // Place text to the right of icon, vertically centered button.setVerticalTextPosition(SwingConstants.CENTER); button.setHorizontalTextPosition(SwingConstants.RIGHT); // Place text to the right of icon and align their tops button.setVerticalTextPosition(SwingConstants.TOP); button.setHorizontalTextPosition(SwingConstants.RIGHT); // Place text to the right of icon and align their bottoms button.setVerticalTextPosition(SwingConstants.BOTTOM); button.setHorizontalTextPosition(SwingConstants.RIGHT);
Este erro, ao contrário do que os outros pensam, não é do Chrome ou do Safari e sim do próprio ASP.NET.
Para gerar o código JavaScript do menu, o ASP.NET verifica qual é o browser do cliente, e se ele suporta ou não JavaScript. Acontece que esta verificação falha em alguns browsers como o Sarafi e consequentemente o Chrome (pois o Chrome foi baseado no Safari), e o ASP.NET então devolve um código que não funciona. Para corrigir isto devemos “forçar” o ASP.NET a executar o JavaScript, para isto setamos a propriedade Page.ClientTarget com o valor “uplevel”. Assim informamos que o cliente possui um moderno “uplevel” browser.
Devemos fazer isto para todas as páginas que utilizarão o menu. O código deverá estar dentro do evento Page_Init da página. Ex:
protected void Page_PreInit(object sender, EventArgs e)
{
if (Page.Request.ServerVariables["http_user_agent"].ToLower().Contains("safari"))
{
Page.ClientTarget = "uplevel";
}
}
Neste código, fazemos uma verificação se o user_agent possui a palavra safari, que servirá também pro chrome e, se sim, forçamos o uplevel.
Para evitar de “copiar” e “colar” o mesmo código em todas as páginas, você poderá aproveitar o que há de melhor da programação orienteda a objetos, a herânça. Para isto crie uma classe herdando de System.Web.UI.Page e coloque este código nela. Para todas as suas páginas, ao invés de herdar diretamente de System.Web.UI.Page, você herda da classe que acabou de criar.
Resolvi aprender outra linguagem de programação pra variar um pouco. ![]()
Vira e mexe escuto alguém falando de Python, Ruby entre outras linguagens interpretadas e eu nem faço idéia de como se programa ou executa programas feitos nessas linguagens. Bom, não sabia. Andei lendo um pouco e vi que é a coisa é bem simples. Resolvi começar pelo Python. Para aqueles que estão começando do zero como eu, recomendo a leitura do artigo Aprenda a Programar. É uma pena o artigo não ter uma continuidade mas já dá uma boa idéia de com funciona tudo. Explica, por exemplo, como executar o Python no ambiente WEB. Minha surpresa foi que ele roda com o Apache através de um programa em cgi. Seguindo este artigo eu criei o meu primeiro programa em cgi, que a gente tanto houve falar quando se trata de programação web. Bom, fiquei bem animado com a idéia, e daqui pra frente devo publicar alguns posts relacionados ao Python. Aguardem e confiram.
Para obter informações de um arquivo tais como data e hora de criação, modificação, acesso entre outros, utilizamos a classe FileInfo. Esta classe, presente no namespace System.IO possui as propriedades CreationTime, LastWriteTime e LastAccessTime que retorna a informação de data e hora que o arquivo foi criado, modificado e aberto. Veja um exemplo de como utilizar a classe
FileInfo file_info = new FileInfo("C:\\meu_arquivo.txt");
string Criado = file_info.CreationTime.ToString("dd/MM/yyyy HH:mm:ss");
string Modificado = file_info.LastWriteTime.ToString("dd/MM/yyyy HH:mm:ss");
string Acessado = file_info.LastAccessTime.ToString("dd/MM/yyyy HH:mm:ss");
Se preferir pode fazer o download do projeto abaixo com um exemplo que mostra estas e outras propriedades da classe FileInfo.
Exemplo de uso da classe FileInfo (108)
Já mostrei aqui como obter o dia da semana por extenso no charp. Para poder escrever a data completa no formato “[dia da semana], [dia] de [mês] de [ano]” basta obter separadamente cada uma das partes como no exemplo a seguir.
CultureInfo culture = new CultureInfo("pt-BR");
DateTimeFormatInfo dtfi = culture.DateTimeFormat;
int dia = DateTime.Now.Day;
int ano = DateTime.Now.Year;
string mes = culture.TextInfo.ToTitleCase(dtfi.GetMonthName(DateTime.Now.Month));
string diasemana = culture.TextInfo.ToTitleCase(dtfi.GetDayName(DateTime.Now.DayOfWeek));
string data = diasemana + ", " + dia + " de " + mes + " de " + ano;
Response.Write(data);
O método ToTitleCase da classe TextInfo serve para converter a primeira letra da palavra para maiúsculo e os métodos GetMonthName e GetDayName da classe DateTimeFormatInfo servem para pegar o nome do mês e do dia da semana respectivamente.
No final a variável data conterá o dia por extenso. Por exemplo:
Domingo, 19 de Outubro de 2008
Para os dias menores que 10, se você preferir escreve-los com o zero antes basta aplicar o método ToString a variável dia.
string data = diasemana + ", " + dia.ToString("00") + " de " + mes + " de " + ano;
Depois de alguns dias pesquisando, encontrei algumas soluções viáveis para enviar um arquivo diretamente para a impressora (sem abrir janelas de diálogo), cada uma com suas limitações.
Solução 1: Fazer uma cópia do arquivo para o local da impressora
No prompt do DOS basta utilizar o comando:
copy nome_arquivo nome_impressora
O equivalente em C# é:
System.IO.File.Copy(nome_arquivo , nome_impressora);
Onde nome_arquivo é o nome físico completo do arquivo e nome_impressora é o nome do compartilhamento da impressora composto pelo IP ou nome da máquina mais o nome do compartilhamento.
Limitação: Imprime somente arquivos texto e a impressora deverá estar compartilhada.
Solução 2: Utilizar o comando print do windows.
Esta foi a melhor solução que encontrei. A idéia é utilizar o comando “print” do shell do Windows. Ao executar o comando, o Windows irá abrir o programa padrão estabelecido pelo tipo do arquivo e imprimir automaticamente, fechando o programa após a impressão.
Em Delphi utiliza-se o comando ShellExecute para executar um comando shell.
ShellExecute(Handle, 'print',PChar('arquivo'), nil,nil,SW_SHOW);
No Framework .Net não existe esta função, no entanto ela está implementada na dll shell32.dll do Windows. Para utiliza-la em C#, VB6 ou VB .Net devemos criar uma referência para a mesma.
[DllImport("shell32.dll", EntryPoint = "ShellExecute")]
public static extern int ShellExecuteA(int hwnd, string lpOperation,
string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
Para utilizar a directiva DllImport é preciso referênciar o namespace System.Runtime.InteropServices.
Veja o exemplo a seguir utilizado em um projeto do tipo Windows Application.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ImprimeArquivo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
Form1.ShellExecuteA(this.Handle.ToInt32(), "print", ofd.FileName, null, null, 0);
}
}
[DllImport("shell32.dll", EntryPoint = "ShellExecute")]
public static extern int ShellExecuteA(int hwnd, string lpOperation,
string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
}
}
Solução 3: http://support.microsoft.com/kb/322091/pt-br
Para saber a versão de uma dll criada a partir de um projeto do tipo Class Library basta utilizar o código:
typeof(NomedaSuaClasse).Assembly.GetName().Version;
Ou, se você chamar a instrução de dentro da classe, poderá fazer:
this.GetType().Assembly.GetName().Version;
Esses métodos retornam um objeto do tipo Version, que pode ser utilizado para pegar separadamente cada tipo de versão. Por exemplo, a versão de compilação, a maior verão, a menor versão, etc…
O código abaixo exemplifica o uso destes métodos em uma classe que pode ser chamada por exemplo em uma aplicação Web ou WinForm.
public class Info
{
public static Version GetVersion()
{
return typeof(Info).Assembly.GetName().Version;
}
public static string GetVersionString()
{
Version version = Info.GetVersion();
string versionstring = version.Major + "." + version.Minor +
"." + version.Build + "." + version.Revision;
return versionstring;
}
}
Para chamar este método em sua aplicação faça por exemplo:
label.Text = "Versão:" + Info.GetVersionString();
Se estiver trabalhando com WinForms, você poderá usar o código abaixo para saber a versão do exe de sua aplicação:
Assembly.GetEntryAssembly().GetName().Version
Da mesma maneira que no exemplo anterior com a dll, poderá ser criado uma classe somente para retornar esta informação.
Obs.: Para alterar a versão da dll basta ir nas propriedades do projeto e na guia Application clique no botão “Assembly Information” como na figura abaixo.

Para pegar o valor de uma string de conexão do Web.Config basta utilizar a classe ConfigurationManager. Veja um exemplo:
string cs = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;
Onde strConn é o nome dado a sua string de conexão no Web.Config. Veja um exemplo do Web.Config:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="strConn"
connectionString="Data Source=192.168.0.1;Initial Catalog=Banco;
User ID=Usuario;Password=Senha;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
Se você se deparar com o erro “The name ‘ConfigurationManager’ does not exist in the current context” é porque provavelmente você está tentando pegar o valor desta string em um projeto do tipo Class Library. Para solucionar este problema basta referenciar no seu projeto a dll System.configuration.
Dígito verificador ou algarismo de controle é um mecanismo de autenticação utilizado para verificar a validade e a autenticidade de um valor numérico, evitando dessa forma fraudes ou erros de transmissão ou digitação.
É usado normalmente em representações numéricas que exijam integridade, como por exemplo CPF, CNPJ, RG.
O método de cálculo desses dígitos varia conforme o caso, porém muitos deles se baseiam em duas rotinas tradicionais: Módulo 11 e Módulo 10.
O cálculo do Módulo 10 é feito da seguinte maneira:
Cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 1, depois 2, depois 1 e assim sucessivamente.
Número exemplo: 261533-4
+---+---+---+---+---+---+ +---+
| 2 | 6 | 1 | 5 | 3 | 3 | - | 4 |
+---+---+---+---+---+---+ +---+
| | | | | |
x1 x2 x1 x2 x1 x2
| | | | | |
=2 =12 =1 =10 =3 =6
+---+---+---+---+---+-> = (16 / 10) = 1, resto 6 => DV = (10 - 6) = 4
A função abaixo traduz este esquema na linguagem CSharp e poderá ser utilizada em seus projetos .net.
private string modulo10(string str)
{
int digito=0;
int flag=2;
str=str.Substring(0,str.Length - 1);
for (int i = str.Length-1; i >= 0; i--)
{
int valor = Convert.ToInt32(str[i].ToString()) * flag;
int soma = 0;
if (valor.ToString().Length > 1)
{
string svalor = valor.ToString();
for (int j = 0; j < svalor.Length; j++)
{
soma += Convert.ToInt32(svalor[j].ToString());
}
}
else
{
soma = valor;
}
digito += soma;
flag = (flag == 2) ? 1 : 2;
}
digito = digito % 10;
digito = 10 - digito;
if (digito == 10)
{
digito = 0;
}
return digito.ToString();
}
Obs.: Todo o texto didático deste post foi extraído da Wikipédia obedecendo a licença GNU da mesma.
Fonetizar significa examinar a palavra sob o ponto de vista fonético. Analisar as partes da palavra pelo seu som e não pela escrita. Por exemplo: O nome Felipe pode ter várias variações como Filipe, Filipi, Filipe, Philipe, Phelipe, Phelipi. Ao fonetizar esses nomes, chegamos sempre no mesmo resultado (FILIPI).
A fonetização é muito útil para a utilização de buscas aproximadas. No exemplo acima, ao buscarmos o nome Felipe, poderíamos ter como retorno resultados contendo todos as outras variações do nome Felipe.
Para testar, você poderá baixar a classe de fonetização reescrita por mim em c# e utiliza-la em seu projeto .net. Para utilizar-la basta chamar o método estático Fonetiza da classe Fonetico do Namespace Util.
Ex.:
Response.Write(Util.Fonetico.Fonetiza("Felipe"));
Download
Classe para Fonetizar Textos (450) - 52 KB
nota
O código original estava escrito em Java e confesso que já não lembro onde consegui, para que assim colocasse os créditos devidos aqui.





Comentários Recentes