Arquivo

Posts Tagged ‘Delphi’

TMemo e TDBMemo: Pesquisa e margens

Neste artigo aprenderemos a fazer uma pesquisa e colocar margens no TMemo e no TBDMemo.

Neste artigo ensinarei à vocês como se fazer uma pesquisa, e margear no TMemo:

Neste pequeno artigo vocês aprenderão como pesquisar texto e formatar o conteúdo do TMemo com margens à direita e esquerda. Vamos abrir o Delphi e criar um novo projeto, e em seguida adicionar  os seguintes componentes no formulário: um TMemo, um TEdit e dois TButton conforme o layout da imagem abaixo:

 Figura 1. Layout do Formulário

Depois de realizado este processo, ao evento OnClick do Button1 “Caption Buscar conforme Layout”, implementar o seguinte código:

Listagem 1: Implementando onClick do Button1


procedure TForm1.Button1Click(Sender: TObject);
var  Find:
 string;  i:
integer;
begin
  Find := Edit1.Text;
  For i := 0 to Memo1.Lines.Count - 1 do
    If Pos(Find, Memo1.Lines.Text) <> 0 Then
    Begin
      Memo1.SetFocus();
      Memo1.SelStart := Pos(Find, Memo1.Lines.Text) - 1;
      Memo1.SelLength := Length(Find);
    end;
end;

Ao clicar no Button1 esse código irá procurar o texto digitado no Edit1, dentro do Memo1 e encontrá-lo irá dar um destaque para o mesmo. Bastante simples e direto, além de não ser complexo, bastante  útil para Blob Text extenso.

Agora, vamos adicionar margens no Memo1. Para adicionar margens no TMemo é necessário enviar uma mensagem EM_SETRECT e definir o recurso de tamanho de tela.

Vamos ao código. No evento OnClick do Button2 “Caption Margens conforme Layout”, implementar o seguinte código:

Listagem 2: Implementando onClick do Button2

procedure TForm1.Button2Click(Sender: TObject);
var
   R: TRect;
   LeftMargin: integer;
   RightMargin: integer;
 begin
   LeftMargin:= 20;
   RightMargin:= 10;
   R:= Memo1.ClientRect;
   R.Left:= R.Left + LeftMargin;
   R.Top:= R.Top + 2;
   R.Bottom:= R.Bottom - 2;
   R.Right:= R.Right-RightMargin;
   SendMessage(Memo1.Handle, EM_SETRECT, 0, Longint(@R)) ;
end;

Lembrando que o mesmo exemplo poderá ser usado com o componente TDBMemo. Agora tudo o que temos que fazer é adicionar qualquer texto nas linhas do componente Memo1 e ver o excelente  resultado.

Espero que tenham gostado, segue o código fonte para facilitar o trabalho de vocês.

Muito obrigado. Fico por aqui, e espero por vocês na próxima! Grande abraço.

Anúncios

Como fazer o sistema falar

Veja neste artigo como fazer o sistema falar, através da importação de um Activex, podemos importar esta funcionalidade para dentro do Delphi
Já assisti muitos filmes sobre os hackers. Geralmente um homem jovem senta-se na frente de seu computador e fala com seus sistemas, dá comandos de voz e o computador como um servo estudioso, trabalha sem encostar no teclado. Apesar do fato da capacidade e  reconhecimento de fala está constantemente evoluindo e melhorando. Evidentemente, que neste momento, é muito difícil estabelecer um sistema de controle de computador, que seria reconhecido por milhares de comandos e executar esses comandos. Mas, temos o Speech API, um  conjunto de interfaces de Fala e Reconhecimento de Voz: Mais neste artigo usando SAPI vamos ensinar seu computador falar.

Microsoft Speech API (SAPI) tem um voz feminina e conhecida como Anna e fala a língua inglesa.

O primeiro passo para usar SAPI devemos importado o Activex para o Delphi. Então abra a IDE do Delphi, selecione menu principal, “Component Import Component” na janela seguinte escolha a opção “Import Type Library“, conforme imagem a  baixo e clique em “Avançar”:

Figura 1. Type of Component.

Agora encontrar o “Microsoft Speech Object Library”, selecioná-lo, clique em “Avançar”

Figura 2. Registered Type Libraries.

Na nova janela, selecione a opção “Generate Component Wrappers” e clique em “Concluir”:

Uma Unit chamada SpeechLib_TLB.pas será criada e salva por default no caminho que esta no campo Unit Dir Name: no código fonte esta disponível o arquivo SpeechLib_TLB.pas.

Figura 3. Component.

Agora estamos pronto para trabalhar com SAPI 5.4.

