100 Dicas Delphi - Apostilas - Sistemas de Informação, Notas de estudo de Sistemas de Informação. Universidade Anhembi Morumbi (UAM)
Agua_de_coco
Agua_de_coco9 de maio de 2013

100 Dicas Delphi - Apostilas - Sistemas de Informação, Notas de estudo de Sistemas de Informação. Universidade Anhembi Morumbi (UAM)

DOC (269 KB)
61 páginas
3Números de download
770Número de visitas
1Número de comentários
Descrição
Apostilas de Tecnologia e Sistemas de Informação sobre o estudo das 100 melhores dicas selecionadas em toda a Internet para facilitar o apredinzado em Delphi.
20 pontos
Pontos de download necessários para baixar
este documento
baixar o documento
Pré-visualização3 páginas / 61

Esta é apenas uma pré-visualização

3 shown on 61 pages

baixar o documento

Esta é apenas uma pré-visualização

3 shown on 61 pages

baixar o documento

Esta é apenas uma pré-visualização

3 shown on 61 pages

baixar o documento

Esta é apenas uma pré-visualização

3 shown on 61 pages

baixar o documento

Um tutorial com as 100 melhores dicas selecionadas a dedo em toda a Internet para facilitar ainda mais o seu apredinzado em

Delphi.

Autor: Marcelo Jaloto Machado

mjaloto@bol.com.br

1) Mostrar e esconder o Botão Iniciar 2) Mostrar e esconder A Barra de Tarefas 3) Pegando o nome do usuario e a empresa do Windows 4) arrastar um Form sem clicar no Caption 5) Bloquear a tecla Ctrl+Del do DBGrid 6) ESCONDENDO A APLICAÇÃO DA BARRA DE TAREFAS 7) OS COMANDOS INC e DEC 8) COMO FAZER UM BEEP NO COMPUTADOR 9) COMO FAZER UMA PAUSA POR UM PERÍODO DETERMINADO 10) DESABILITANDO O SPLASH SCREEN DO REPORT SMITH 11) Lendo o volume do HD 12) descobrindo o número serial do hd 13) PARA SABER SOMENTE O PATH DA APLICAÇÃO 14) INTERCEPTAR AS TECLAS DE FUNÇÃO (f1, f2, f3...) 15) TRADUZINDO A MENSAGEM: "Delete Record?" 16) INCLUIr UM PREVIEW PERSONALIZADO nO QUICK REPORT 17) EXECUTANDO PROGRAMAS EXTERNOS 18) UTILIZANDO A TECLA ENTER PARA SALTAR DE CAMPO 19) Tocando um som Wav sem o Media Player 20) Obter o diretório onde seu programa está instalado 21) bloquear um arquivo em ambiente de rede 22) Usando Enter para mudar de campo de um DBGrid 23) Função para obter o número do registro atual 24) Enviando um arquivo para a lixeira 25) carregar um cursor animado (*.ani) 26) Transferir o conteúdo de um Memo para o MemoField 27) Capturando o conteúdo do Desktop 28) Escrevendo um texto diagonal usando o canvas 29) extrair um icone de um determinado aplicativo 30) Alinhando items do menu à direita 31) abrir automaticamente seu navegador padrão e carregar a página determinada

pelo link 32) copiar registros de uma tabela para outra incluindo valores NULos 33) deletar arquivos de um diretório com o caractere curinga '*' 34) capturar a lista de Aliases disponíveis 35) Abrir e Fechar a bandeja dO drive de CD-ROM 36) Utilizando o Code Explorer 37) Copiando arquivos via Delphi 38) abrir um TComboBox sem clicá-lo 39) mudar a cor da célula ativa do DBGrid 40) Como incrementar 1 mês numa data 41) Verificar se existe disquete no drive 42) Acessar o ambiente DOS 43) Executar um programa (DOS) e fechar sua janela em seguida

44) instanciar uma única vez um executável correspondente a uma determinada aplicação

45) Modificar várias propriedades de um objeto ao mesmo tempo 46) Para emitir um som quando o ENTER for pressionado 47) Encolhendo o executável 48) criar alias via programação 49) desabilitar as teclas (Ctrl+Alt+Del), (Alt+Tab), (Ctrl+Esc) 50) Fazer um Splash Screen 51) FUNÇÃO PARA ENCRIPTAR UMA STRING 52) Função reverter uma string 53) função de CONVERTER UM NúMERo inteiro para binário 54) função de CONVERTER UM NúMERo binário para inteiro 55) função para encriptar e descriptar uma String 56) UMA ROTINA PARA VERIFICAR ERROS EM TODA A APLICAÇÃO 57) Enviando informações direto para a impressora 58) Enviando Caracteres Diretamente ao Buffer da Impressora 59) Imprimir diretamente para a impressora sem passar pelo gerenciador de

impressão 60) Criar barra de status com suporte às caixas de edição do Windows 95 61) Capturando uma tela do windows 62) compactar de uma tabela Paradox 63) Configurações internacionais 64) Listando todas as janelas abertas 65) Primeira letra de um EditBox maiúscula 66) Desligar e Ligar o Monitor (Off/On) 67) Invertendo os Botões do Mouse 68) Mudar o Papel de Parede do Windows 69) Acessando arquivos Paradox em rede 70) Pesquisa incremental numa tabela 71) incluir mais de uma linha no Hint 72) Como saber se o aplicativo já foi aberto 73) Mostrar e alterar resoluções de vídeo 74) Verificar sistema operacional 75) Nome do usuário logado na rede 76) capturar o nome das tabelas de um banco de dados 77) Tabela dos caracteres especiais utilizados como máscara 78) Traduzir captions e botões da MessageDlg 79) último acesso de um arquivo 80) Obtendo as informações de versão dos arquivos 81) Acerta padrão de data 82) Como colocar um bitmap num ComboBox 83) adicionando um Bookmarks 84) Inserindo um Combobox num DBGrid 85) Como conectar uma unidade de rede 86) Configurar uma rede Novell 87) Configuração de Rede Windows 95/98 com Delphi 88) Criar um arquivo em tempo de execução 89) Controle sobre digitação 90) Criar arquivo DBF com indices compostos 91) Sistemas em Delphi para Linux

92) desenhar um bitmap no formulário 93) evitando a saída de formulário 94) desabilitando simultaneamente as teclas ( alt + f4 ) 95) Filtrando Registros 96) Como saber se um form já esta criado 97) não redimensionar o formulário 98) Criando Forms Dinamicamente (SDI) 99) Criando Forms Dinamicamente (MDI) 100) Definido o tamanho mínimo e máximo de um form

1)Mostrar e esconder o Botão Iniciar

Crie um sub-diretório chamado “Botão Iniciar” utilizando o windows explorer. Depois abra o DELPHI; feche o projeto que estiver aberto usando a opção Close

all dentro do menu File e crie um novo projeto utilizando a opção New Application também no menu File.

a) Mude as seguintes propriedades do Form1: Name : frmEsconderMostrar Caption : Programa para Esconder e Mostrar o Botão Iniciar Position : poScreenCenter BorderStyle : bsDialog Height : 104 Width : 403

b) Insira dois Botões no formulário: na Paleta de Componentes Standard - Button

c) Mude as seguintes propriedades do Button1: Name : btnEsconder Caption : Esconder o Botão Iniciar Width : 177

d) Mude as seguintes propriedades do Button2: Name : btnMostrar Caption : Mostrar o Botão Iniciar Width : 177

OBS : Salve o projeto no sub-diretório que você criou:

e) A Unit1 salve com o nome de untEsconderMostrar e o Project1 com o nome de EsconderMostrar

f) Na parte interface da unit (untEsconderMostrar) abaixo da clausula uses inclua a definição da procedure

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

Procedure MostrarEsconderIniciar(Estado:Boolean); {inclua esta linha}

Na parte implementation da unit (untEsconderMostrar) inclua a procedure MostrarEsconderIniciar: implementation

{$R *.DFM}

procedure MostrarEsconderIniciar(Estado:Boolean); Var taskbarhandle, buttonhandle : HWND; begin

taskbarhandle := FindWindow('Shell_TrayWnd', nil); buttonhandle := GetWindow(taskbarhandle, GW_CHILD); If Estado = True Then

ShowWindow(buttonhandle, SW_RESTORE) {mostra o botão} Else

ShowWindow(buttonhandle, SW_HIDE); {esconde o botão} end;

2) Mostrar e esconder A Barra de Tarefas

Crie um sub-diretório chamado “Barra de Tarefa” utilizando o windows explorer. Feche o projeto que estiver aberto usando a opção Close all dentro do menu File

e crie um novo projeto utilizando a opção New Application também no menu File.

a) Mude as seguintes propriedades do Form1: Name : frmBarraTarefa Caption : Programa para Esconder e Mostrar a Barra de Tarefa Position : poScreenCenter BorderStyle : bsDialog Height : 104 Width : 403

b) Insira dois Botões no formulário: na Paleta de Componentes Standard - Button

c) Mude as seguintes propriedades do Button1: Name : btnEsconder Caption : Esconder a Barra de Tarefa Width : 177

d) Mude as seguintes propriedades do Button2: Name : btnMostrar Caption : Mostrar a Barra de Tarefa Width : 177

OBS : Salve o projeto no sub-diretório que você criou:

e) A Unit1 salve com o nome de untBarraTarefa e o Project1 com o nome de BarraTarefa.

f) Na parte interface da unit (untBarraTarefa) abaixo da clausula uses inclua a definição da procedure

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

procedure EscondeBarraTarefa(EstadoBarra: Boolean);{inclua esta linha}

Na parte implementation da unit (untBarraTarefa) inclua a procedure EscondeBarraTarefa:

implementation

{$R *.DFM}

procedure EscondeBarraTarefa(EstadoBarra: Boolean); var wndHandle : THandle; wndClass : array[0..50] of Char; begin StrPCopy(@wndClass[0],'Shell_TrayWnd'); wndHandle := FindWindow(@wndClass[0], nil); If EstadoBarra=True Then ShowWindow(wndHandle, SW_RESTORE) {Mostra a barra de tarefas} Else ShowWindow(wndHandle, SW_HIDE); {Esconde a barra de tarefas} end;

3) Pegando o nome do usuario e a empresa do Windows

Crie um sub-diretório chamado “Usuário” utilizando o windows explorer. Feche o projeto que estiver aberto usando a opção Close all dentro do menu File

e crie um novo projeto utilizando a opção New Application também no menu File.

a) Mude as seguintes propriedades do Form1: Name : frmEmpresausuario Caption : Programa para ler do Windows nome do Usário e Empresa Position : poScreenCenter BorderStyle : bsDialog Height : 123 Width : 441

b) Insira um Botões no formulário: na Paleta de Componentes Standard - Button

c) Mude as seguintes propriedades do Button1: Name : btnUsuario Caption : Pegar nome do Usuário e Empresa no Windows Width : 241

d) Insira duas Caixas de Edição no formulário: na Paleta de Componentes Standard - Edit

e) Mude as seguintes propriedades do Edit1:

Name : EdtUsuario Text : vazio Width : 417

f) Mude as seguintes propriedades do Edit2: Name : EdtEmpresa Text : vazio Width : 417

OBS : Salve o projeto no sub-diretório que você criou:

g) A Unit1 salve com o nome de untEmpresaUsuario o Project1 com o nome de Usuario.

h) Na parte uses da interface da unit (untEmpresaUsuario) insira a clausula : Registry

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry;

No evento onClick do botão btnUsuario inclua as seguintes linhas de código:

procedure TForm1.Button1Click(Sender: TObject); var

reg: TRegIniFile; begin reg := TRegIniFile.create('SOFTWARE\MICROSOFT\MS SETUP (ACME)\'); EdtUsuario.Text := reg.ReadString('USER INFO','DefName',''); EdtEmpresa.Text := reg.ReadString('USER INFO','DefCompany',''); reg.free; end;

4) Como arrastar um Form sem clicar no Caption?

Quando você pressiona o botão do mouse, o Windows identifica a posição da tela onde o cursor estava no momento do clique. Se a posição é igual a área do Caption do Form, o Windows ativa o modo de movimentação do Form permitindo que este seja arrastado. Portanto, a maneira mais fácil de solucionar esta questão é "enganar" o Windows.

Neste exemplo vamos considerar que o usuário poderá arrastar o Form ao clicar na área cliente deste Form:

a) Crie uma nova aplicação; b) Adicione a seguinte declaração na seção private do Form:

procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;

c) Adicione o código deste procedimento na seção implementation do Form:

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest); begin

inherited; { ativa a herança da mensagem } if M.Result = htClient then{ o clique foi na área cliente? }

M.Result := htCaption; { se sim, faz o Windows pensarque foi no Caption. } end;

Este exemplo tratou o clique na área cliente. Você pode alterar este código para suas necessidades. Eis os possíveis valores para o Result:

VALOR - Local do clique HTBORDER - Borda da janela que não tem a borda de tamanho HTBOTTOM - Borda horizontal inferior da janela HTBOTTOMLEFT - Canto inferior esquerdo da janela HTBOTTOMRIGHT - Canto inferior direito da janela HTCAPTION - Barra de Título(Caption) HTCLIENT - Área cliente HTERROR - igual ao HTNOWHERE, a diferença é que produz um beep indicando erro HTGROWBOX - Caixa de tamanho (igual ao HTSIZE) HTHSCROLL - Barra de rolagem horizontal HTLEFT - Borda esquerda da janela HTMENU - Em um menu HTNOWHERE - Plano de fundo da janela ou linha de divisão entre janelas HTREDUCE - Botão minimizar HTRIGHT - Borda direita da janela HTSIZE - Caixa de tamanho (igual ao HTGROWBOX) HTSYSMENU - Botão de Sistema/Fechar da janela MDIChild HTTOP - Borda horizontal superior da janela HTTOPLEFT - Canto superior esquerdo da janela HTTOPRIGHT - Canto direito superior da janela HTTRANSPARENT - Janela em segundo plano HTVSCROLL - Barra de rolagem vertical HTZOOM - Botão maximizar 5) Bloquear a tecla Ctrl+Del do DBGrid.

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin

if ((Shift = [ssCtrl]) and (key = vk_delete)) THEN Abort;

end;

6) ESCONDENDO A APLICAÇÃO DA BARRA DE TAREFAS

Para fazer com que o ícone da aplicação em Delphi desapareça da Barra de Tarefas, execute o código a seguir:

var H : HWnd;

begin H := FindWindow(Nil,'Project1'); if H <> 0 then ShowWindow(H,SW_HIDE);

end;

7) OS COMANDOS INC e DEC

Você sabia que existe uma opção para a comum linha de comando: Variavel:=Variavel +1; ?

O comando INC e DEC permitem agilizar o processamento do seu sistema. Para isso substitua a linha acima por:

INC(variavel);

ou

DEC(variavel) se você quiser diminuir ao invés de aumentar 1.

8) COMO FAZER UM BEEP NO COMPUTADOR

messageBeep(0);

9) COMO FAZER UMA PAUSA POR UM PERÍODO DETERMINADO

NumSec é o tempo em segundos de espera

var NumSec SmallInt; StartTime: TDateTime;

begin StartTime := now; NumSec:=10;

repeat Application.ProcessMessages; until Now > StartTime + NumSec * (1/24/60/60);

end;

10) DESABILITANDO O SPLASH SCREEN DO REPORT SMITH

1 - Localize o arquivo RS_RUN.INI (no diretório do Windows); 2 - Na seção [ReportSmith] inclua a linha seguinte: ShowAboutBox=0 3 - Na seção [RS_RunTime] inclua a linha seguinte: ShowAboutBox=0

4 - Não se esqueça de distribuir com o seu aplicativo o referido arquivo INI.

11) Lendo o volume do HD

Function ExtractDiskSerial(Drive:String):String; Var

Serial:DWord; DirLen,Flags: DWord; DLabel : Array[0..11] of Char;

begin GetVolumeInformation(PChar(Drive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0); Result := IntToHex(Serial,8);

end;

12) descobrindo o número serial do hd

procedure TForm1.Button1Click(Sender: TObject); var SerialNum : pdword; a, b : dword; Buffer : array [0..255] of char; begin if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^); end;

13) PARA SABER SOMENTE O PATH DA APLICAÇÃO

ExtractFilePath( Application.ExeName )

14) INTERCEPTAR AS TECLAS DE FUNÇÃO (f1, f2, f3...)

Primeiro, coloque a propriedade KeyPreview do formulário como TRUE. Depois, insira este código no evento OnKeyDown do formulário:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F5 then

showMessage('I pressed the F5 key'); end;

Você também pode usar as variáveis VK_F1 até VK_F12 referentes as outras teclas de função.

15) TRADUZINDO A MENSAGEM: "Delete Record?"

Quando clicamos sobre o botão de deleção no DBNavigator (o do sinal de menos) surge uma box com a mensagem "Delete Record?" com botões Ok e Cancel. Para fazer aparecer a mensagem em português deverá selecionar o componente Table e mudar a propriedade ConfirmDelete para False e no evento da tabela BeforeDelete colocar o seguinte (flaviojr@cyber.com.br):

procedure TForm1.Table1BeforeDelete(DataSet:TDataSet); begin if MessageDlg('Eliminar o Registro?',mtConfirmation,[mbYes,mbNo],0)<>mrYes then Abort; end;

16) INCLUIr UM PREVIEW PERSONALIZADO nO QUICK REPORT

No relatório, criar a procedure SHOWPREVIEW contendo:

Procedure Showpreview; begin preview.showmodal; end;

Onde preview é o nome do form criado para preview. Não esquecer de incluir o nome da procedure na cláusula uses. Após isso, deve-se incluir no evento CREATE do formulario principal ou do relatório o direcionamento do objeto Qprinter, com a seguir:

qprinter.onpreview:=showpreview;

Isto faz com que toda vez que se desejar exibir um preview, o programa abra a rotina 'showpreview', que abre o formulário criado, chamado 'preview'.

17) EXECUTANDO PROGRAMAS EXTERNOS

Se você precisa abrir programas externos no seu aplicativo DELPHI, como a calculadora do Windows, por exemplo, inclua a seguinte linha no seu programa:

WinExec('calc.exe', sw_show);

'calc.exe' é o nome do programa. Caso queira abrir um outro programa, altere este nome.

18) UTILIZANDO A TECLA ENTER PARA SALTAR DE CAMPO

Insira este código em um evento OnKeyPress de um controle de edição:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin

If Key = #13 Then

Begin SelectNext(Sender as tWinControl, True, True ); Key := #0;

end; end;

19) Tocando um som Wav sem o Media Player

Acrescente MMSystem na Uses do começo na Unit

Utilize a API SndPlaySound(); Para interromper o som sem ele acabar de tocar utilize a API PlaySound(nil,0,0);

Ex: SndPlaySound('c:\teste.wav', snd_ASync);

PS: snd_Loop serve para repetir continuamente o som.

20) Obter o diretório onde seu programa está instalado

Crie uma váriavel do tipo String e insira a seguinte linha no evento ou função desejada do formulário:

ExtractFilePath(Application.Exename);

Retorna-rá o path atual do arquivo .EXE do seu programa.

21) Como bloquear um arquivo em ambiente de rede

É uma dica simples mas muito importante !!! Quando você programar visando uma rede e quiser bloquear um arquivo é só chamar o metodo "edit" da Tabela que estiver usando. EX: Table1.edit; PS: Se o registro já estiver bloqueado ocorrerá um erro, então você deve fazer o seguinte :

try { para verificar o erro } Table1.edit; exception on TDBEngineError do { o erro..} MessageDlg('Registro ja esta sendo usado...!', mtInformation, [ mbOk ], 0 ); end;

22) Usando Enter para mudar de campo de um DBGrid

If ( Chr(Key) <> #13) Then Exit; If ( DBGrid1.SelectedIndex + 1 <> DBGrid1.FieldCount ) Then

DBGRid1.SelectedIndex := DBGRid1.SelectedIndex + 1;

23) Função para obter o número do registro atual

Function Recno(Dataset: TDataset): Longint; var

CursorProps: CurProps; RecordProps: RECProps;

begin { Return 0 if dataset is not Paradox or dBASE } Result := 0; with Dataset do begin

if State = dsInactive then DBError(SDataSetClosed); Check(DbiGetCursorProps(Handle, CursorProps)); UpdateCursorPos; try

Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps)); case CursorProps.iSeqNums of

0: Result := RecordProps.iPhyRecNum; { dBASE } 1: Result := RecordProps.iSeqNum; { Paradox }

end; except

on EDBEngineError do Result := 0;

end; end;

end;

24) Enviando um arquivo para a lixeira

uses ShellAPI;

Function DeleteFileWithUndo(sFileName : string ) : boolean;

var fos : TSHFileOpStruct;

begin

FillChar( fos, SizeOf( fos ), 0 ); With fos do begin

wFunc := FO_DELETE; pFrom := PChar( sFileName ); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;

end; Result := ( 0 = ShFileOperation( fos ) );

end;

25) carregar um cursor animado (*.ani)

const cnCursorID1 = 1;

begin

Screen.Cursors[ cnCursorID1 ] := LoadCursorFromFile('c:\win95\cursors \cavalo.ani' ); Cursor := cnCursorID1;

end; PS: O arquivo CAVALO.ANI deverá existir no diretório apontado.

26) Transferir o conteúdo de um Memo para o MemoField

var t: TTable;

begin t := TTable.create(self); with t do begin

DatabaseName := 'MyAlias'; {Nome do Alias} TableName := 'MyTbl.db'; open; edit; insert; FieldByName('TheField').assign(Memo1.lines); post; { Requerido!!!} close;

end; end;

27) Capturando o conteúdo do Desktop

Coloque o código abaixo no evento FormResize do Formulário.

procedure TForm1.FormResize(Sender: TObject); var

R : TRect; DC : HDc; Canv : TCanvas;

begin R := Rect( 0, 0, Screen.Width, Screen.Height ); DC := GetWindowDC( GetDeskTopWindow ); Canv := TCanvas.Create; Canv.Handle := DC; Canvas.CopyRect( R, Canv, R ); ReleaseDC( GetDeskTopWindow, DC );

end;

28) Escrevendo um texto diagonal usando o canvas

procedure TForm1.Button1Click(Sender: TObject); var begin with Form1.Canvas do begin

Font.Name := 'Arial'; Font.Size := 24; tf := TFont.Create; tf.Assign(Font); GetObject(tf.Handle, sizeof(lf), @lf); lf.lfEscapement := 450; lf.lfOrientation := 450; tf.Handle := CreateFontIndirect(lf); Font.Assign(tf); tf.Free; TextOut(20, Height div 2, 'Texto Diagonal!');

end; end; 29) extrair um icone de um determinado aplicativo

Para extrair ícones de um executável, deve-se usar a função da API Extraction. Ela usa 3 parâmetros:

Instance - Instância da aplicação FileName - Nome do executável. Deve ser um PChar NumIcon - Número do ícone a ser recuperado. Se for Word(-1), a função retorna a quantidade de ícones do executável.

Coloque ShellAPI em uses no começo da unit.

procedure TForm1.Button1Click(Sender: TObject); var

IconIndex : word; h : hIcon;

begin IconIndex := 0; h := ExtractAssociatedIcon(hInstance,'C:\WINDOWS \NOTEPAD.EXE',IconINdex); DrawIcon(Form1.Canvas.Handle,10,10,h);

end;

30) Alinhando items do menu à direita

Para alinhar itens do menu principal à direita, deve-se utilizar o seguinte código:

{Isto justifica todos itens à direita do selecionado}

procedure SetJustify(Menu: TMenu; MenuItem: TMenuItem; Justify: Byte); {$IFDEF WIN32} var

ItemInfo: TMenuItemInfo; Buffer: array[0..80] of Char;

{$ENDIF} begin

{$IFDEF VER80} MenuItem.Caption := Chr(8) + MenuItem.Caption; {$ELSE} ItemInfo.cbSize := SizeOf(TMenuItemInfo); ItemInfo.fMask := MIIM_TYPE; ItemInfo.dwTypeData := Buffer; ItemInfo.cch := SizeOf(Buffer); GetMenuItemInfo(Menu.Handle, MenuItem.Command, False, ItemInfo); if Justify = 1 then ItemInfo.fType := ItemInfo.fType or MFT_RIGHTJUSTIFY; SetMenuItemInfo(Menu.Handle, MenuItem.Command, False, ItemInfo); {$ENDIF}

end;

31) abrir automaticamente seu navegador padrão e carregar a página determinada pelo link

1º Declare o procedure na seção PUBLIC da unit. procedure JumpTo(const aAdress: String);

2º Coloque a cláusula ShellAPI na uses no início da unit.

procedure TForm1.JumpTo(const aAdress: String); var buffer: String; begin buffer := 'http://' + aAdress; ShellExecute(Application.Handle, nil, PChar(buffer), nil, nil, SW_SHOWNORMAL); end;

procedure TForm1.Label1Click(Sender: TObject); begin JumpTo('www.geocities.com/SiliconValley/Way/1497'); end;

32) copiar registros de uma tabela para outra incluindo valores NULL

procedure TtableCopiaRegistro(Origem, Destino: Ttable); begin with TabelaOrig do begin {Inicia um contador para os campos da TabelaOrig} for i := 0 to FieldCount -1 do {Este if verifica se o campo da TabelaOrig é NULL, se for, atribui seu valor ao

campo da TabelaDest} if not Fields[i].IsNull then TabelaDest.Fields[i].Assign(Fields[i]);

end; {end with} end;

Este exemplo funcionará com todos tipos de campos se você tiver acabado de criar a TabelaDest. Para criar um dado valor NULL : Fields[i].Clear

33) deletar arquivos de um diretório com o caractere curinga '*'

procedure TForm1.SpeedButton1.Click(Sender: TObject); var SearchRec: TSearchRec; Result: Integer; begin Result:=FindFirst('c:\teste\*.*', faAnyFile, SearchRec); while result=0 do begin DeleteFile('c:\teste\'+SearchRec.Name); Result:=FindNext(SearchRec); end; end;

34) capturar a lista de Aliases disponíveis

Tudo que você precisa é de um componente TSession, um componente TListBox e uma String List.

Defina a propriedade SessionName do TSession para 'Session'. Utilize o seguinte código:

procedure TForm1.Button3Click(Sender: TObject); var

MyStringList: TStringList; i: integer; begin MyStringList := TStringList.Create; Session.GetAliasNames(MyStringList); for I := 0 to MyStringList.Count - 1 do ListBox1.Items.Add(MyStringList[I]); end;

Utilize o Help do TSession e consulte seus métodos para ver por exemplo como capturar o diretório ou caminho de um Alias com o método 'GetAliasParams'.

35) Abrir e Fechar a bandeja DO drive de CD-ROM

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

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

36) Utilizando o Code Explorer

