quarta-feira, 29 de abril de 2009

 

(Dica) Criando um endereço mais simples para seu site

Quando criamos nosso primeiro blog ou site, corremos logo para algum lugar que ofereça uma hospedagem grátis, além de um subdomínio grátis, assim como eu fiz, criando o site do Coelho na Rede através do Blogger e direcionando todo o conteúdo para o 110MB.com, assim não pago nada para continuar escrevendo minhas dicas aqui para vocês.

O URL do meu site ficou até simples coelhonarede.110mb.com, mas imagine só se eu tivesse criado meu blog através do Google, então minha URL ficaria assim sites.google.com/site/coelhonarede, agora imagine eu passando esse link para algum conhecido meu, com certeza ele nunca iria acertar, até eu passar um email com o link para ele clicar.

Então, o que podemos fazer para criarmos um link mais simples para nosso site?
Simples, basta procurar um site de redirecionamento, lá você cadastra o link do seu site e recebe um outro bem curtinho para passar para seus amigos.

Por exemplo, se você digitar no seu navegador coelhonarede.tk, você abrirá diretamente o meu blog sem precisar ficar lembrando do .110mb.com, basta acrescentar o .tk ao final e pronto.

Mas, ô Coelho, qual site faz esse redirecionamento ?

Existem vários, basta procurar no Google, mas o que eu utilizei foi o www.dot.tk. Basta efetuar o seu cadastro, informando o nome que você quer para seu site e o link original para ele.

Depois do cadastro, basta confirmar o email enviado para você, e pronto, seu novo link estará criado.

Marcadores: , , ,


sábado, 20 de dezembro de 2008

 

Crie seu próprio Avatar (Grátis)

EuVi em vários blogs, avatares muito bem elaborados, só que ninguém havia postado onde conseguiram criá-los. Então, procurando pela internet, encontrei um site italiano com uma ferramenta para a criação e personalização de avatares o Face Your Manga.
Todo processo é muito fácil, basta clicar no banner "Create your Mangatar" e seguir os passos para a personalização de seu avatar.
Ao final do processo eles enviam a imagem para seu email, ai é só utilizá-lo onde quiser.
Meu AmorCaso fique muito empolgado, você tem a opção de comprar uma imagem impressa do seu avatar.
Lá você também tem a oportunidade de visualizar as imagens criadas pelas outras pessoas, muito boa a ferramenta. O Coelho Na Rede recomenda. Este ao lado é o meu.

Meu Filhão* Atualização 1: Agora também do meu Amor - "Te Amo".
* Atualização 2: E finalmente o meu filhão.

Marcadores: , , ,


quarta-feira, 3 de setembro de 2008

 