Crie um novo projeto VCL inclua um componente TEdit e um componente TButton como segue figura abaixo e vamos fazer a Anna ler nossas mensagens.

Figura 4. Layout do Formulário.

No Evento OnClick do Button1 implemente o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var gpIVTxt: ISpVoice;
 Pool: LongWord;
begin
  gpIVTxt:=CoSpVoice.Create as ISpVoice;
  gpIVTxt.Speak(PChar(Edit1.Text),SVSFDefault,Pool);
end;

Agora você pode executar este programa, escreva no campo Edit1 “I LOVE DELPHI” ou qualquer outra frase em inglês, pressione o botão ouça a Anna falar.

Figura5. Programa em execução.

Existe outra forma de fazer a Anna ler, arquivos TXT, vamos incluir mais 2 componentes em nosso projeto mais um TButton e um TOpenDialog, como segue a imagem abaixo:

Figura 6. Layout do Formulário.

Listagem 2: No Evento OnClick do Button2 implemente o código abaixo:

procedure TForm1.Button2Click(Sender: TObject);
var  gpIVTxt: ISpVoice;
  Pool: LongWord;
begin
  if OpenDialog1.Execute then
   Edit1.Text := OpenDialog1.FileName;
  gpIVTxt := CoSpVoice.Create as ISpVoice;
 gpIVTxt.Speak(PChar(Edit1.Text), SVSFIsFilename, Pool);
end;

Agora crie um arquivo que contém um texto em inglês e tenha em conta todos os sinais de pontuação. Clique no botão Arquivo TXT e ouça a voz de Anna lendo todo o arquivo.

Este é um simples exemplo, pesquise sobre Microsoft Speech API que vai encontrar outros idiomas e outros Agent “vozes” além de Anna.

Código Fonte

Um grande abraço a todos e paz no coração!

Categorias:Artigos, Delphi Tags:, ,

Criar Formulários AERO

Veja neste artigo como criar formulários AERO. Como utilizar este efeito bem interessante implementado desde o Windows Vista.

Hoje iremos aprender a criar formulários, com efeito, vidro.

Para que o estilo AERO tenha o efeito vidro é necessário que tenha como sistema operacional Windows Vista, Windows 7 ou Superior.

O tema AERO terá que estar ativo em seu Windows, caso contrário o efeito de vidro é ignorado e impossível de ser realizado.

Bem… É muito simples, fácil e rápido realizar o efeito. Para que este seja realizado, temos que alterar somente três propriedades do Form, dando-nos um resultado criativo e bacana.

Para começar, abra um novo projeto VCL, e altere as propriedades que seguem abaixo:

Propriedades a serem alteradas:

DoubleBuffered = True

Veja a figura abaixo da propriedade DoubleBuffered alterada:

Figura 1. DoubleBuffered alterada para True.

Alterando as 2 ultimas propriedades a serem alteradas que são:

GlassFrame.Enabled = True

SheetOfGlass = True

segue figura abaixo da propriedade GlassFrame.Enabled e SheetOfGlass alterada:

 

Figura 2. GlassFrame.Enabled e  SheetOfGlass alterada para True.

Agora apenas execute-o, e o resultado será esse:

Resultado

Figura 3. Resultado.

Quando a propriedade SheetOfGlass alterado para True todo o formulário passa a ter o efeito vidro, mais também é possível fazer o efeito somente em uma área do formulário.

Passe a propriedade SheetOfGlass para False a propriedade, Left para 125 e a propriedade Rigth para 25 como segue a figura abaixo:

Figura 4. SheetOfGlass alterada para False, Left 125 e Right 25.

Para finalizar, apenas execute-o, e o resultado será esse:

Figura 4. Resultado Final.

Esta foi uma dica que com 3 cliques do mouse temos um efeito bacana.

Espero que o artigo tenha sido útil, e que acima de tudo tenham gostado.

Um abraço, e espero vocês na próxima.

 

 

 


Categorias:Artigos, Delphi Tags:, ,

Inicializar seu programa com o Windows

Como fazer seus programas serem executados na inicialização do Windows

É fácil o suficiente arrastar e soltar seu aplicativo ao grupo de inicialização do Windows para executá-lo na inicialização do Windows. Mas, se você quiser fazer isso no seu programa, no final do seu programa de instalação por exemplo, ou se você quisesse fazer seu programa execute apenas uma vez a próxima vez que o Windows iniciar, função a seguir poderia vir a calhar:

procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: boolean);
var
 sKey: string;
 reg : TRegIniFile;
begin
if bRunOnce then
 sKey := 'Once'
