Anda di halaman 1dari 22

NDICE Abrir e fechar porta do cd Executar configurao de vdeo Verifica se o campo dbedit est em branco Filtrar data em tabela

Alterar registro de uma tabela Cancela alterao do registro na tabela Filtra banco de dados Mensagem clicando no x do form Retirar campo do registro Calcular qrlabel Inserindo barra de status no form Colocar data na barra de status Rotina para calcular valores de dbedit com funo substring Desabilita o <Ctrl> + <Alt> + <Del> Habilita o <Ctrl> + <Alt> + <Del> Substitui o <Tab> pelo <Enter> Configurao do Dblookupcombobox (relacionamentos) Teclar e exibir nmero (=lastkey clipper) Inserindo botes na barra de ferramentas Criando uma barra de ferramentas Selecionar figura com caixa de dilogo abrir e exibir seu caminho no edit. Atualizando o cache de uma table Relacionamento de arquivos em Delphi Relatrio no delphi Separando Horas e Minutos Filtro de Relatrios Teclar SETAS e mudar o foco Abrir arquivo Word pelo Delphi Copiar arquivos (fazer backup) Clicar no label e abrir browser Executar comando do DOS Verificar data vlida Descobrir o cdigo ASCII de uma tecla Como usar as teclas de funo F1, F2, etc? Inserindo figuras ao lado da opo do menu (main menu) Formulrio de SPLASH Inserindo Cursor animado Capturando o nmero do registro do Windows. Retirar os Nmero de Srie dos HDs Executa programas externos Retirando Registro Campo a Campo de uma tabela Aprendendo a trabalhar com menus Adicionando teclas de atalho a um Menu

Calcular Data Localizar um campo que no campo chave. Localizar um campo digitando apenas um pedao do contedo do campo Dbgrid zebrado Formatar valores monetrios Digitar no dbgrid e mostar valor no campo seguinte Verificar se disquete est no drive: Instalar bde em tempo de execuo Funo para verificar a existncia do bde Messagebox com opes Verificar data Vlida E-mail pelo Delphi Calcular diferena entre dois horrios Segundos em Horas SetFocus em outro boto (messagebox) Salvando um relatrio QuickReport com formato TXT, CSV ou HTM Trocando a figura (cone) de um boto do DBNAVAGATOR Data por extenso Esconde boto iniciar do windows Restaura o boto iniciar do windows Mostra barra de tarefas do Windows Esconde a Barra de tarefas do Windows Mostra memria utilizada pelo Windows Convertendo um nmero real para string com 2 casas. Utilizando o Esc para fechar um formulrio Data por extenso Insufficient memory for this operation. {Fazer um programa feito em Kylix3 funcionar fora do mesmo: 1. Edite a biblioteca "/etc/ld.so.conf" e inclua a seguinte linha no final: /pasta/kylix3/bin 2.faa o linux reiniciar *ou* execute o "ldconfig" para forar a releitura dos arquivos de sistema 3.digite a seguinte instruo: source /pasta/kylix3/bin}

Pg.:

ABRIR E FECHAR PORTA DO CD incluir uses MMSystem abrir mciSendString('Set cdaudio door open wait', nil, 0, handle); fechar mciSendString('Set cdaudio door closed wait', nil, 0, handle); EXECUTAR CONFIGURAO DE VDEO WinExec('RunDLL32.exe Shell32.DLL,Control_RunDLL Desk.cpl', SW_Show); CALCULAR DATA dbedit5.text:=datetostr(date()+3); VERIFICA SE O CAMPO DBEDIT EST EM BRANCO if dbedit2.text= '' then begin showmessage('Favor preencher o campo NOME'); exit; end; FILTRAR DATA EM TABELAS var a:string; begin a:=maskedit1.text; datamodule2.movimento.filter:= 'devolucao >= '+ quotedstr(a) ; datamodule2.movimento.filtered:=true; end; FILTRAR TABELA TRUE/FALSE var a,b :string ; begin a:='true'; b:= 'false'; if checkbox1.checked= true then datamodule2.tblfita.filter:= 'legenda = '+ quotedstr(a) else datamodule2.tblfita.filter:= 'legenda = '+ quotedstr(b); datamodule2.tblfita.filtered:=true; Pg.: 3

