Códigos e Dicas

 

Dicas Delphi – Preencher com ZEROS à esquerda

 

 

Salve, salve amigos



 

// No Evento OnExit de um componente Edit1 por exemplo


Procedure TForm1.Edit1Exit(Sender: TObject);

var x : Integer;

 

begin
   if (edit1.text’ ‘) then
     begin x := strtoint(edit1.Text);
        edit1.Text:= Format(‘%6.6d’,[x]);


        // Definiu o texto como tendo 6 caracteres inteiros, ou seja, 6 números.
        // Basta trocar este valor para mais ou menos de acordo com a sua necessidade.

     end;



//   Na propriedade MaxLength (no object inspector) do edit1,
//   defina também o valor com o mesmo número de caracteres usado na codificação acima.

 


Take care

Dicas Delphi – Retornar as Iniciais de uma String

 

 

Salve, salve amigos,



// função retorna as iniciais de uma String. Ex: ‘Saída por Consumo’ vai retornar SPC

Function RetornaIniciais(x: String): String;
var
   i:Integer;
   aux:String;
   iniciais:String;
begin
        iniciais:=”;
        aux:=Trim(x);
        if aux” then
        begin
           iniciais:=MidStr(aux,1,1);
           i:=AnsiPos(‘ ‘,aux);
            while i>0 do
              begin
                iniciais:=iniciais+MidStr(aux,i+1,1);
                aux:=midstr(aux,1,i-1)+MidStr(aux,i+1,length(aux));
                i:=AnsiPos(‘ ‘,aux);
            end;//
            while i>0 then
        end;
        if aux” then
        Result:=UpperCase(iniciais);
end;



Take care

Dicas Delphi – Calculo da Idade

 

 

// Essa dica é um demostrativo de como se calcular a idade de uma pessoa em anos,
// meses e/ou dias
// 1º Declare na uses a unit DateUtils
// 2º Insira um Button e um Maskedit no Form
// 3º Na propriedade EditMask do Maskedit insira o formato Date e modifique
// no campo Input Mask esse formato para 4 dígitos no ano e dê OK
// 4º No evento OnClick do Button insira o código e execute



Procedure TForm1.Button1Click(Sender: TObject);
var

  Ano, Mes: Integer;
  Total_dias: Real;
begin



  //Descobrir a idade somente em anos, meses ou dias...



  ShowMessage(IntToStr(YearsBetween(Date, StrToDate(MaskEdit1.Text))) + ' anos');
  ShowMessage(IntToStr(MonthsBetween(Date, StrToDate(MaskEdit1.Text))) + ' meses');
  ShowMessage(IntToStr(DaysBetween(Date, StrToDate(MaskEdit1.Text))) + ' dias');


  // ou
  // Descobrir a idade em anos, meses e dias, complicando um pouco mais...



Total_dias := DaysBetween(Date, StrToDate(MaskEdit1.Text));

Ano := StrToInt(Copy(MaskEdit1.Text, 7, 4));
   while Total_dias > 365 do
     begin
        Total_dias := Total_dias - DaysInAYear(Ano);
        Ano := Ano + 1;
     end;
        Mes := StrToInt(Copy(MaskEdit1.Text, 4, 2));
        while Total_dias > 28 do
        begin
                if Total_dias >= DaysInAMonth(Ano, Mes) then
                begin
                        Total_dias := Total_dias - DaysInAMonth(Ano, Mes);
                        Mes := Mes + 1;
                end
                else
                break;
        end;
        Ano := Ano - StrToInt(Copy(MaskEdit1.Text, 7, 4));
        Mes := Mes - StrToInt(Copy(MaskEdit1.Text, 4, 2));

        if StrToDate(MaskEdit1.Text) <= Date then
           ShowMessage(IntToStr(Ano) + ' anos, ' + IntToStr(Mes) + ' meses e ' + FloatToStr(Total_dias) + ' dias')
        else
           ShowMessage('Impossível realizar cálculo! Data > que a data atual!'); 


end;

Dicas Delphi – Letreiro Digital – Direita para Esquerda

 

 

Salve, salve amigos,


// Coloque um Timer, um Panel e um Label dentro do Panel.
// Dê um duplo clique no Timer e digite o código abaixo:}



if label1.left>= -(label1.Width) then

    label1.left:=label1.left-1
else

    label1.left := Panel1.width;

// Você pode alterar a velocidade do texto na propriedade Interval do Timer, quanto

//menor o Interval, mais rápido ficará o letreiro.
 

Take care

Dicas Delphi – Como mudar imagens de acordo com as horas

 

 

//  Altere o intervalo do timer para 200 ou como preferir.


Procedure TForm1.Timer1Timer(Sender: TObject);

begin
    if date > strtodate('10:00:00') then

          image1.pictures.loadfranfile('c: estefoto1.jpg');

    if date > strtodate('11:00:00') then

        image1.pictures.loadfranfile('c: estefoto2.jpg');
end;

Dicas Delphi – Função para inverter um string

 

 

Function Inverte (wStr1: String): String;var i: Integer;

begin

        Result := '';
        for i := Length( wStr1 ) downto 1 do

              Result := Result + copy(wStr1,i,1 );

end;

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



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.



Dicas Delphi – Limpando Componentes Automaticamente

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

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:


 

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;

Dicas Delphi – Criando um Gerador de Senhas

 

Por www.activedelphi.com.br

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:



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;

 

Dicas Delphi – Varrendo componentes no Delphi

 

Às vezes, quanto temos vários componentes num mesmo formulário, fica cansativo efetuar operações com todos eles ao mesmo tempo, como também aumenta o número de linhas no nosso código fonte. Esta dica, é uma maneira de como contornar este problema.


Digamos que temos a seguinte situação: Um formulário com 30 TEdits e você que limpar todos eles. Você pode usar o método clear ou definir a propriedade text como nula:



Edit1.text := ”;
//ou
Edit1.Clear;



Até aí tudo bem, o problema é que seriam 30 linhas a mais no código. Não fará diferença ao compilador, porém, fica esteticamente ruim para a manutenção (isso porque são 30 linhas, imagine se tivessemos 100 edits).



Então, como proceder? Simples:



Procedure TForm1.Button1Click(Sender: TObject);
Var
   i : integer;
   begin
    for i := 0 to Self.ComponentCount – 1 do
     begin
      if UpperCase(Self.Components[i].ClassName) = Uppercase(‘TEdit’);
      TEdit(Self.Components[i]).Clear;
 end;
end;



Explicando o código:



* Usamos o for para varrer todos os componentes do formulário;
* No if, verificamos se a classe do componente é TEdit, ou seja, verificamos se o componente é um TEdit (ou outro componente, TButton, por exemplo.);
* Caso a condição seja verdadeira, é feito um cast e executado o método clear.

Dicas Delphi – Verifica se o computador está conectado a internet

 

Verificar se o computador está conectado a internet

Function TfrmMenu.estaConectado: boolean;
var
flags : DWORD;
 begin
   // verifica se está conectado a internet usando a API do Windows, é preciso declarar a uses WinInet.
      if not InternetGetConnectedState(@flags, 0) then
  result := false
  else
 result := true;
end;