Índice

  Como obter o Path de um Alias

  Ocultar ícones da área de trabalho

  Instalar Quick Report no Delphi 7

  Função para abreviar o nome

  Como converter DBF para Paradox e Access para Paradox

  Como obter seu endereço IP

  Como abrir as configurações do Painel de Controle

  BitBtn com quebra de linha

  Copiar o conteúdo da área de trabalho

  Como saber os estados das teclas Caps Lock, Num Lock e Scroll Lock 

  Ligar e Desligar as teclas Caps Lock, Num Lock e Scroll Lock 

  Verificar se há placa de som 

  Converter BMP para JPEG

  1ª letra em maiúscula no Edit

  ShowMessage com quebra de linha

  Abrir e Fechar o drive de CD-ROM

  Zerar campo AutoIncremento das tabelas paradox

  Máscaras explicação do que significa cada caracter

  Procedimentos com parâmetros opcionais

  Como salvar o preview do QuickReport para Word, Txt, Html

  Como executar programas externos

  Pegando a linha e coluna atual de um Memo

  Desabilitar e Habilitar Ctrl+Alt+Del

  Reproduzindo sons WAV, sem o componente MediaPlayer

  Como limpar todos os Edit's de um Form

  Como extrair o ícone de um executável

 

Como obter o Path de um Alias

Coloque na cláusula uses do seu Form a unit DBTables

function GetAliasPath(Alias: string): string;
var
  Params: TStringList;
begin
  Params := TStringList.Create;
  Session.GetAliasParams(Alias, Params);
  Result := Params.Values['PATH'];
  Params.Free;
end;

Topo

Ocultar ícones da área de trabalho

Para Ocultar:
ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE);

Para Mostrar:
ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW);

Topo

Instalar Quick Report no Delphi 7

No Delphi 7 já vem incluso o Quick Report, ele apenas não instala os componentes automaticamente.
Para instalar, abra o Delphi, vá em Component -> Install Packages, clique em ADD e localize o arquivo c:\Arquivos de Programas\Borland\Delphi7\Bin\dclqrt70.bpl.

Após isso a paleta do Quick Report será instalado.

Topo

Função para abreviar o nome

function AbreviaNome(Nome: string): string;
var
  Nomes: array[1..20] of string;
  I, TotalNomes: Integer;
begin
  Nome := Trim(Nome);
  Result := Nome;
  {Insere um espaço para garantir que todas as letras sejam testadas}
  Nome := Nome + #32;
  {Pega a posição do primeiro espaço}
  I := Pos(#32, Nome);
  if I > 0 then begin
    TotalNomes := 0;
    {Separa todos os nomes}
    while I > 0 do begin
      Inc(TotalNomes);
      Nomes[TotalNomes] := Copy(Nome, 1, I - 1);
      Delete(Nome, 1, I);
      I := Pos(#32, Nome);
    end;
    if TotalNomes > 2 then begin
      {Abreviar a partir do segundo nome, exceto o último.}
      for I := 2 to TotalNomes - 1 do begin
        {Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.)}
        {Pega apenas a primeira letra do nome e coloca um ponto após.}

        if Length(Nomes[I]) > 3 

          then Nomes[I] := Nomes[I][1] + '.';
    end;
    Result := '';
    for I := 1 to TotalNomes 

      do Result := Result + Trim(Nomes[I]) + #32;
      Result := Trim(Result);
    end;
  end;
end;

Topo

Como converter DBF para Paradox e Access para Paradox

Converter DBF para Paradox:
Execute o Database Desktop, abra uma nova QBE Query e procure o diretório onde está o DBF.
Uma vez escolhido, clique nele, aparecerá um retângulo com quadrinhos ao lado de cada campo, clique no primeiro quadrado que marcará todos automaticamente. Feito isso clique na paleta onde está escrito Query e vá em propriedades, aparecerá um Form onde você pode escolher entre Paradox ou dBASE, escolha Paradox e logo embaixo digite o diretório e o nome da tabela que você quer criar, clique no raiozinho para rodar a Query que então ele converterá para Paradox.

Converter Access para Paradox:

Digamos que você tenha um banco de dados em Access chamado escritorio.mdb e que nele tenha várias tabelas, vamos converter apenas uma, que no nosso exemplo se chama: Clientes e que se quisessemos converter outras o procedimento seria exatamente o mesmo.
Abra o Database Desktop e crie um alias chamado Escritorio, informe o drive desejado como Access, veja bem é Access e não Microsoft Access Drive, depois no campo database que se abriu bem abaixo, indique o diretorio onde se encontra o banco do access.
Uma vez que conectou, feche o alias e vá em file no menu do Database Desktop, clique em New e depois em SQL File, na janela que se abre digite SELECT * FROM Clientes, uma vez que digitou a instrução, clique no botão Query que está em cima há direita, ele tem um ponto de interrogação preto, bom depois de clicar se abrirá uma tela, bem no meio tem Table Type com duas opções: Paradox e dBASE, escolha Paradox, depois vá onde está Table Name bem no meio da tela, digite o diretório e o nome do arquivo que quer que receba a tabela do access convertida, pronto.

Topo

Como obter seu endereço IP

Coloque na cláusula uses do seu Form a unit Winsock

function GetIP: string;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  Name: string;
begin
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  with HostEnt^ do begin
    Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]),Byte(h_addr^[1]), Byte(h_addr^[2]),Byte(h_addr^[3])]);
  end;
  WSACleanup;
end;

Topo

Como abrir as configurações do Painel de Controle
WinExec('RunDLL32.exe Shell32.DLL, Control_RunDLL Desk.cpl', SW_Show)
//Os outros itens do Painel de Controle podem ser acessados mudando-se o nome do arquivo .cpl, exemplo: Modem.cpl, Netcpl.cpl.

Topo

BitBtn com quebra de linha
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Msg: String;
begin
  Msg := 'Linha 1' + #10 + 'Linha 2' + #10 + 'Linha 3';
  BitBtn1.Caption := Msg;
end;

Topo

Copiar o conteúdo da área de trabalho
procedure TForm1.Button1Click(Sender: TObject);
var
  R: TRect;
  DC: HDc;
  DeskCanvas: TCanvas;
  Bmp: TBitmap;
begin
  // cria o bitmap que vai receber a imagem
  Bmp := TBitmap.Create;
  Bmp.Height := Screen.Height;
  Bmp.Width := Screen.Width;
  // copia o conteúdo da área de trabalho para o bitmap
  R := Rect(0, 0, Screen.Width, Screen.Height);
  DC := GetWindowDC(GetDeskTopWindow);
  DeskCanvas := TCanvas.Create;
  DeskCanvas.Handle := DC;
  Bmp.Canvas.CopyRect(R, DeskCanvas, R);
  ReleaseDC(GetDeskTopWindow, DC);
  // salva o conteúdo do bitmap para um arquivo
  Bmp.SaveToFile('C:\Desktop.bmp');
end;

Topo

Como saber os estados das teclas Caps Lock, Num Lock,  e Scroll Lock
procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetKeyState(VK_CAPITAL) = 0
    then ShowMessage('Caps Lock está Desligado');
  if GetKeyState(VK_CAPITAL) = 1
    then ShowMessage('Caps Lock está Ligado');
  if GetKeyState(VK_NUMLOCK) = 0
    then ShowMessage('Num Lock está Desligado');
  if GetKeyState(VK_NUMLOCK) = 1
    then ShowMessage('Num Lock está Ligado');
  if GetKeyState(VK_SCROLL) = 0
    then ShowMessage('Scroll Lock está Desligado');
  if GetKeyState(VK_SCROLL) = 1
    then ShowMessage('Scroll Lock está Ligado');
end;

Topo

Ligar e Desligar as teclas Caps Lock, Num Lock e Scroll Lock
Coloque na cláusula uses do seu Form a unit Windows