ALTERAR REGISTO DE UMA TABELA with datamodule2.tblfita do edit; datamodule2.tblfita.post; CANCELA ALTERAO DO REGISTO NA TABELA datamodule2.tblfita.cancel; FILTRA BANCO DE DADOS Var Texto : String; Begin texto:=edit1.text; Table1.Filter := 'coddofornecedor >= ' + QuotedStr(Texto); Table1.Filtered := True; MENSAGEM CLICANDO NO X DO FORM procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin canclose:=application.messagebox('Sair agora?','Confirmao para sair',mb_YESNo)=mrYes; end; RETIRAR CAMPO DO REGISTRO Registro Campo a Campo datamodule2.table1.last; {ltimo reg} qrlabel1.caption:=datamodule2.table1['codicli']; qrlabel2.caption:=datamodule2.table1.fieldbyname('nome').AsString; qrlabel3.caption:=datamodule2.table1.fieldbyname('telefone').asstring; Fieldbyname --> seleciona o registro AsString --> Converte o campo p/ string TDataTimeField TTimeField TFloatField TIntegerField CALCULAR QRLABEL qrExpr1 --> Expression - Count Master - table1

Pg.:

INSERINDO BARRA DE STATUS NO FORM BARRA DE STATUS STATUS BAR Na guia win32 inserir um componente StatusBar Clicar na Barra de STatus e adicionar as separaes(panels) Existe a propriedade WIDTH para aumentar o tamanho do espao, alm da propriedade Text COLOCAR DATA NA BARRA DE STATUS Evento OnActivate do Form : statusbar1.panels[0].text:=datetostr(date()); application.onhint:=Showhint; (apenas para adicionar o hint - a data no precisa do comando) Apresentar o HINT. Criar a procedure: procedure TForm1.showhint(Sender: TObject); begin statusbar1.panels[1].text:=application.hint; end; em PRIVATE acrescentar a procedure: procedure showhint (Sender:TObject); ROTINA PARA CALCULAR VALORES DE DBEDIT COM FUNO SUBSTRING procedure TForm6.Button1Click(Sender: TObject); var a,b:real; S:string; begin S := Copy(DBEDIT2.TEXT, 3, 7); { 'COPY' = substr} a:=strtofloat(s); b:=a*2; label7.caption:=floattostr(b); DESABILITA O <CTRL> + <ALT> + <DEL> procedure TForm1.Button1Click(Sender: TObject); const nel = 97; var OldValue : Longbool; Begin SystemParametersInfo(nel, Word(True), @OldValue,0); end;

Pg.:

HABILITA O <CTRL> + <ALT> + <DEL> procedure TForm1.Button2Click(Sender: TObject); const SPI_SCREENSAVERRUNNING = 97; var OldValue : Longbool; Begin SystemParametersInfo(SPI_SCREENSAVERRUNNING, Word(False), @OldValue,0); end; SUBSTITUI O <TAB> PELO <ENTER> Acrescentar um comando para cada edit em seu formulrio procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then Perform(Wm_NextDlgCtl,0,0); {{ENTER por TAB}} end; end. CONFIGURAO DO DBLOOKUPCOMBOBOX (RELACIONAMENTO) Com as tabelas normais (sem ndices secundrios) siga os passos: fornecedor | produtos cadastro de fornecedor (normalmente) No cadastro de Produtos --> Inserir um DBLookuoCombobox (datacontrol) Configurar propriedades: 1 Onde se grava DataSource==> tabela2 Datafield => codfor 2 de onde se l: ListSource --> tabela1 ListField --> campo que se l e mostra (NOME DO FORNECEDOR) KeyField --> campo chave da tabela 1 (CODFORNE) TECLAR E EXIBIR NMERO (=LASTKEY CLIPPER) Primeiramente habilitar a propriedade KeyPreview para TRUE no formulrio. Programar no evento OnKeyPress as teclas esperadas para a digitao: Exemplo: Pg.: 6