else
 sKey := '';
 reg := TRegIniFile.Create('');
 reg.RootKey := HKEY_LOCAL_MACHINE;
 reg.WriteString('Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0, sProgTitle, sCmdLine);
 reg.Free;
end;

Utilização:

sProgTitle Titulo do programa. De um modo geral, esta poderia ser qualquer coisa que você quer.

sCmdLine Este é o nome do caminho completo onde o programa executável se encontra.

bRunOnce  Defina este como verdadeiro se você deseja executar o programa apenas uma vez.

Se este parâmetro estiver False, o programa especificado será executado sempre que Windows iniciar.

Exemplo:

RunOnStartup(‘Titulo do Progama’, ‘MeuProg.exe’, False);

Considerações importante

incluir Registry no uses

Se ao executar seu teste aparecer o seguinte erro

Figura 1.Mensagem de erro

Você que utiliza o Windows 7 como sistema operacional do seu computador, já deve ter passado por várias situações onde é obrigatório o uso do usuário “Administrador” para executar ou instalar determinado programa, e não é por menos, quem utiliza uma conta “normal”, usuário comum, ou ainda um “Usuário convidado” não tem privilégios para executar determinadas funções do sistema, isto (em partes) acaba sendo muito legal, já que dá maior segurança ao seu sistema, por outro lado, acaba sendo muito chato, já que na maneira convencional, temos que clicar com o botão direito do mouse  sobre o arquivo ou programa que desejamos executar como “Administrador” e selecionar  a opção “Executar como administrador”, como na imagem abaixo:

Figura 2.Menu ao clicar com o botão direito

clique com o botão direito do mouse sobre seu programa e escolha a opcao Executar como Administrador.

Caso queira habilitar sua conta de administrador no Windows 7 execute o cmd como administrador Digite “net user administrator /active:yes”, sem aspas, dentro do prompt de comando e depois tecle “enter”

Figura 3.Command prompt

Pronto, agora você pode notar que a conta vai aparecer na tela de logon.

Figura 4.Logon do Windows 7

Já estou fugindo do escopo principal, paro por aqui.

Um abraço e até a próxima.

Categorias:Artigos Tags:, ,

QrCode código de barras bi-dimensional

Neste artigo iremos aprender como criar código de barras 2d QRCode

O QR Code é uma tecnologia que poucas pessoas no Brasil conhecem, é um código de barras 2D que está sendo cada vez mais utilizado em anúncios publicitários, videoclipes e uma série de outras situações.

Ficou curioso para saber como funciona? Então confira este artigo.

Trata-se de um código de barras 2D capaz de armazenar até 4.296 caracteres alfanuméricos de texto.

Códigos QR pode ser lido por um dispositivo que vão desde leitores de código QR e para qualquer celular que permite ao usuário apontar a câmera para uma figura.

O mais legal é que você mesmo pode criar um QR Code !

Então vamos nessa, crie um novo projeto Delphi Vcl e iremos adicionar um TImage, TMemo, TButton, 2 TMaskEdit, TComboBox e 3 TLabel, , abaixo temos o layout do formulário.

Figura 1. Layout do Formulário

Mudando as propriedades dos componentes no projeto .

Image1 Height e Width mude para 321

Memo1 Lines mude para digite aqui sua mensagem

EditMask1 EditMask mude para !999;1;

EditMask2 EditMask mude para !999;1;

EditMask1 Text mude para 300

EditMask2 Text mude para 300

ComboBox1 Text mude para L – [padrão] Permite a recuperação de até 7% de perda de dados

ComboBox1 Items mude para L – [padrão] Permite a recuperação de até 7% de perda de dados

M – Permite a recuperação de até 15% de perda de dados

Q – Permite a recuperação de até 25% de perda de dados

H – Permite a recuperação de até 30% a perda de dados

ComboBox1 Style mude para csDropDownList

ComboBox1 ItemIndex mude para 0

Button1 Caption mude para Gerar Etiqueta

Codificando o projeto, incluir 3 classes no uses PngImage, HTTPApp, WinInet, procedure WinInet_HttpGet, procedure GetQrCode, constante UrlGoogleQrCode e uma variável enumerada na sessão Type com o nome TQrImage_ErrCorrLevel.

Observação. variável enumerada é um tipo de variável pré-definida criada na sessão Type Exemplo:

Type

TDiaSemana = (segunda, terça-feira, domingo);

Assim que definir um tipo de dados enumerado, podemos declarar variáveis para ser desse tipo:

var algumdia: TDiaSemana;

O objetivo principal de um tipo de dados enumerado é deixar claro quais dados o programa irá manipular. Um tipo enumerado é realmente apenas uma maneira abreviada de atribuição de valores seqüenciais a constantes. Dadas estas declarações, terça-feira é uma constante do tipo TDiaSemana .

1.Ficando assim nosso código até o momento!

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Memo1: TMemo;
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
PngImage,
HTTPApp,
WinInet;

{$R *.dfm}

type
TQrImage_ErrCorrLevel = (L, M, Q, H);

const
UrlGoogleQrCode =
'http://chart.apis.google.com/chart?chs=%dx%d&cht=qr&chld=%s&chl=%s';
QrImgCorrStr: array [TQrImage_ErrCorrLevel] of string = ('L', 'M', 'Q', 'H');

procedure WinInet_HttpGet(const Url: string; Stream: TStream);
const
BuffSize = 1024 * 1024;
var
hInter: HINTERNET;
UrlHandle: HINTERNET;
BytesRead: DWORD;
Buffer: Pointer;
begin
hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hInter) then
begin
Stream.Seek(0, 0);
GetMem(Buffer, BuffSize);
try
UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0,
INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
begin
repeat
InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
if BytesRead > 0 then
Stream.WriteBuffer(Buffer^, BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end;
finally
FreeMem(Buffer);
end;
InternetCloseHandle(hInter);
end
end;

procedure GetQrCode(Width, Height: Word;
Correction_Level: TQrImage_ErrCorrLevel; const Data: string;
StreamImage: TMemoryStream);
Var
EncodedURL: string;
begin
EncodedURL := Format(UrlGoogleQrCode,
[Width, Height, QrImgCorrStr[Correction_Level], HTTPEncode(Data)]);
WinInet_HttpGet(EncodedURL, StreamImage);
end;

end.

2. No Evento OnClick do Button1 implemente o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
ImageStream: TMemoryStream;
PngImage: TPngImage;
begin
Image1.Picture := nil;
ImageStream := TMemoryStream.Create;
PngImage := TPngImage.Create;
try
try
GetQrCode(StrToInt(Trim(MaskEdit1.Text)), StrToInt(Trim(MaskEdit2.Text)),
TQrImage_ErrCorrLevel(ComboBox1.ItemIndex), Memo1.Lines.Text,
ImageStream);
if ImageStream.Size > 0 then
begin
ImageStream.Position := 0;
PngImage.LoadFromStream(ImageStream);
Image1.Picture.Assign(PngImage);
end;
except
on E: exception do
ShowMessage(E.Message);
end;
finally
ImageStream.Free;
PngImage.Free;
end;

3. No Evento OnCreate do Form1 implemente o código abaixo:

 Button1Click(Sender);

Neste momento se você executar o projeto vai ter o seguinte resultado:

Considerações finais:

Podendo criar uma rotina para impressão da etiqueta.
Para decifrar o códigos é necessário de um aplicativo instalado em seu celular segue o site do aplicativo:
http://i-nigma.com/i-nigmahp.html

Vamos ver imagens e vidêos como são usados o QRCode.

Programa de TV francês: caça ao tesouro com QR Code .
http://www.youtube.com/watch?v=zn4mIKMH7S4

Veja onde usam o QRCode.
http://www.qrstuff.com/qr_code_examples.html

Qrcode em camisetas.
http://www.messa.com.br/eric/ecode/uploaded_images/qr_tshirt01-715400.jpg

Espero que tenham gostado
Um grande abraço a todos!

Código Fonte clique aqui

Categorias:Artigos Tags:,

Memória utilizada nos sistemas

Veja neste artigo como descobrir o percentual de memória utilizada nos sistemas.

Olá pessoal, vamos ver neste artigo como podemos saber o percentual de memória utilizada nos sistemas .

Iniciaremos agora criando um novo projeto em Delphi e iremos adicionar um  TTimer e um TGauge  no mesmo, abaixo temos o layout bem simples do formulário.
Figura 1. Layout do Formulário
Neste momento vamos implementar nosso código :
No Evento OnTimer do componente Timer1 implemente o código abaixo:
procedure TForm1.Timer1Timer(Sender: TObject);</span>
var
Mem: TMemoryStatus;
begin
Mem.dwLength := SizeOf(Mem);
GlobalMemoryStatus(Mem);
Gauge1.MaxValue := Mem.dwTotalPhys;
Gauge1.Progress := Mem.dwTotalPhys - Mem.dwAvailPhys;
end;
Veja a informação de memória utilizada em meus sistemas .
A dica final seria incluir exemplo em uma tela de recursos de sistema e hardware .
espero que tenham gostado, ate a próxima.
Um grande abraço!
Categorias:Artigos Tags:,

Cindy components for all Delphi versions

Componentes de qualidade free

link abaixo :

http://sourceforge.net/projects/tcycomponents/files/

Categorias:Componentes Tags:, ,
%d blogueiros gostam disto: