Faça sua buscar ...

sábado, 7 de maio de 2016

Verificar se está conectado à Internet



A função abaixo retorna true se estiver conectado e false
caso contrário.
function RemoteConnection: boolean;
const
Key = '\System\CurrentControlSet\Services\RemoteAccess';
Value = 'Remote Connection';
var
Reg: TRegistry;
Buffer: DWord;
begin
Result := false;

Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(Key, false) then
begin
Reg.ReadBinaryData(Value, Buffer, SizeOf(Buffer));
Result := Buffer = 1;
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;


Exemplo de uso
Para testar a função coloquei um Timer e um Label no
formulário. No evento OnTimer do Timer escrevi o
código abaixo.


procedure TForm1.Timer1Timer(Sender: TObject);
begin
if RemoteConnection() then
Label1.Caption := 'Conectado'
else
Label1.Caption := 'Desconectado';
end;

Títulos com mais de uma linha no DBGrid

Um dos grandes problemas do Componente DbGrid é que ele não possui uma propriedade para poder colocar o título das colunas em várias linhas. Mas isto não é tão verdade assim. Umas de suas classes ancestrais possui várias propriedades protegidas que possibilitam alterar algumas características do DbGrid. Esta classe é a TCustomGrid. Vamos ao código. Crie um Tipo após as declarações da classe TForm:
type
TAccessDBGrid = class(TCustomGrid);

No evento onDrawColumnCell escreva o código abaixo:
procedureTForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
S1, S2: String;
begin
with TAccessDBGrid(DBGrid1) do
begin
//Limpando o Título da Coluna
RowHeights[0] := 32;
Canvas.Brush.Style := bsClear;
//Títulos da Coluna
case Column.Index of
0: begin
Column.Title.Caption := '';
S1 := 'Row 1';
S2 := 'Row 2';
end;
1: begin
Column.Title.Caption := '';
S1 := 'Row 1';
S2 := 'Row 2';
end;
end;
//Escrevendo o Título
Canvas.TextOut(Rect.Left+2, 2, S1);
Canvas.TextOut(Rect.Left+2, 16, S2);
end;


Explicando o Código
Ao declarar um tipo de uma classe ancestral e associando a classe filho, as propriedades que antes eram protegidas podem ser alteradas nesta classe filho. É o que acontece na Linha:
RowHeights[0] := 32;
A propriedade RowHeights é um vetor onde cada índice representa a linha do Grid. A linha inicial (Título), a altura é alterada para 32.
Após o titulo original da coluna ser alterada, os valores das linhas são armazenados nas variáveis S1 e S2. Depois quem faz o trabalho é a propriedade Canvas que posiciona os valores das variáveis em duas linhas no Título da coluna
Conclusões
O código acima mostrou como escrever um título em uma coluna do DbGrid com mais de uma linha, precisa de mais implementações: Escrever centralizado, verificação em todas as colunas e outros de acordo com a necessidade do desenvolvedor. Só um lembrete, este código só funciona se as colunas do DbGrid forem adicionadas na propriedade Columns.

sexta-feira, 23 de janeiro de 2015

Alinha um edit a direita

   SysLocale.MiddleEast := true;
   Edit.BiDiMode := bdRightToLeft;

Arredondamento TEdit

procedure ArredondarComponente(Componente: TWinControl; const Radius: SmallInt);
var
  R : TRect;
  Rgn : HRGN;
begin
  with Componente do
  begin
    R := ClientRect;
    Rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, Radius, Radius);
    Perform(EM_GETRECT, 0, lParam(@R));
    InflateRect(R, -5, -5);

Função para criptografar e descriptografar uma string


Function Crypt(Opcao : String; Dados : String): String;
var
  I : Integer;
  Key : Word;
  Res : String;
const
  C1    = 33598;
  C2    = 24219;
  Chave = 16854;
begin
  Key := Chave;
  for I := 1 to length(Dados) do
    begin
      Res := Res + Char(Byte(Dados[I]) xor (Key shr 8));
      if Opcao = 'CRYPT' then
        Key := (Byte(Res[I]) + Chave) * C1 + C2;
      if Opcao = 'DECRYPT' then
        Key := (Byte(Dados[I]) + Chave) * C1 + C2;
    end;
  Result := Res;
end;

{Para criptografar uma string:}
  Edit2.Text := Crypt('CRYPT',Edit3.Text);

{Para descriptografar uma string criptografada por esta função:}
  Edit1.Text := Crypt('DECRYPT',Edit2.Text);

Delphi - CheckBox no DBGrid.



Ola Pessoal,

Após um tempo de turbulência no trabalho, mais um post.
Vamos ao código pra fazer isso ;-)

1) Crie seu formulário, com o DBGrid conectado a tabela.
2) Selecione o seu DBGrid e acione o evento OnDrawColumnCell.
3) Coloque o seguinte código

procedure Tfrm_tarefas.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Check: Integer;
  R: TRect;