Mudar a cor do campo quando recebe o foco (C# Windows Forms)

Seguindo a mesma linha da propriedade "AutoSelectTextOnFocus" que apresentei aqui tempos atrás, que seleciona o conteúdo de um campo quando ele recebe o foco, apresento agora o "HighlightControlOnFocus" que configura a cor de fundo de todos os campos editáveis em um formulário C# Windows Forms.
Para fazer isso basta adicionar a propriedade "HighlightControlOnFocus" ao formulário pai e configurá-lo nas janelas filhas:

        /// <summary>
        /// Muda a cor de fundo de um campo (habilitado) quando ele está em foco
        /// </summary>
        private bool bolHighlightControlOnFocus = false;
        [Category("Focus")]
        [Description("Define se a cor de fundo de um campo é alterada sempre quando ele estiver em foco.")]
        [DisplayName("
HighlightControlOnFocus")]
        public bool HighlightControlOnFocus
        {
            get { return bolHighlightControlOnFocus; }
            set { bolHighlightControlOnFocus = value; }
        }

        private void ConfiguraEnterComponente(object sender, EventArgs e)
        {
            if (sender is Control)
            {
                Control controle = (Control)sender;
                if (controle.Enabled)
                {
                    controle.BackColor = Color.LightYellow;
                }
            }
        }

        private void ConfiguraLeaveComponente(
object sender, EventArgs e)
        {
           
if (sender is Control)
            {
                Control controle = (Control)sender;
               
if (controle.Enabled)
                {
                    controle.BackColor = Color.White;
                }
            }
        }

       
private void ConfigurarFocoComponentes(Control controle)
        {
            // Configura o Enter e o Leave do componente
           
if ( (controle is MaskedTextBox)  ||
                 (controle
is ComboBox)       ||
                 (controle
is TextBox)        ||
                 (controle
is RichTextBox)    ||
                 (controle
is NumericUpDown))
            {
                controle.Enter +=
this.ConfiguraEnterComponente;
                controle.Leave +=
this.ConfiguraLeaveComponente;
            }

           
if (controle is DateTimeEdit)
            {
                controle.Validated +=
this.ConfiguraLeaveComponente;
            }

           
if (controle is ComboBox)
            {
                ComboBox combo = (ComboBox)controle;
                combo.DropDown +=
this.ConfiguraLeaveComponente;
            }

            // Chamada recursiva para configurar os controles filhos do item atual
            foreach (Control controleFilho in controle.Controls)
            {
               
this.ConfigurarFocoComponentes(controleFilho);
            }
        }

        private void JanelaBasica_Load(object sender, System.EventArgs e)
        {
            //...
            //...
            // Configura a cor de fundo dos campos que estão com o foco
            if (
this.HighlightControlOnFocus)
            {
                this.
ConfigurarFocoComponentes(this);
            }
            //...
            //...
        }

Artigos Relacionados:

Criando e configurando propriedades em C#

Selecionar conteúdo dos campos assim que estiverem com o Foco - C#

Marcadores: , , ,


terça-feira, 2 de setembro de 2008

 

Como proteger seu Notebook

Notebook
Lembra-se daquele caso da Petrobrás, que teve um dos seus laptops roubados e nele haviam várias informações confidenciais que poderiam dar vantagem competitiva à empresa que detivesse esses dados?
É de se admirar que em nenhum momento foi comentado que esse notebook possuia um sistema de segurança para proteger as informações contidas nele.
Isso nos leva a repensar a forma como protegemos nossos dados pessoais ou da empresa para a qual trabalhamos.
Já apresentei em outros artigos aqui no Coelho Na Rede uma forma de proteger suas informações em um pen drive, utilizando o software opensource TrueCrypt.
Hoje, li um artigo muito interessante, no site Lifehacker, que fez um tutorial sobre como proteger seu notebook. Não só as informações contidas nele (usando também o TrueCrypt), mas também como dificultar o seu extravio, além de como aumentar as chances de recuperá-lo, em caso de roubo/furto.
Para ler o passo-a-passo veja o artigo How to Set Up a Laptop Security System do site Lifehacker, escrito por Adam Pash (em inglês).

Marcadores: , , , , ,


quinta-feira, 17 de julho de 2008

 

Substituindo caracteres acentuados e cedilha com o Delphi

Já havia feito isso a um bom tempo atrás, mas hoje estava precisando fazer novamente o código que substitui caracteres com acento pelo correspondente sem acento no momento que a pessoa digitar a letra.
Porém, estava com preguiça de escrevê-lo novamente então acessei o Google para procurar.
Putz, nada... Será que ninguém mais usa Delphi aqui no Brasil ou o pessoal têm preguiça de postar uma dica na internet, hehe.
Brincadeiras a parte, resolvi publicar aqui no Coelho Na Rede. Então lá vai.
Basta codificar da seguinte forma o evento KeyPress do Edit que não pode ter caracter acentuado ou cedilha:
procedure TfrmCadastroPessoa.dbeNomePessoaKeyPress(Sender: TObject; var Key: Char);
begin
   inherited;
   case Key of
      'Á', 'Â', 'Ã', 'À', 'Ä', 'Å': Key := 'A';
      'á', 'â', 'ã', 'à', 'ä', 'å': Key := 'a';
      'é', 'ê', 'è', 'ë'          : Key := 'e';
      'É', 'Ê', 'È', 'Ë'          : Key := 'E';
      'í', 'î', 'ì', 'ï'          : Key := 'i';
      'Í', 'Î', 'Ì', 'Ï'          : Key := 'I';
      'ó', 'ô', 'õ', 'ò', 'ö'     : Key := 'o';
      'Ó', 'Ô', 'Õ', 'Ò', 'Ö'     : Key := 'O';
      'ú', 'û', 'ù', 'ü'          : Key := 'u';
      'Ú', 'Û', 'Ù', 'Ü'          : Key := 'U';
      'ç'                         : Key := 'c';
      'Ç'                         : Key := 'C';
      'ñ'                         : Key := 'n';
      'Ñ'                         : Key := 'N';
      'ý', 'ÿ'                    : Key := 'y';
      'Ý', 'Ÿ'                    : Key := 'Y';
   end;
end;
No mais é isso, outras dicas interessantes sobre como efetuar essa mudança você pode conferir no seguinte link (Evitar acentuação e cedilha da TiFórum)

Marcadores: , , ,


terça-feira, 15 de julho de 2008

 

Concatenando campo TEXT com VARCHAR em Select do SqlServer

Hoje passei novamente por um problema na hora de efetuar uma pesquina no banco de dados MSSqlServer.
Estava precisando criar um 'Select' contendo um campo 'Observacao' (do tipo Text) adicionado de um outro campo 'Descricao' [de uma outra tabela, do tipo Varchar(100)], porém como esse tipo de campo, 'Text', é muito problemático [em vários aspectos, tanto que a recomendação é a utilização do VARCHAR(MAX)], não é possível concatená-lo a uma outra string utilizando o caracter de adição (+).
Portanto, como resolver esse problema? A maneira mais fácil é a de converter o 'Text' para 'Varchar(8000)' antes de efetuar a concatenação, dessa forma:
SELECT CONVERT(VARCHAR(8000), campoText) + campoVarchar AS novoNomeCampo
FROM <...>

Mas lembre-se, quando estiver criando uma nova tabela prefira utilizar VARCHAR ao TEXT. Para conferir mais sobre o assunto verifique o site da Microsoft (Leia o artigo: Using text and image Data), repare que no início desse artigo eles avisam que o tipo TEXT será descontinuado nas próximas versões do SqlServer:
Important: This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use varchar(max), nvarchar(max) and varbinary(max) data types instead. For more information, see Using Large-Value Data Types.

Marcadores: , , ,


domingo, 6 de julho de 2008

 

A vida pode ser simples !!!

A vida parece ser tão complicada, muitas vezes ficamos até mesmo sem saber o que fazer, como agir e como resolver nossos problemas...
Às vezes, não sabemos nem a quem recorrer ou com quem conversar...
Bem, deixando de lado meus pensamentos, descobri um site muito interessante (em inglês) que tem por objetivo tornar a vida das pessoas mais simples, é o Real Simple: Life made easier.
O exemplo que eu vi é espetacular, "Como dobrar um jornal para leitura dentro de ônibus", te juro que jamais havia pensado nisso... Lógico que eu não leio jornal no ônibus, hehe... mas vale a dica para quem lê.
Dobradura de Jornal

Fonte: lifehacker.com

Marcadores: , ,


quarta-feira, 21 de maio de 2008

 

Como habilitar o NumLock antes do login (Ubuntu)

Uma das coisas mais chatas que um sistema operacional tem é a capacidade de desligar o NumLock cada vez que ele é ligado.
Não é por falta de configuração do setup da bios, pois mesmo habilitando essa opção, esses sistemas teimam em desligá-lo.
No WindowsXP eu já publiquei como mudar essa configuração através do regedit ().
E no Ubuntu ocorre a mesma coisa... Apesar dele ser religado, automaticamente, após o login, já é o suficiente para aborrecer qualquer um que utilize uma senha contendo números, como é o meu caso...
Portanto, vamos ao que interessa: Como habilitar o NumLock automaticamente, antes do login do Ubuntu:

Leia o artigo Enabling NumLock during startup and before login

Marcadores: , ,


domingo, 23 de março de 2008

 

Como se cadastrar no 110MB.com

**************** Alteração 01 ****************

Já entrei em contato com o 110mb.com, e avisei que o link para registro está com problemas. Porém, esse problema parece estar ocorrendo somente aqui no Brasil, então eles não conseguem detectar o problema e falam que está tudo bem com o site.

Lembrei que utilizando sites de proxy (por exemplo ZTunnel) nossa localização acaba sendo mascarada.

Então para burlar esse problema no 110Mb.com basta acessar o ZTunnel e digitar na caixa de pesquisa o site do 110MB e clicar em no botão "Begin Browser" assim como na figura abaixo

Burlar 110MB.com

Depois é só seguir o tutorial abaixo para se cadastrar no site.

Quando receber o email de confirmação do cadastro, copie o link e utilize o ZTunnel novamente para finalizar o cadastro.


Observação: Agora o cadastro no site voltou a ficar fácil novamente. Basta preencher os seguintes campos:

* Username
* Password
* Your Primary Email Address
* Terms of Service (Marque o checkbox)
* Human Validation


110mb free hosting

**********************************************

Até pouco tempo atrás era muito fácil cadastrar-se no site 110MB.com e criar um subdomínio para o seu site ou blog (no formato: username.110mb.com).
Agora, eles fizeram uma alteração no processo de registro de novos usuários, primeiro para evitar o registro automático no site, e segundo, porém o mais importante, é para confirmar que as pessoas façam uma leitura mínima dos termos de uso do serviço, o que acabou dificultando um pouco mais o cadastro no site.
A dificuldade encontra-se em preencher o campo "Signature", pois, para isso, deve-se ler a página "Terms of Service" e encontrar a frase correspondente.

Para facilitar a vida de quem quer efetuar o cadastro no 110MB.com siga os passos abaixo. Preencha os campos:
- Username
- Password (2 vezes)
- Primary Email Address (repare que eles solicitam que vc confira o email antes de continuar)
- Terms of Service - Signature [nesse ponto vc deve ir até a página TOS e localizar, no final dela, a informação "Signature: (Enter below text into signature box at the registration page)", anote a frase que vem logo abaixo dela (Observe também as maiúsculas) para preencher o campo Signature. Por enquanto a frase é I will never engage in phishing or abusive actions on 110mb , porém essa frase pode mudar, portanto dê uma conferida antes de continuar]
- Terms of Service (Marque o CheckBox indicando que vc conhece as regras para a utilização da conta)
- Anti-Span Validation (Preencha com o texto do Captcha, somente os que estão em preto. Como o 'Zero' e a letra 'o' são parecidos, preencha com a letra 'O' e não com Zero)
- Clique em "Create My Account Now"

Aguarde o correio de confirmação do cadastro e clique no link para confirmar a nova conta. Se você não fizer isso em até 15 dias, o registro será cancelado.

Agora que vc tem a sua conta pronta, basta publicar o seu site no servidor. Repare que com o seu username e password vc tem acesso à sua conta via FTP, muito interessante para quem tem uma conta no Blogger.

Para quem não conhece o 110MB.com, abaixo segue algumas das características dele (Confira a lista completa em "110MB Features"):
* 5 GB Espaço - Grátis
* 300 GB Tráfego - Grátis
* FTP (chmod enabled) - Grátis
* PHP 5 - Grátis
* MYSQL 5 - Você precisa ativar
* SSI - Grátis
* CGI/Perl - Você precisa ativar
* Python - Você precisa ativar
* Sendmail (PHP Mail) - Você precisa ativar
* Sem Popups, Spam ou anúncios deles
* Você pode utilizar um domínio que você já tenha registrado.
110mb free hosting

Marcadores: , ,


sexta-feira, 14 de março de 2008

 

Que tal ter uma Mosquiterica em sua casa...

No meu artigo anterior, Você conhece a "Mosquitérica", eu expliquei sobre ela.
Caso você queira saber mais, acesse o Portal da Dengue da UFRJ, lá você encontra o passo-a-passo de como construir a sua própria armadilha para o mosquito da dengue.

E para terminar, o lema da campanha: "Faça seu vizinho feliz" hehe...
Obs.: Pois a idéia e que faça uma para você e outra para dar de presente para o seu vizinho... Presentão, para ele e para a sua família.


Quem quiser conferir melhor acesse o site da Globo que tem uma Fotogaleria sobre como montar a armadilha: "Faça sua mosquitoeira"

Marcadores: , , ,


 

Você conhece a "Mosquitérica"

Bem, não é a Mosca Histérica como você deve estar pensando... Se bem que as "mosquitas" poderiam ficar dessa forma caso soubessem o que esse aparelho, inventado pelo professor de microbiologia da UFRJ Maulori Curié Cabral, faz.

A mosquitérica é um recipiente feito através de uma garrafa de refrigerante e funciona como uma "ratoeira" para fêmeas de mosquito (de qualquer tipo, não só as transmissoras da dengue, Aedes Aegypti) pois fornece um ambiente adequado para elas porem os seus ovos.

Segundo o professor, a mosquitérica não resolve o problema da dengue, pois as pessoas devem continuar se preocupando em não deixar outros pontos de proliferação, mas ela ajuda a direcionar os insetos para um local específico, controlado pelo morador da casa, quebrando o ciclo reprodutor deles.

Além disso, o professor ensinou como detectar se as larvas são do Aedes Aegytpi. Basta aproximar uma fonte de luz (como uma lanterna) da mosquitérica, caso as larvas se afastem da luminosidade, então elas são desse tipo, pois elas preferem ficar em um ambiente escuro.

Para saber como construir a sua mosquitérica basta acessar o link do Jornal A Tribuna.



Fonte: Jornal A Tribuna do dia 13/03/2008

Marcadores: , , ,


segunda-feira, 10 de março de 2008

 

Recuperação de CD / DVD arranhado

Eu sempre utilizei pasta de dente para tentar recuperar CD/DVD com erro de leitura (por causa de arranhões) até com um certo sucesso.
Porém, o Octávio Augusto, do Guia do PC, acrescentou um ingrediente especial, para aumentar o nível de sucesso nas recuperações desses tipos de mídia, que é a cera polidora de carro.
Segundo ele, essa é a melhor mistura e, com ela, já conseguiu recuperar vários discos.
Na hora do desespero vale tudo...
Quem quiser ver o tutorial dele basta acessar a mensagem "Recupere seu DVD/CD riscado!" do Guia do PC.

Marcadores: , ,


terça-feira, 4 de março de 2008

 

Criando e configurando propriedades em C#

No meu artigo anterior, sobre como configurar o auto-select no C# Windows Forms, eu expliquei como selecionar o conteúdo de campos texto (ex.: TextBox e NumericUpDown) quando o ele receber o foco.
Para evitar a repetição de código, podemos acrescentar aqueles métodos a um formulário ancestral.
Alem disso, devemos criar uma propriedade para que as janelas descendentes possam decidir se desejam ativar esse serviço. Para isso, basta acrescentar o seguinte código à janela ancestral (além dos outros códigos do artigo anterior):

private bool bolAutoSelectOnFocus;

[Category("Focus")]
[Description("Ativa o método de AutoSelect dos campos da interface.")]
[DisplayName("AutoSelectOnFocus")]
public bool AutoSelectOnFocus
{
    get { return bolAutoSelectOnFocus; }
    set { bolAutoSelectOnFocus = value; }
}

Depois disso, é só codificar o evento "Load" da ancestral de forma a ativar o serviço somente se for solicitado pela janela descendente:

private void JanelaPadrao_Load(object sender, System.EventArgs e)
{
    //...
    if (this.AutoSelectOnFocus)
    {
        this.DelegateEnterFocus(this);
    }
}

Observe que na criação da propriedade podemos configurar alguns atributos dele. Caso você não informe a categoria, a propriedade irá aparecer no grupo "Misc" da "Properties Windows".

Marcadores: , , , ,


sexta-feira, 8 de fevereiro de 2008

 

Crie Ringtones para seu celular


Existem vários sites onde podemos baixar toques para celular (ringtones), um deles é o BRTones que também possui imagens e aplicativos para download. Mas o melhor mesmo é criar o seu próprio "ringtone".
Para criar o seu próprio tom para celular, existem vários programas, mas o que eu utilizo é o Audacity que é um freeware OpenSource hospedado no site do SourceForge.
Com esse software instalado é possível abrir um arquivo MP3, selecionar um pedaço da música e gravá-lo com uma taxa de bits menor (o que permite gerar um "ringtone" pequeno, já que a maioria dos celulares possui pouca área de armazenamento).
 

Para gerar um Ringtone para seu celular siga os passos abaixo:
  1. Faça o download do Audacity e instale-o;
  2. Faça o download do LAME MP3 Encoder e descompacte seu conteúdo no diretório onde foi instalado o Audacity;
  3. Gere ou baixe um arquivo MP3 com a música de onde você quer tirar um parte para montar o ringtone;
  4. Abra o arquivo MP3 pelo Audacity e selecione a parte da música que você quer gerar o Tom (através do gráfico de ondas da música que é apresentado no software);
  5. Vá ao item de menu "Editar | Preferencias...";
  6. Na página "Formatos de Arquivo", clique no botão "Encontrar Plug-in" e localize a DLL (lame_enc.dll - que você descompactou no diretório do Audacity), mude a "Taxa de bits" (bitrate) para um valor menor do que o atual, por exemplo "90 kb", clique em OK;
  7. Agora clique no item de menu "Arquivo | Exportar seleção como MP3" para salvar o pedaço da música que você selecionou;
Teste o "ringtone" e verifique a qualidade dele. Caso não fique boa, basta voltar ao Audacity e escolher uma "Taxa de Bits" maior e Exportar a selecão novamente.
Depois de pronto, é só enviar o Tom para o celular, via cabo de dados, BlueTooth, etc.
Obs.: Reduzindo a taxa de bits, a qualidade do som também será diminuída, mas como os celulares não reproduzem muito bem, essa mudança costuma não ser perceptivel. Portanto, depende de cada um realizar esses ajustes.

Marcadores: , , , , , , ,


terça-feira, 22 de janeiro de 2008

 

Selecionar conteúdo dos campos assim que estiverem com o Foco - C#

Quando você precisar que o conteúdo de um campo editável tipo TextBox e MaskedTextBox (herdados de TextBoxBase) ou NumericUpDown (UpDownBase) você pode extender o funcionamento desses componentes através de herança, mas isso deixa para depois.
Uma maneira mais fácil é criar um método com a mesma assinatura dos eventos "Enter" do controle e delegar esse método para todos os campos do formulário que precisam dessa funcionalidade.
Abaixo eu apresento o código do método "SelectText_Enter" que fica encarregado de selecionar o conteúdo do campo, de acordo com o tipo dele (no meu caso os herdados de "TextBoxBase" e "UpDownBase") e o evento "DelegateEnterFocus" que fica responsável por procurar todos os campos do formulário e delegar a funcionalidade criada para o evento "Enter" deles:

//___ Seleciona todo o texto de um controle. _______________________________________
private void SelectText_Enter(object sender, System.EventArgs e)
{
    // Executa o método de forma assíncrona - pois o MaskedTextBox já executa um
    //
select no evento "Enter" do foco, que acaba desfazendo a seleção.
    this.BeginInvoke((MethodInvoker)delegate()
    {
        if (sender is UpDownBase)
        {
            ((UpDownBase)sender).Select(0, ((UpDownBase)sender).Text.Length);
        }
        else if (sender is TextBoxBase)
        {
            ((TextBoxBase)sender).SelectAll();
        }
    });
}


//__ Associa o evento "SelectText_Enter" a cada um dos campos com texto ____________
private void DelegateEnterFocus(Control ctrl)
{
    if ((ctrl is UpDownBase) || (ctrl is TextBoxBase))
    {
        ctrl.Enter += SelectText_Enter;
        return;
    }

    // Chamada recursiva para associar o evento a todos os controles da interface
    foreach (Control ctrlChild in ctrl.Controls)
    {
        this.DelegateEnterFocus(ctrlChild);
    }
}


Depois de criados esses métodos, codifique o evento "Load" do formulário com a chamada para o evento "DelegateEnterFocus":

//___ Configura o evento "Enter" dos campos com texto ______________________________
private void JanTeste_Load(object sender, EventArgs e)
{
    this.DelegateEnterFocus(this);
}

Tópicos Relacionados

Criando e configurando propriedades em C#

Mudar a cor do campo quando recebe o foco (C# Windows Forms)

Marcadores: , , , ,


segunda-feira, 21 de janeiro de 2008

 

ENTER funcionando como TAB - Windows Forms C# - Versão 2


Eu já publiquei no artigo "Como usar o ENTER como TAB..." uma forma de simular o funcionamento da tecla TAB quando for pressionado o ENTER utilizando o método "SelectNextControl".
Uma outra maneira de realizar esse procedimento é o de chamar o método estático "Send" da classe "SendKeys":

SendKeys.Send("{TAB}");

Portanto, se você quer que o ENTER funcione igual ao TAB (até quando o usuário utilizar em conjunto com a tecla SHIFT) utilize o seguinte código no evento "OnKeyPress" do um campo (Obs.: se quiser que ele funcione para todos os campos do formulário, confira o artigo anterior):

if (e.KeyCode == Keys.Enter)
{
    if (e.Shift)
    {
        SendKeys.Send("+{TAB}");
    }
    else
    {
        SendKeys.Send("{TAB}");
    }
}

Ou simplificando a função:

if (e.KeyCode == Keys.Enter)
{
    SendKeys.Send((e.Shift ? "+" : "") + "{TAB}");
}


Observação - Na combinação de teclas faça o seguinte:
=> Shift + Tab:
SendKeys.Send("+{TAB}");
=> Ctrl + Tab:
SendKeys.Send("^{TAB}");
=> Alt + Tab:
SendKeys.Send("%{TAB}");

Marcadores: , , , ,


segunda-feira, 7 de janeiro de 2008

 

Como usar o ENTER como TAB no Windows Forms - C#

Para fazer a tecla ENTER funcionar como a TAB no Windows Forms, basta fazer duas coisas:
(1) Alterar a propriedade KeyPreview do Formulário para " true"
(2) Preencha o evento KeyDown do Formulário com o seguinte código:
if (e.KeyCode == Keys.Enter)
{
    this.SelectNextControl(this.ActiveControl, !e.Shift, true, true, true );
}

Obs.1: O código " !e.Shift" indica que é para mudar para o próximo campo se pressionado ENTER, e ir para o campo anterior se pressionados SHIFT e ENTER simultaneamente (o mesmo funcionamento do SHIFT + TAB).

Marcadores: , , , ,


quinta-feira, 20 de dezembro de 2007

 

Pesquisa incremental com Combobox no C#

O controle Combobox do Visual Studio possui várias configurações que permite que seu funcionamento seja alterado.
Como exemplo, digamos que necessitamos que temos uma lista de dados que não muda, portanto, o usuário deverá escolher um entre esses itens. Além disso, o usuário não quer abrir a lista e procurar a linha a ser selecionada, ele deseja digitar o nome ou o código e quer que o registro seja selecionado automaticamente.
Isso nada mais é do que uma pesquisa incremental na lista de itens da Combobox.
A partir da versão 2005 do Visual Studio essa opção foi adicionada ao controle, e para configurá-la configurada basta selecionar as seguintes propriedades:
· DropDownStyle = DropDownList
· AutoCompleteSourec = ListItens
· AutoCompleteMode = Append

Marcadores: , , , ,


segunda-feira, 10 de dezembro de 2007

 

Escondendo um TabPage em C#

Como a Microsoft esqueceu de incluir uma propriedade Visible para os TabPages do controle TabControl é necessário utilizar um artifício para ocultar e reapresentar um ou vários tabpages.
Abaixo eu apresento um exemplo dos métodos que devem ser codificados para simular o Visible do TabPage.
Obs.: No meu exemplo inserir um TabControl (tabControl1) e dois TabPages dentro dele (tabPage1 e tabPage2). No meu caso, o TabPage2 é que ficará oculto (Lembre-se que o primeiro índice de arrays no C# é o Zero).

namespace ...
{
    public partial class ...
    {
...
        private TabPage _tabPage2;
...
        // Ao iniciar a janela armazena a TabPage que precisará ser ocultada
        private void JanelaTeste_Load(object sender, EventArgs e)
        {
            // Armazena um ponteiro para a tabpage2
            this._tabPage2 = this.tabControl1.TabPages[1];

            // Oculta a visualização da tabpage2
            this.tabControl1.TabPages.RemoveAt(1);
        }
...
        private void ConfiguraTabPage2(bool abVisible)
        {
            if (abVisible)
            {
                // Se ela ainda não está visível
                if (this.tabControl1.TabPages.Count == 1)
                {
                    // torne-a visivel no TabControl
                    this.tabControl1.TabPages.Add (this._tabPage2);
                }
            }
            else
            {
                // Senão, oculta essa tabpage
                if (this.tabControl1.TabPages.Count == 2)
                {
                    this.tabControl1.TabPages.RemoveAt(1);
                }
            }
        }
...
    }
}

Marcadores: , , , ,


terça-feira, 30 de outubro de 2007

 

Capturando foto webcam via Delphi

A pouco tempo atrás eu estava precisando desenvolver um cadastro que possibilitasse armazenar uma foto de cada pessoa cadastrada.
Como utilizo o Delphi 2005 com banco de dados Firebird (versões 1.5 e 2.0) não foi difícil desenvolver essa tela. Mas, como fazer para obter a foto da pessoa cadastrada diretamente de uma Webcam, facilitando assim a utilização do sistema.
Procurei na internet e acabei achando um site que falava sobre um componente que capturava imagens da webcam, porém, não estava completo e também só funcionava até o Delphi 7. Consegui baixar do SourceForge os componentes que faltavam e as atualizações dos que eu já tinha. Precisei fazer algumas alterações para que a captura passasse a funcionar, além de baixar duas Dll's do DirectX que são necessárias para a codificação funcionar.
Abaixo estão os links para o download dos componentes, das dll's e da janela de teste de captura de imagens:
* Componentes DSPack => (Download com as minhas alterações p/ Delphi 2005)
* Janela de Testes => (Download)
* Dll's do DirectX 9.2 => (Download)

Abaixo eu apresento algumas imagens de como ficou a janela de captura, que foi adaptada do exemplo que vem junto com o pacote do DSPack.

Fig1.: Preparando a captura


Fig2.: Efetuando a captura


Fig3.: Enviando imagem para a tela de cadastro

Quem tiver alguma dúvida, pode mandar uma mensagem que eu respondo.

Agradecimentos ao blog do DProgrammer que foi a fonte inicial da minha pesquisa.

Marcadores: , , ,



Add to Technorati Favorites Adicionar aos Favoritos BlogBlogs diHITT

Assinar Postagens [Atom]