IF KEY IN['1'] THEN LABEL1.CAPTION:=LABEL1.CAPTION + '1'; CRIANDO UMA BARRA DE FERRAMENTAS Incluir o componente TOOLBAR da guia WIN32 Adicione tambm separaes para a barra de ferrametas. Clicom com o boto direito sobre a barra e selecione a opo new separator - configure a propriedade Style do separetor para DSDIVIDER ISERINDO BOTES NA BARRA DE FERRAMENTAS ADDITIONAL SPEEDBUTTON Propriedade Glyph para inserir figura no boto. SELECIONAR FIGURA COM CAIXA DE DILOGO ABRIR E EXIBIR SEU CAMINHO NO EDIT. Insira primeiramente um componente OpenPictureDialog da Guia Dialogs e em seguida programe o boto com a rotina abaixo: if openPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename); edit1.text:= OpenPictureDialog1.Filename; end; Atualizando o cache de uma table
Existe uma funo que colocada nas tabelas no evento AfterPost que atualiza o cache da tabela evitando corromper o arquivo, eis aqui a linha: Adicione na clausula USES, a unit BDE No evento AfterPost coloque: DbiSaveChanges((Dataset as TTable).Handle);

Relacionamento de arquivos em Delphi importante que as duas tabelas utilizadas tenham o mesmo tipo de dado, ou seja, que tenham um campo em comum. Primeiramente teremos que criar um ndice secundrio na tabela. Abra o DataBase Destktop e a tabela que ter o relacionamento. Com a tabela aberta clique na opo TABLE Properties e escolha Secondary Indexes. Clique em Define para criarmos a indexao da tabela. Pg.: 7

Selecione o campo que ir se relacionar com outra tabela e clique na seta para a direita. Confirme clicando no boto OK para salvar o ndice. Fornea um nome e clique em OK. Salve a tabela e feche o DataBase Desktop. Estando com o Delphi em tela ativa e com o Data Module configurado com duas tabelas, clique na tabela que ir fornecer os dados para o relacionamento. Na propriedade MASTERSOURCE selecione o nome da tabela que ir receber as informaes. Agora em MASTERFIELDS clique no boto com trs pontinhos. Isso far com que seja aberta uma caixa de dilogo denominada Fild Link Designer. Clique em Available Indexes e selecione o ndice desejado (aquele que foi criado no DataBase Desktop). Selecione o campo para relacionamento na caixa da direita e clique em ADD. Com isso a configurao do relacionamento est pronta. Falta apenas a incluso dos componentes no formulrio. Para criar um relatrio no Delphi siga os passos: 1. 2. 3. 4. 5. 6. Adicione um novo formulrio. V at a guia Qreport e insira o componente QuickRep Clique na Guia Data Access e insira o componente Table e DataSource Com o Query selecionado, altera as propriedades DatabaseName. Selecione a propriedade DataSet do relatrio (Qreport) e altera para Table1 De um duplo clique sobre o componente QuickRep que est no formulrio. Isso far com que a caixa de dilogo Report Settings aparea. 7. Marque as opes Page Header, Column Header e Detail band (essas opes criam um espao para o ttulo, subttulo e campos para exibio dos dados respectivamente) 8. insira o componente QRLabel (na guia Qreport) na rea Page Header. Faa a formatao da fonte. 9. Insira mais quantos QRLabels desejar para a rea Column Header. 10. Selecine o componente Table do formulrio 11. Na propriedade DataBaseName escolha o nome criado para o Alias de seu projeto 12. Agora altere a propriedade TableName com o nome da tabela que voc far o relatrio. 13. V at a opo ACTIVE e altere para TRUE. 14. Com o Datasource selecionado altere a propriedade Dataset para Table1 15. Agora vamos voltar para a rea de Detail. Insira um componente QRDBText da guia Qreport 16. Na propriedade DataSet selecione Table1 17. Selecione a opo DataField e escolha um campo para ser exibido. Acionando o relatrio Coloque um boto em um outro formulrio para poder ativar a impresso. Digite o seguinte cdigo para o boto: FORM2.QUICKREP1.PREVIEW;

