sábado, 30 de outubro de 2010

Dicas Delphi - Novo site do UserControlpck

Salve, salve amigos,

Novo site do pacote de componente FREE para controle de Usuario, já esta disponivel.



Take care

Dicas Delphi - Mudando a cor de fundo de linhas diferentes em um Listbox

Salve, salve amigos,

Crie uma nova aplicação, insira um Listbox e altere a propriedade Style para lbOwnerDrawFixed, depois clique na propriedade Items (...) e digite alguns valores em linhas diferentes. Copie o código abaixo no evento OnDrawItem do Listbox.

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
myColor: TColor;
myBrush: TBrush;
begin
myBrush := TBrush.Create;
with (Control as TListBox).Canvas do
begin
if not Odd(Index) then
myColor := clSilver
else
myColor := clWhite;
myBrush.Style := bsSolid;
myBrush.Color := myColor;
Windows.FillRect(handle, Rect, myBrush.Handle);
Brush.Style := bsClear;
TextOut(Rect.Left, Rect.Top,(Control as TListBox).Items[Index]);
MyBrush.Free;
end;
end;

Não se esqueça de incluir valores no Listbox para que possa ser visto o efeito das cores. Execute a aplicação e veja a o funcionamento.

Take care!

sábado, 16 de outubro de 2010

Dicas Delphi - Limpando Componentes Automaticamente

Salve, salve amigos,

Uma função que faz a limpeza automática dos componentes da tela, como Edit's, Memo's, etc.

Procedure para limpar somente os Edits:


Por wandinhodelphiweb - http://www.activedelphi.com.br

procedure LimpaEdit; 
var 
  i : Integer; 
begin 
  for i := 0 to ComponentCount -1 do 
    if Components[i] is TEdit then 
      TEdit(Components[i]).Text := ''; 
end;

E agora uma mais genérica, que utiliza a classe TCustomEdit, limpando automaticamente os Memo's e todos os outros componentes que herdam desta classe:

procedure LimpaEdit (Form: TForm); 
var 
  i : Integer; 
begin 
  for i := 0 to Form.ComponentCount - 1 do 
    if Form.Components[i] is TCustomEdit then 
      (Form.Components[i] as TCustomEdit).Clear; 
end;
 
 
Take care 

Dicas Delphi - Criando um Gerador de Senhas

Salve, salve amigos,

Veja nesta dica um código simples mas bastante útil, que gera senhas aleatórias podendo conter somente numeros, somente letras ou letras e números.

Primeiramente, vamos ao tutorial: insira em um form um Edit, abaixo dele um RadioGroup e depois outro Edit. Nesse RadioGroup, procure pela propriedade
Items no Object Inspector e adicione o seguinte: 

Somente números Somente letras Letras e números
Após isso, adicione dois Buttons. No primeiro mude a propriedade Caption para "Gerar" e o segundo "Limpar". No OnClick do botao "Gerar" coloque o seguinte código:

Por http://www.activedelphi.com.br

procedure TForm1.Button1Click(Sender: TObject);
const 
  letras = 'abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ';
  numeros = '1234567890';
  letrasnumeros = letras + numeros;
var 
  i: integer;
begin
  try 
    Edit2.Clear;
    for i := 1 to StrToInt(Edit1.Text) do
    begin 
      if RadioGroup1.ItemIndex = 0 then 
        Edit2.Text := Edit2.Text + numeros[random(length(numeros)) + 1]
      else if RadioGroup1.ItemIndex = 1 then 
        Edit2.Text := Edit2.Text + letras[random(length(letras)) + 1]
      else if RadioGroup1.ItemIndex = 2 then 
        Edit2.Text := Edit2.Text + letrasnumeros[random(length(letrasnumeros)) + 1];
    end;
  except 
    showmessage('Insira somente números no primeiro Edit');
  end;
end;


Explicando

Criamos uma variavel i, do tipo inteira, que irá receber a quantidade de caracteres que o usuário quiser para a sua senha. Por isso convertemos o valor do Edit1.Text de String para Inteiro (StrToInt) dentro do for. Criamos também três constantes, adicionando a cada uma respectivamente as letras, numeros ou as duas juntas.

O comando "Try" funciona da seguinte maneira: falamos para o Delphi tentar executar esse código e, caso ele não conseguir, podemos utilizar o Except para apresentar, por exemplo, algumas mensagens de erro do que pôde acontecer. 

No exemplo, deve ser informado no Edit1 a quantidade de caracteres da senha e, caso a pessoa coloque letras ao invés de números, a função StrToInt não conseguirá ser executada. Com o Except, conseguimos informar ao usuário este problema e tiramos a mensagen de erro que o delphi emitiria, em inglês.

No segundo botão, coloque apenas:

procedure TForm1.Button2Click(Sender: TObject);
begin 
  Edit2.Clear;
end;

Nesse momento, compile e rode sua aplicacão, informe um número no primeiro edit, selecione um método de geração e veja a senha gerada no segundo edit. É o nosso código em funcionamento!

Take care