A versão 4 do Borland Delphi está recheada de novos recursos em várias áreas do produto (IDE, Internet, linguagem, aplicações multi-tier, entre outras).

Uma das primeiras coisas que notamos quando abrimos o editor de código do Delphi 4 é a presença de um painel ancorado na lateral esquerda, contendo todos os tipos, classes, propriedades, métodos, variáveis globais, rotinas globais e interfaces contidos na unit selecionada. Esse painel é chamado Code Explorer e seu objetivo é tornar mais fácil a navegação entre as units do projeto e automatizar alguns processos envolvidos na criação de classes.

O Code Explorer também permite que você navegue diretamente para as declarações que são apresentadas nele, bastando dar um duploclique com o mouse sobre a declaração desejada. Novas declarações podem ser feitas também usando o Code Explorer, facilitando o desenvolvimento do código. Por exemplo, vamos supor que você queira criar uma nova função chamada Calculo com dois parâmetros do tipo real e que retornará também um real. Para isso, deve-se seguir os seguintes passos:

Selecione a pasta Variable/Constants dentro do Code Explorer. Dê um clique com o botão direito do mouse e selecione New no menu que aparecerá, como mostra a figura a seguir.

O Code Explorer apresentará um novo item que permite identificar qual o tipo de declaração que está sendo feita, por meio da informação que o programador passar a ele. No nosso exemplo, digitaremos o cabeçalho da função Calculo como segue :

function Calculo(x, y : real) : real;

Após digitar a declaração e pressionar <Enter> o Code Explorer criará automaticamente o cabeçalho da função na seção Interface e a sua implementação na seção Implementation da unit, como mostra a figura seguinte, evitiando assim que ocorreram erros de declaração no interior do código.

Um outro recurso que o Code Explorer fornece é conhecido como Class Completion. O programador pode, dentre outras facilidades, criar apenas o básico da declaração de uma propriedade e, com o simples toque de um atalho no teclado, o Code Explorer completará a declaração. Como exemplo, vamos declarar uma propriedade chamada Cor do tipo TColor dentro da nossa classe TForm 1.

type

TForm1=class(TForm) private

{declarações privadas} public {declarações públicas}

property Cor:TColor; end;

Agora com o cursor posicionado sobre a declaração da propriedade, pressionamos <Ctrl><Shift>C e o Code Explorer completará toda a declaração da estrutura da classe.

37) Copiando arquivos via Delphi

Function CopiaArquivo(scrname,destname:string):byte; var

source,destination:file; buffer:array[1..1024] of byte; readcnt,writecnt:word; pname,dname,fname,ename:String;

{USO: R:=COPIAARQUIVO('C:\diretorio\FILE.EXT','C:\diretorio\FILE.EXT'); Devolve 0=Ok, 1=Erro no Origem, 2=Erro no Destino, 3=Disco Cheio} begin

AssignFile(source,scrname); Try

Reset(source,1); Except

CopiaArquivo:=1; Exit;

end;

If destname[length(destname)]='\' then begin

pname:=scrname; destname:=destname+separa(scrname,'\',Ocorre(scrname,'\')+1);

end; AssignFile(destination,destname); Try

Rewrite(destination,1); Except

CopiaArquivo:=2; Exit;

end;

Repeat BlockRead(source,buffer,sizeof(buffer),readcnt); Try

BlockWrite(destination,buffer,readcnt,writecnt); Except

CopiaArquivo:=3; {Disco Cheio?}

Exit; end;

until (readcnt=0) or (writecnt<>readcnt); CloseFile(destination); CloseFile(source); CopiaArquivo:=0;

end;

38) abrir um TComboBox sem clicá-lo

ComboBox1.DroppedDown := True;

39) mudar a cor da célula ativa do DBGrid

A rotina abaixo deverá ser colocada no evento OnDrawDataCell, do DBGrid.

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if gdFocused in State then with (Sender as TDBGrid).Canvas do

begin Brush.Color:=clRed;

FillRect(Rect); TextOut(Rect.Left, Rect.Top, Field.AsString); end; end;

40) Como incrementar 1 mês numa data

IncMonth(Data, 1);

No exemplo, a variável Data é do tipo TDateTime.

41) Verificar se existe disquete no drive

unit UTestaDrive;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject);

function TemDiscoNoDrive(const drive : char): boolean;

private { Private declarations } public { Public declarations } end;

var Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.TemDiscoNoDrive(const drive : char): boolean; var DriveNumero : byte; EMode : word; begin result := false; DriveNumero := ord(Drive); if DriveNumero >= ord('a') then dec(DriveNumero,$20); EMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(DriveNumero-$40) = -1 then Result := true else messagebeep(0); finally SetErrorMode(EMode); end; end;