SEPARANDO HORAS E MINUTOS Pg.: 8

var Form1: TForm1; entra,sai,diferenca:tdatetime; HORA,MINUTO: INTEGER; procedure TForm1.Button1Click(Sender: TObject); begin entra:= strtotime(edit1.text); sai:= strtotime(edit2.text); diferenca:= sai-entra; label4.caption:=timetostr(diferenca); Hora:=StrToINT(Copy(TimeToStr(diferenca),1,2)); label6.caption:=INTtoStr(hora); MINUTO:=StrToINT(Copy(TimeToStr(diferenca),4,2)); label8.caption:=INTtoStr(MINUTO); end; Filtro em Relatrio Tenha um form com um edit mais um boto de OK. No formulrio com o QuickRep altere o evento ONSTARTPAGE com o filtro desejado e clique em Files Uses Unit. Teclar SETAS e mudar o foco . Evento OnKeyPress FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Case Key of VK_DOWN: Perform( WM_NEXTDLGCTL, 0, 0 ); VK_UP: Perform( WM_NEXTDLGCTL, 0, 1 ); end; end; Abrir arquivo Word pelo Delphi ShellExecute(Handle, 'open', 'd:\arq_nel\aulas_nel\delphi 4\ete-delphi.doc', nil, nil, SW_SHOWMAXIMIZED); no esquea de adicionar ShellAPI na seo uses de sua unit!!! Copiar arquivos Copiar arquivos um por vez: Pg.: 9

CopyFile('d:\arq_nel\aulas_nel\delphi 4\ete-delphi.doc','d:\arq_nel\copias\ete-delphi.doc',True); Showmessage('Cpia efetuad com sucesso'); Para copiar um lote de arquivos utilizando curingas: var SR: TSearchRec; I: integer; Origem, Destino: string; begin I := FindFirst('d:\arq_nel\aulas_nel\delphi 4\*.*', faAnyFile, SR); while I = 0 do begin if (SR.Attr and faDirectory) <> faDirectory then begin Origem := 'd:\arq_nel\aulas_nel\delphi 4\' + SR.Name; Destino := 'd:\arq_nel\copias\' + SR.Name; if not CopyFile(PChar(Origem), PChar(Destino), false) then ShowMessage('Erro ao copiar ' + Origem + ' para ' + Destino); end; I := FindNext(SR); end; showmessage('Backup efetuado com sucesso'); false: indica que o arquivo ser sobrescrito. no esquea de adicionar ShellAPI na seo uses de sua unit!!! Clicar no label e abrir browser declarar na public procedure JumpTo(const aAdress: String); declarar: procedure TForm1.JumpTo(const aAdress: String); var buffer: String; begin buffer := 'http://' + aAdress; ShellExecute(Application.Handle, nil, PChar(buffer), nil, nil, SW_SHOWNORMAL); end; No evento onclick inserir: procedure TForm1.Label2Click(Sender: TObject); begin begin JumpTo('www.casadoprogramador.hpg.com.br'); end; Executar comando do dos: Pg.: 10