begin
  if Column.FieldName = 'concluido' then //COLOQUE O NOME DA COLUNA, NO MEU CASO 'CONCLUIDO'
  begin
    DBGrid1.Canvas.FillRect(Rect);
    Check := 0;
    if tarefasconcluido.AsBoolean = true then
      Check := DFCS_CHECKED
    else
      Check := 0;
    R:=Rect;
    InflateRect(R,-2,-2); {Diminue o tamanho do CheckBox}
    DrawFrameControl(DBGrid1.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
  end;
end;
4) Selecione o seu DBGrid e acione o evento OnCellClick
5) Coloque o seguinte código:


procedure Tfrm_tarefas.DBGrid1CellClick(Column: TColumn);
begin
  tarefas.Edit;
  if tarefasconcluido.AsBoolean = true then
    tarefasconcluido.AsBoolean := false
  else
    tarefasconcluido.AsBoolean := true;
  tarefas.Post;
end;

Backup das Configurações do Delphi


Tutorial – Backup das Configurações do Delphi para um Novo Computador
Antes de Começar, Alguns Pontos
  • É bom ressaltar aqui que não vou entrar em detalhes de como utilizar o editor de registro. Como programador acho que você já deve estar bastante familiarizado com a utilização dele.
  • Também não vou colocar fotos (screenshots) do processo por não achar necessário já que é um procedimento muito simples.
  • A não ser que você vá formatar o computador para instalar de novo, é recomendável deixar a instalação anterior intacta até ter tudo funcionando na nova máquina. Podem surgir excessões e com a instalação intacta é bem mais fácil resolver o problema visto que o Delphi irá informar qual/quais arquivos estão faltando. Mas acho que as dicas que dei até aqui cobrem tudo.
Primeira Parte – o Backup da Máquina/Instalação Antiga
Preparativos
Crie uma pasta onde salvaremos todos os arquivos que precisarão ser copiados. A pasta se chamará aqui c:\bkpdelphi. Dentro desta pasta crie as pastas c:\bkpdelphi\registros\, c:\bkpdelphi\borland\, c:\bkpdelphi\componentes\ e c:\bkpdelphi\system32\.
Copiando o Registro
Primeiro vamos salvar os arquivos de registro utilizados pelo Delphi. Execute o Editor de Registro através do comando Iniciar > Executar… clicando em ou usando a tecla de atalho Windows+R. Digite “regedit” e clique no botão OK ou pressione ENTER.

quinta-feira, 13 de março de 2014

Pesquisa de endereços utilizando WebBrowser do Delphi

Olá galerinha, neste artigo irei mostrar uma maneira prática e simples que é efetuar busca de endereços a partir de uma aplicação Delphi. A vantagem dessa abordagem é que a página será aberta dentro da sua aplicação no Delphi, sem a necessidade de acessar o Navegador Padrão do Sistema Operacional.

Criando um navegador

Abra o Delphi e crie uma nova aplicação, adicione no formulário os seguintes componentes: TWebBrowser, "2"TButoon, "6" TEdit's.


Renomei os Tedits com seus respectivos novos que irá ser utilizado na aplicação.
Para esse exemplo usaremos: Cidade, Estado, Rua, Cep, Latitude e Longitude.

No primiero TButton pesquisar pelos campos: Cidade, Estado, Rua, Cep. 

No Onclick do TButoon inseriam a código a seguir:

segunda-feira, 10 de março de 2014

Envio de Email utilizando Indy 9 Delphi 7

Olá a todos dando continuidade ao nosso artigos de envios de emails, segui nosso segundo e último procedimento para envios de email com aplicações Delphi 7.
Neste artigo irei mostrar como é fácil e rápido o envio utilizando o Indy 9. Quando estava efetuando o processo encontrei muitas informações indicando para que fosse atualizado o componente para a versão 10, porém mesmo com essas alterações consegui fazer uma aplicação sólida e eficaz para o segmento necessário.

Para  este exemplo estou disponibilizando, envios de email através do YAHOO, pois o mesmo não exige utilização comando POP2 para realizar a comunicação com o Servidor. Mas para uso com outros servidores de Emails basta acrescentar a opção pop de acordo com o servidor utilizado.


Vejam abaixo procedimento de envio.

Envio de Email utilizando Outlook Delphi 7

Sempre foi algo muito trabalhoso, mas existe um jeito simples e rápido de fazer esse processo.
Para darmos continuidade, é necessário ter instalado o Pacote Microsoft Office 2003, 2007, 2010 ou superior. Devido as mudanças de versões possa ter alguma diferença nos comandos, mas o processo é necessariamente o mesmo para todos.
Para realizar esse processo estou utilizando o Delphi 7 e o Office 2010. 

Com o Delphi aberto é necessário efetuar a importação da biblioteca do Office em si em uso para o me

Segui processo.: Project - Import Type Library - Selecione .: Microsoft Outlook 14.0 Object Library (Version 9.4).
Obs. Note Microsoft Outlook 14.0 pois estou utilizando Office 2010, caso seja inferior ou superior poderá ser alterado.

Apos isto clique em CREATE UNIT - salve como Outlook_TLB.

Logo abaixo Código: