





















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
100 dicas DELPHI
Tipologia: Notas de estudo
1 / 61
Esta página não é visível na pré-visualização
Não perca as partes importantes!






















































Autor: Marcelo Jaloto Machado
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
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
Procedure MostrarEsconderIniciar(Estado:Boolean); {inclua esta linha}
Na parte implementation da unit (untEsconderMostrar) inclua a procedure MostrarEsconderIniciar:
procedure EscondeBarraTarefa(EstadoBarra: Boolean); {inclua esta linha}
Na parte implementation da unit (untBarraTarefa) inclua a procedure EscondeBarraTarefa:
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;
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
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
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry ;
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 ;
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;
var
H : HWnd; begin
H := FindWindow(Nil,'Project1'); if H <> 0 then ShowWindow(H,SW_HIDE);
end;
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.
messageBeep(0);
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;
1 - Localize o arquivo RS_RUN.INI (no diretório do Windows);
2 - Na seção [ReportSmith] inclua a linha seguinte: ShowAboutBox=
3 - Na seção [RS_RunTime] inclua a linha seguinte: ShowAboutBox=
4 - Não se esqueça de distribuir com o seu aplicativo o referido arquivo INI.
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;
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;
ExtractFilePath( Application.ExeName )
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.
Begin SelectNext(Sender as tWinControl, True, True ); Key := #0; end; end;
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.
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.
É 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;
If ( Chr(Key) <> #13) Then Exit; If ( DBGrid1.SelectedIndex + 1 <> DBGrid1.FieldCount ) Then DBGRid1.SelectedIndex := DBGRid1.SelectedIndex + 1;
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;
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;
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;
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;
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;
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;
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;
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]);
{Para Abrir:}
mciSendString('Set cdaudio door open wait', nil, 0, handle);
{Para Fechar:} mciSendString('Set cdaudio door closed wait', nil, 0, handle);
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
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
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?}