WinExec(PChar('command.com /c dir /p ' +Edit1.Text),SW_SHOWNORMAL); Verificar data vlida: try StrToDate(Edit1.Text); except on EConvertError do ShowMessage ('Data Invlida!'); edit1.setfocus; Descobrir o cdigo ASCII de uma tecla { - Coloque um Label no form (Label1); - Mude a propriedade KeyPreview do form para true; - Altere o evento OnKeyDown do form como abaixo: } procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Label1.Caption := Format('O cdigo da tecla pressionada : %d', [Key]); end; Observaes Para testar execute e observe o Label enquanto pressiona as teclas desejadas. Como usar as teclas de funo F1, F2, etc? //Para voc colocar chamadas usando as teclas de funo basta colocar o seguinte cdigo no evento 'OnKeyDown' do formulrio: procedure Tform1.FormKeyDown(Sender:TObject; var Key: Word; Shift: TShifState); begin if key = vk_F1 then begin { instrucoes a serem executadas } end; end; { OBSERVAO: No se esquea de colocar a propriedade 'KeyPreview' do formulrio em 'True'. Voc tambm pode usar as variveis VK_F1 at VK_F12 referentes as outras teclas de funo. } Pg.: 11

Inserindo figuras ao lado da opo do menu (main menu) Primeiramente insira um componentes da guia WIN32 ImageList. D dois cliques no componente ImageList j no seu formulrio para abrir o Form1.ImageList1. Nesta janela, clique no boto ADD... para selecionar as figuras (.io e.bmp). Note que aps inserido as figuras, nesta janela, elas recebero um nmero de controle em baixo de sua visualizao. Aps incluir todas as figuras desejadas, clique no boto de OK. Insira um componente MainMenu, e em sua propriedade Images selecione ImageList1 . Comece a criar as opes do menu e em cada sub-opo na propriedade ImageIndex insira o nmero criado anteriormente no ImageList1. Feche o formulrio de criao do menu e teste seu formulrio que j estar com as figuras. Formulrio de SPLASH Crie seu formulrio que ser a tela de apresentao normalmente. V em o Project e selecione a opo Options. Observe que os formulrios esto todos exibidos na tela da esquerda. Selecione o que ser a tela de apresentao e transfira para a direita, clicando no boto adequado. Clique em ok. Abra a opo View Source do menu Project do Delphi, para inserir a programao em negrito: begin Application.initialize; Formabertura:=tformabertura.create(application); Formabertura.show; Formabertura.update; .. formabertura.hide; formabertura.free; application.run; end. Inserindo Cursor animado procedure TForm1.Button2Click(Sender: TObject); const cnCursorID1 = 1; begin Screen.Cursors[ cnCursorID1 ] := LoadCursorFromFile('c:\windows\system\helicopter.ani' ); Cursor := cnCursorID1; end;

Pg.: 12