procedure SetCapsLock(Estado: Boolean);
begin
  if (Estado and ((GetKeyState(VK_CAPITAL) and 1) = 0)) or
     ((not Estado) and ((GetKeyState(VK_CAPITAL) and 1) = 1)) then begin
    keybd_event(VK_CAPITAL, $45, KEYEVENTF_EXTENDEDKEY or 0, 0);
    keybd_event(VK_CAPITAL, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
  end;
end;

  // Exemplos de Uso
  SetCapsLock(True); 
// Liga
  SetCapsLock(False);
// Desliga


Observação: podemos usar esta mesma técnica para ligar/desligar Num Lock. Neste caso trocaríamos VK_CAPITAL por VK_NUMLOCK.

Topo

Verificar se há placa de som
Coloque na cláusula uses do seu Form a unit MMSystem

function VerificaSom: Boolean;
begin
  Result := (WaveOutGetNumDevs > 0);
end;

Topo

Converter BMP para JPEG

Coloque na cláusula uses do seu Form a unit Jpeg

 

procedure BmpToJpg(FileName: string);
var
  Jpg: TJpegImage;
  Stm: TMemoryStream;
  Bmp: TBitmap;
begin
  if FileExists(FileName) then begin
    Bmp := TBitmap.Create;
    Bmp.LoadFromFile(FileName);
    Jpg := TJpegImage.Create;
    Jpg.Assign(Bmp);
    Jpg.Compress;
    Stm := TMemoryStream.Create;
    Jpg.SaveToStream(Stm);
    Stm.Position := 0;
    Stm.SaveToFile(ChangeFileExt(FileName, '.jpg'));
    Stm.Free;
   Jpg.Free;
   Bmp.Free;
  end;
end;

O uso deste procedimento pode ser assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // após a conversão será criado o arquivo Seda.jpg no mesmo diretório
  BmpToJpg('C:\Windows\Seda.bmp'); 
end;

Topo

1ª letra em maiúscula no Edit
procedure TForm1.Edit1Change(Sender: TObject);
var
  OldStart: Integer;

begin
  with Edit1 do
    if Text <> '' then begin
      OnChange := nil;
      OldStart := SelStart;
      Text := UpperCase(Copy(Text, 1, 1)) + LowerCase(Copy(Text, 2, Length(Text)));
      SelStart := OldStart;
      OnChange := Edit1Change;
    end;
end;

Topo

ShowMessage com quebra de linha
procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: String;
begin
  Msg := 'Linha 1' + #13 + 'Linha 2' + #13 + 'Linha 3';
  ShowMessage(Msg);
end;

Topo

Abrir e Fechar o drive de CD-ROM
Coloque na cláusula uses do seu Form a unit MMSystem

{ Para abrir }
mciSendString('Set cdaudio door open wait', nil, 0, handle);

{ Para fechar }
mciSendString('Set cdaudio door closed wait', nil, 0, handle);

Topo

Zerar campo AutoIncremento das tabelas paradox
O parâmetro FileName é o nome da tabela, incluindo o caminho. E o parâmetro Base é o valor inicial para o contador do AutoIncremento.

function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
begin
  with TFileStream.Create(FileName, fmOpenReadWrite) do
    Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
end;

Topo

Máscaras explicação do que significa cada caracter  

Arquivo contendo explicação do que significa cada caracter usado nas máscaras. Tamanho 4,0 Kb.

Download

Topo

Procedimentos com parâmetros opcionais
A declaração abaixo faz com que o procedimento Aguardar assuma o valor 1 caso nenhum parâmetro seja passado. Ex: Aguardar() ou Aguardar.

procedure Aguardar(Segundos: Byte = 1);
begin
  Sleep(Segundos * 1000);
end;

Topo

Como salvar o preview do QuickReport para Word, Txt, Html

Coloque na cláusula uses do seu Form a unit QRExport

procedure TForm1.Button1Click(Sender: TObject);
begin
  QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create('c:\Report.doc'));

  QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create('C:\Report.txt'));

  QuickRep1.ExportToFilter(TQRHTMLDocumentFilter.Create('C:\Report.html'));
end;

Topo

Como executar programas externos 

WinExec('Command.com /C Teste.exe', "Tipo_de_Janela"); 

"Tipo_de_Janela"
SW_SHOWNORMAL - Visualização Normal da janela 
SW_MAXIMIZE - Janela Maximizada 
SW_MINIMIZE - Janela Minimizada 
SW_HIDE - Janela Escondida 

Topo

Pegando a linha e coluna atual de um Memo 
With Memo1 do begin
  Line := Perform(EM_LINEFROMCHAR, SelStart, 0); 
  Column := SelStart - Perform(EM_LINEINDEX, Line, 0); 
end; 

Topo

Desabilitar e Habilitar Ctrl+Alt+Del
{Desabilitar} 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  Numero: Integer; 
begin 
  SystemParametersInfo(97, Word(True), @Numero, 0); 
end; 

{Habilitar} 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  Numero: Integer; 
begin 
  SystemParametersInfo(97, Word(False), @Numero, 0); 
end; 

Topo

Reproduzindo sons WAV, sem o componente MediaPlayer
Coloque na cláusula uses do seu Form a unit MMSystem 

SndPlaySound('C:\Windows\Media\Som.wav', SND_ASYNC); 

Topo

Como limpar todos os Edit's de um Form 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 
I: Integer; 
begin 
  for I := 0 to ComponentCount - 1 do begin 
    if Components[I].ClassName = 'TEdit' then 
      TEdit(Components[I]).Clear; // ou TEdit(Components[I]).Text := '';
  end; 
end;
 

Topo

Como extrair o ícone de um executável 
Coloque na cláusula uses do seu Form a unit ShellApi 

Image1.Picture.Icon.Handle := ExtractIcon(Handle,
PChar('C:\Windows\Calc.exe'), 0);

Topo

Página Inicial