procedure TForm1.Button1Click(Sender: TObject); begin if TemDiscoNoDrive('a') then ShowMessage('Tem disco No drive A:') else ShowMessage('Não tem Disco no Drive A:'); end;

end.

42) Acessar o ambiente DOS

Para acessar as variáveis do ambiente DOS, deve-se usar a função da API GetDosEnvironment. Ela retorna um PChar que pode ser avaliado.

43) Executar um prog. DOS e fechar sua janela em seguida

Quando você executa um programa DOS no Windows95, sua janela permanece aberta até ser fechada pelo usuário. Para executar um programa DOS que fecha sua janela após a execução, deve ser especificado "command.com /c programa" na linha de comando. Usando a função da API WinExec para executar um programa chamado proddos.exe, a chamada deve ser:

WinExec('c:\command.com /c progdos.exe', sw_ShowNormal);

Se o programa deve ser executado sem que seja visualizado pelo usuário, o segundo parâmetro deve ser sw_Hide. Deve ser especificada a extensão .com, senão o programa não será executado.

44) instanciar uma única vez um executável correspondente a uma determinada aplicação

No Microsoft® Windows®, existe uma tabela do sistema chamada ‘atom table’. Esta tabela armezena strings com seus correspondentes identificadores. Existem várias funções da API do windows, chamadas de ‘atom functions’, que permitem que uma aplicação insira, apague, procure por uma determinada ‘atom string’, etc.. O código abaixo garante que somente uma instância do executável de sua aplicação estará carregado em memória. O form1 seria o form principal da aplicação:

procedure TForm1.FormCreate(Sender: TObject); begin {Procura na tabela para verificar se o programa já está rodando}

{Substitua a string ‘MINHA STRING’ por uma de sua conveniência} if GlobalFindAtom(‘MINHA STRING') = 0 then {zero significa não encontrar} atom := GlobalAddAtom(‘MINHA STRING’) else

begin

{Se o programa já estiver rodando, então mostrar a mensagem e parar} MessageDlg(‘A aplicação já encontra-se em execução!!', mtWarning, [mbOK], 0); Halt; end; end;

procedure TForm1.FormDestroy(Sender: TObject); begin {Remove o item da tabela, de modo que a aplicação possa ser executada novamente} GlobalDeleteAtom(atom);

end; 45) Modificar várias propriedades de um objeto ao mesmo tempo

Utilize o comando with, desse modo: With Edit1 do begin Text := ' @Delphi'; Widht := 30; Enabled := True; end;

46) Para emitir um som quando o ENTER for pressionado

No Evento OnKeyPress de um Edit:

if Key = Chr(VK_RETURN) then Perform(WM_NEXTDLGCTL,0,0);

47) Encolhendo o executável

Em Delphi 1.0, marcando a checkbox Optimize for size and load time, em Options/Project/Linker, não funciona (aparece uma mensagem de erro de disco cheio, mesmo com muito espaço). Delphi 1.0 vem com um programa DOS, W8LOSS, que faz o mesmo. Para usá-lo, deve-se digitar o seguinte:

W8LOSS programa.exe

Isto encolherá o executável em aproximadamente 20%, diminuindo o tempo de carga.

48) criar alias via programação

Paradox:

Session.AddStandardAlias('SeuAlias', edtPath.text, 'Paradox'); Session.SaveConfigFile;

49) desabilitar as teclas de acesso (Ctrl+Alt+Del), (Alt+Tab), (Ctrl+Esc)

var OldValue : LongBool; begin

{liga a trava} SystemParametersInfo(97, Word(True), @OldValue, 0);

{desliga a trava} SystemParametersInfo(97, Word(False), @OldValue, 0); end;

50) Fazer um Splash Screen

form2:=tform2.create(application); form2.show; form2.update;

form2.hide; form2.free; Application.Run;

Obs: apagar a primeira linha, 'Application.Initialize'.

51) FUNÇÃO PARA ENCRIPTAR UMA STRING

function encrypt( dummy: Pchar):Pchar; var x: Integer; w: Word; s: String; c: Char; begin s:=StrPas(dummy); w:=StrLen(dummy); for x:=1 to w do begin c:=s[x]; c:=char ( ord (c) xor 159); s[x]:=c; end; StrPCopy(dummy,s); encrypt:=dummy; end;

52) Função reverter uma string

function TForm1.StrReverse(MyString : string) : String; var i: integer; HelpString: string; begin HelpString := ''; for i := 1 to Length(MyString) do

comentários (1)

Esta é apenas uma pré-visualização

3 shown on 61 pages

baixar o documento