Capturando o nmero do registro do Windows. Declare Registry na clusula uses da unit. Inserira um Button e um Label. Colocando o caminho, podemos verificar qualquer coisa do Registro do Windows function Registrow : String; var Registro: TRegistry; begin Registro := TRegistry.Create; Registro.RootKey := HKEY_LOCAL_MACHINE; if Registro.OpenKey('Software\Microsoft\Windows\CurrentVersion', false)then result := Registro.ReadString('ProductKey'); Registro.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin Registrow; Label1.Caption := Registrow; end; Retirar os Nmero de Srie dos HDs Declarar a funco em Private Function TForm1.SerialNum(FDrive:String) :String; var Serial: DWord; DirLen, Flags: DWord; DLabel : Array[0..11] of Char; begin Try GetVolumeInformation(PChar(FDrive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0); Result := IntToHex(Serial,8); Except Result := ''; end; end; procedure TForm1.Button3Click(Sender: TObject); begin Label3.Caption := serialnum('d'); Label2.Caption := serialnum('c'); end;

Pg.: 13

Executa programas externos Winexec(Pchar(c:\windows\explorer.exe),Sw_show); Retirando Registro Campo a Campo de uma tabela Label1.caption:=table1[codigo]; Label2.caption:=table1.fieldbyname(telefone).asstring; Fieldbyname Seleciona o registro AsString converte o campo para String AsTdataTimeField AsTtimeField AsTfloatField AsTintegerField Aprendendo a trabalhar com menus
Com O Delphi 4 voc pode adicionar rapidamente menus suspensos em um programa, simplesmente definindo os nomes dos itens que voc quer que apaream no menu. Utilizaremos alguns componentes da paleta de componentes do Delphi 4.

1. D um clique na guia Standard na paleta de componentes para seleciona-la. 2. D um clique no componente MainMenu
3. 4. e, em seguida, d umclique em algum lugar do canto superior esquerdo do formulrio. D um duplo clique sobre o cone MainMenu que estar sobre o formulrio. A caixa de dilogo aparecer:

5. Na janela Object Inspector, d um clique na caixa de texto ao lado da propriedade CAPTION, para seleciona6. 7. 8.
la, digite &Arquivo e pressione a tecla ENTER. Na caixa de dilogo Form1.MainMenu1, d um clique no lado direito da palavra Arquivo que voc acabou de inserir. Voltando janela Objector Inspector, d um clique na caixa de texto ao lado da propriedade Caption para seleciona-la, digite &Ajuda e pressione a tecla ENTER. Seguindo os procedimentos 6 e 7, acrescente a opo Sobre na barra de menus..

Agora vamos acrescentar abaixo da opo do menu Arquivo, a opo Sair. Para fazer isso proceda da seguinte forma:

Pg.: 14

1.

2.

D um clique na opo de menu Arquivo da caixa de dilogo Form1.MainMenu1 para selecion-la, e em seguida, d um clique no retngulo vazio logo abaixo. Na janela Object Inspector, d um clique na caixa de texto ao lado da propriedade Caption para seleciona-la, digite &Sair e pressione a tecla ENTER.

Adicionando teclas de atalho a um Menu


Agora vamos adicionar para a opo Sair do menu Arquivo que acabamos de criar, a tecla de atalho CTRL + X. Para isso, proceda da seguinte frma: 1. D um clique na opo Sair para seleciona-la. 2. Na janela Object Inspector, d um clique na listagem drop-dowm da propriedade ShortCut e escolha a opo CTRL + X. 3. D um clique no botoo fechar. Para concluirmos esta etapa de elaborao de menus suspensos, vamos acrescentar um cdigo de programa para a opo Sair do menu Arquivo. Estando no formulrio de nossa aplicao, proceda da seguinte forma:

1. D um clique no menu Arquivo e, em seguida, d um clique na opo Sair Ctrl + X.


2. Ao fazer isso, a janela de cdigo de programa aparecer digite ento o comando CLOSE;

Calcular Data Dbedit5.text:=datetostr(date()+3); Localizar um campo que no campo chave: table1.LOCATE('nome', edit1.text, []); Localizar um campo digitando apenas um pedao do contedo do campo: table1.locate('Nome', Trim(Edit1.Text), [loPartialKey]); DBGRID ZEBRADO NO EVENTO ONDrawColumnCell INSIRA O CDIGO If odd(Table1.RecNo) then begin DBGrid1.Canvas.Font.Color:= clWhite; DBGrid1.Canvas.Brush.Color:= clRED; end else begin DBGrid1.Canvas.Font.Color:= clBlack; Pg.: 15

DBGrid1.Canvas.Brush.Color:= clWhite; end; DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString); FORMATAR VALORES MONETRIOS val_desconto:=strtofloat(edit1.Text); label4.caption:=FormatCurr('R$ #,##0.00',val_desconto);

DIGITAR NO DBGRID E MOSTAR VALOR NO CAMPO SEGUINTE procedure TForm1.DBGrid1ColExit(Sender: TObject); begin if dbgrid1.selectedindex=4 then begin if table1.fieldbyname('ano').asstring='15' then table1.FieldByName('genero').asstring:='teste1'; if table1.fieldbyname('ano').asstring='16' then table1.FieldByName('genero').asstring:='teste2'; end; end; VERIFICAR SE DISQUETE EST NO DRIVE: function DiskInDrive(const Drive: char): Boolean; var DrvNum: byte; EMode: Word; begin result := false; DrvNum := ord(Drive); if DrvNum >= ord('a') then dec(DrvNum,$20); EMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(DrvNum-$40) <> -1 then result := true else showmessage(' Disco no Preparado'); finally SetErrorMode(EMode); end; end; No evento On click inserir: diskindrive(a);

Pg.: 16

INSTALAR BDE EM TEMPO DE EXECUO - Inicie um novo projeto, coloque um componente TButton e altere sua propriedade Name e Caption para "BtInstalar" e "&Instalar BDE", respectivamente. - Na clusula Uses, declare as biblioteca "StdCtrls" e "Buttons'. - Antes da seo Implementation, digite o seguinte cdigo: function DllRegisterServer:integer; stdcall; external 'BdeInst.dll'; - No evento OnClick do BtInstalar, insira o cdigo abaixo: DllRegisterServer; - Salve o projeto em uma pasta especfica, por exemplo "C:\InstalaBDE\". - Localize o diretrio onde encontra-se o arquivo "BdeAdmin.exe" e faa a descompactao do arquivo "bdeinst.zip" (que encontra-se neste diretrio) no local onde foi salvo o seu projeto. - Para finalizar, copie a pasta do projeto para a mquina que se deseja instalar o BDE e execute o aplicativo "InstalaBDE.exe". FUNO PARA VERIFICAR A EXISTNCIA DO BDE Insira em uses a clusula BDE function CheckBDEInstalled: Boolean; begin Result := (dbiInit(nil) = DBIERR_NONE) end; procedure TForm1.FormActivate(Sender: TObject); begin if CheckBDEInstalled then label1.caption:='Foi Encontrado o BDE em sua mquina' else begin label1.caption:='Preparando para instalar o BDE.'; DllRegisterServer; end; end;

Pg.: 17

MESSAGEBOX COM OPES If messagebox( handle, mensagem,mensagem da barra de ttulo,cone + boto) = id_yes then Close Opes de cones mb_iconexclamation - mb_iconinformation mb_iconquestion mb_iconwarning mb_iconerror Opes de botes Mb_ok, mb_okcancel, mb_abortretryignoe, mb_yesno, mb_yesnocancel, mb_retrycancel Enviar E-MAIL pelo Delphi var mail:string; begin Mail := 'mailto:nfabbri@ig.com.br'; ShellExecute(GetDesktopWindow,'open',pchar(Mail),nil,nil,sw_ShowNormal); Validar DATA try StrToDate(Edit1.Text); except on EConvertError do ShowMessage ('Data Invlida!'); Calcular diferena entre dois horrios var Form1: TForm1; entra,sai,diferenca:tdatetime; hora,minuto:integer; total:real; retorno:string; implementation {$R *.DFM} procedure TForm1.FormActivate(Sender: TObject); begin edit1.text:=timetostr(time()); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin edit2.text:=timetostr(time()); entra:=strtotime(edit1.text); Pg.: 18

sai:=strtotime(edit2.text); diferenca:=sai-entra; label4.caption:=timetostr(diferenca); hora:=strtoint(copy(timetostr(diferenca),1,2)); label6.caption:=inttostr(hora); minuto:=strtoint(copy(timetostr(diferenca),4,2)); label8.caption:=inttostr(minuto); end; procedure TForm1.BitBtn2Click(Sender: TObject); begin total:=strtofloat(maskedit1.text); if (hora=0) then begin total:=total * 1; end; if (hora>0) and (minuto>0) then begin total:=total * (hora + 1); end; if (hora>0) and (minuto=0) then begin total:=total * (hora); end; str(total:8:2,retorno); label12.caption:= 'R$ ' + retorno; end; Segundos em Horas function FormatSecsToHMS(Secs: LongInt): string; var Hrs, Min: Word; begin Hrs := Secs div 3600; Secs := Secs mod 3600; Min := Secs div 60; Secs := Secs mod 60; Result := Format('%d:%d:%d', [Hrs, Min, Secs]); end; procedure TForm1.Button1Click(Sender: TObject); begin label3.caption:= FormatSecsToHMS(strtoint(edit1.text)); end; Pg.: 19

SetFocus em outro boto (messagebox) messagebox(handle,'Deseja alterar esse registro?','Alterao',mb_yesno+mb_defbutton2+mb_iconquestion); Salvando um relatrio QuickReport com formato TXT, CSV ou HTM APENAS inserir os componentes que j esto no quickreport: QRTextFilter, QRCSVFilter ou QRHTMLFilter. Na hora do preview clique no boto salvar relatrio e selecione o tipo da extenso desejada.

Modificando Os cones Do Dbnavigator


Essa dica mostra como mudar o cone dos botes do componete DbNavigator. O cdigo abaixo tem como objetivo mostrar como se altera o cone do boto de inserir. Coloque um componente Dbnavigator no form. Crie um novo tipo de dados no editor de cdigo: type NewTypeNav = class( TDbNavigator ); No evento OnCreate do form, escreva o seguinte cdigo: var c:Tbitmap; begin c:=Tbitmap.Create; c.LoadFromFile('C:\Insert.bmp'); newtypenav(dbnavigator1).buttons[nbinsert].Glyph:=c; Explicando o cdigo Criamos uma varivel do tipo Tbitmap para abrir o arquivo de bitmap. Esta figura vai ficar no lugar da figura padro do dbnavigator. Depois modificamos a propriedade glyph do boto de inserir com o contedo da varivel.

Data por extenso


label1.caption:=formatdatetime('''Ol, hoje '' ddd, dd '' de '' mmmm'' de ''yyyy',now);

Esconde boto iniciar do windows


var taskbarhandle, buttonhandle:HWND; begin taskbarhandle:=findwindow('shell_traywnd',nil); buttonhandle:=getwindow(taskbarhandle,gw_child); Pg.: 20

if visible=true then showWindow(buttonhandle,sw_hide); {esconde o boto}

Restaura o boto iniciar do windows


var taskbarhandle, buttonhandle:HWND; begin taskbarhandle:=findwindow('shell_traywnd',nil); buttonhandle:=getwindow(taskbarhandle,gw_child); if visible=true then showWindow(buttonhandle,sw_restore); {restaura o boto}

Mostra barra de tarefas do Windows:


showWindow(findWindow('Shell_trayWnd',nil),SW_Shownormal);

Esconde a Barrade tarefas do Windows:


showWindow(findWindow('Shell_trayWnd',nil),SW_hide);

Mostra memria utilizada pelo Windows


var memorystatus:TMemoryStatus; begin MemoryStatus.dwlength:=sizeof(MemoryStatus); GlobalMemoryStatus(MemoryStatus); label1.caption:='Total de Memria Fsica livre: ' + inttoStr(MemoryStatus.dwavailvirtual); Convertendo um nmero real para string com 2 casas.
var ValorReal : Real; ValorString : String; begin ValorReal := 5; ValorString := floattostrf(ValorReal,ffFixed,18,2);

end; Utilizando o Esc para fechar um formulrio. {TForm1.FormKeyDown} // utilize o evento onkeydown case key of vk_Escape: form1.close; end; Pg.: 21

Contar Registros de um dgbrid showmessage(inttostr(table1.recordcount)); DATA por extenso var Form1: TForm1; ames:array[1..12] of string = ('Jan', 'Fev', 'Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'); implementation {$R *.DFM} function dataatual:string; var dia,mes,ano:word; begin decodedate(now,ano,mes,dia); result:='So Bernardo do Campo ' + inttostr(dia)+ ' de ' + ames[mes] + ' de ' + inttostr(ano) end; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(dataatual()); end; INSUFFICIENT MEMORY FOR THIS OPERATION. Outra possibilidade de evitar esses erros eh aumentar a Memoria Compartilhada: V ao BDE Administrator (que esta no dir do Delphi), Configuraoes, INIT Mude a propriedade SHAREDMEMSIZE para um valor maior (sempre uma potencia de 2)... 8192 jah eh bom...ele trava menos!!

Pg.: 22

Anda mungkin juga menyukai