Baixe o app para aproveitar ainda mais
Prévia do material em texto
Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 209 R Fecha formulário com animação Ao clicar no “x” fechará o formulário de forma animada. Digite as variáveis no início do programa. Ao clicar no X para fechar o formulário, este começará ficar com os cantos arredondados, diminuindo e aumentando seu tamanho... em ciclo, até que for confirmado Sim ou Não. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 210 R Animando formulário na abertura O código abaixo abrirá um outro formulário de forma animada, tipo, explodindo o formulário. Escreva o código no formulário que deseja abrir, neste exemplo será aberto o formulário de nome Form2. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 211 R Sistema com senha A seguir faremos um cadastro para usuários e senhas, um menu e um cadastro simples para Clientes. Vamos criar duas tabela para este sistema, uma será para os Usuários e uma para Clientes. Tabela de Clientes Índices secundários para pesquisa. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 212 Formulário de Login: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 213 Formulário do menu. Clique duplo no componente ImageList, será aberta uma tela onde será possível adicionar ícones. Dê um clique duplo no componente MainMenu para definir as opções na tela abaixo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 214 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 215 Formulário de Clientes Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 216 Ícones usados: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 217 Clique em ComboBox1, na propriedade Items digite um abaixo do outro: Nome Sobrenome Cep Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 218 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 219 Resultado: Ao clicar no botão x vermelho, pede se realmente quer remover todos os registros. Se ao clicar na setinha para posicionar o ponteiro no primeiro registro os ícones setinhas desaparecerão visto que o ponteiro estará posicionado no primeiro registro. Setinhas estão ocultas Veja as setinhas abaixo: Clicar no X no canto do formulário para fecha-lo, será pedido confirmação. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 220 R Relatório w Exemplo “básico” ( 1 ) Primeiramente criaremos um cadastro de clientes para listarmos alguns registros, após faremos o programa abaixo para listar os registros. Crie uma tabela com o Form Wizard e cadastre alguns registros. File w New w Other w Report w OK Será aberto um formulário em branco abaixo ... Insira um botão para o relatório. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 221 Insira um componente Table, altere a propriedade Name para Clientes_TB_Relatorio, na propriedade Databasename defina o alias, na propriedade TableName defina a tabela Clientes.Db. Clique duplo no formulário QuickReport, será aberta a tela abaixo: Após clicado OK teremos o formulário abaixo. Clique no formulário no QuickReport ( região branca ), clique no componente Table1 e mude o nome para Clientes_TB_Relatorio , defina a tabela na propriedade TableName para Clientes.DB. Clique em Clientes_TB_Relatorio, clique na propriedade Active e defina True. Clique na região branca e defina a propriedade DataSet para Clientes_TB_Relatorio. Altere a propriedade Name para QuickReport1 para QReport_Todos_Clientes. Se preferir deixe o nome QuickReport. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 222 Vamos definir o cabeçalho do relatório, data, hora e numeração de página do relatório. O layout do formulário será visto mais adiante, alinhamentos etc. · Os componentes do relatório estão na aba QReport. · Insira 5 componentes QRLabel, estes serão alterados recebendo um nome ( caption ) adequado. · Insira dois componentes QRSysData1, para definir a data e hora e outro para numeração da página. Veja abaixo após alterado todos os captions dos QRLabels com seus respectivos nomes. Agora insira 4 componentes QRDBText para imprimir ( listar ) os registros da tabela Clientes. Obs: Todos os dados da tabela são impressos na banda Detail. Para digitar o texto Pág.: Clique no componente QRSysData e na propriedade Data defina qrsPageNumber, na propriedade Text digite Pág.: Clique em QRSysData, mude a propriedade Data que esta mostrando como default ( padrão ) qrsTime, mude para qrsPageNumber Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 223 Cada componente QRDBText deve ser associado com o Dataset e ao campo a ser impresso. Abra o formulário onde se encontra o botão Relatório. File – Use Unit, clique no formulário do relatório Grid_Rel_Frm. Clique duplo ( evento OnClick ), no botão Relatório digite o código fonte abaixo: QReport_Todos_Clientes.Preview; Resultado: Clique em Clientes_TB_Relatório, clique na propriedade Active e defina o valor True. Clique no botão direito, Add Fields e OK Alterando as propriedades dos objetos QRLabel e QRDBLabel. Propriedade Top: Posiciona QRDBLabel na parte superior da banda corrente. Alignment: Alinha o conteúdo de um QRDBLabel no lado esquerdo, direito ou centro da banda. Banda: Clique na banda em uma banda ( PageHeader, Column Header ou Detail ), clique em Height e defina um valor para altura da banda – mais alta / baixa. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 224 Considere o seguinte exemplo, ao invés de ser Cadastro de Clientes, ser apenas um Cadastro de Funcionários com alguns detalhes a mais. Clique na banda Summary, clique no evento BeforePrint ( ante de imprimir ) e digite o código abaixo: Resultado: Todos os componentes que estão na banda Title e Column Header são do tipo QRlabel, basta alterar a propriedade Caption de cada um digitando o texto desejado. Todos os componentes que estão na banda Detail são do tipo QRDBText, para cada um destes deverá ser definido as propriedades DataSet e DataField ( para associar o nome do campo ). Insira um componente Table, clique na propriedade Name e digite Funcionários_TB_Rel, na propriedade DatabaseName defina um Alias, na propriedade TableName defina o nome da tabela Funcionários.db, clique na propriedade Active e defina o valor para True, clique duplo sobre Funcionários_TB_Rel, clique no botão direito, clique em Add fields e Ok para confirmar. Clique na parte branca do formulário do relatório, clique na propriedade DataSet e defina Funcionarios_TB_Rel Contando a quantidade de registros que há na tabela. Insira um componente QRSysData1, clique na propriedade Data e escolha a opção qrsDetailCount. Somando os salários que serão listados. Insira um componente QRExpr1, clique na propriedade Expression e digite SUM(Funcionarios_TB_Rel.Func_Salario) Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 225 R Relatório w Exemplo básico usando “SQL” ( 2 ) O exemplo a seguir é igual ao da página anterior, porém feito com SQL. Clique em New?? Other?? Report e Ok. Clique no formulário, clique na propriedade Name e digite QReport_Funcionarios_SQL_Rel. Clique duplo no centro do formulário, será aberta a tela abaixo: Após clicado em OK teremos a tela abaixo: Insira um componente Query, clique na propriedade DatabaseName e defina o Alias, clique em Query, clique no botão direito,clique em SQL Builder, será aberta uma tela, selecione a tabela Funcionários.db, selecione os campos desejados nos quadrinhos ( veja página seguinte ), após clique X para fechar e Yes para gravar a SQL. Clique / marque os seguintes quadrinhos: · Title · Column header · Detail band · Summary Clique OK Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 226 Selecione os campos a serem impressos: Defina detalhes do formulário abaixo: Clique no componente QRDBText1, clique em DataSet e defina Query1, clique em Datafield e defina o nome do campo Func_Nome, repite estes passos para os componentes QRDBText2 e QRDBText3. Como já vimos no relatório anterior os componentes QRLabel servem para imprimir os Cabeçalhos ( textos ). Os componentes QRDBText imprimirão os dados. Para totalizar os Salários insira um componente QRExpr. Para imprimir a quantidade de registros da tabela insira um componente QRSysData1, altere a propriedade Data para qrsDetailCount. Clique onde o bolão esta apontando, clique em DataSet e defina Query1. Na banda Title insira um componente QRLabel e no Caption digite Relatório de Funcionários. Altere a propriedade Caption de cada QRLabel nomeando de acordo com o exemplo. Defina DatabaseName = Alias Propriedade Active = True Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 227 R Relatório w Exemplo “básico” ( 3 ) Outro exemplo básico para listar e imprimir registros da tabela Clientes. Como trabalharemos com Relatórios usaremos vários componentes da palheta QReport Campos da tabela usados no relatório: Nome, Cidade, Data_Nasc File New Other Report Ok, o Delphi abrirá a tela abaixo ( QuickReport1 ) Após confirmar propriedades da página anterior teremos a tela abaixo: Clique duplo onde o balão esta apontando para abrir a tela de propriedades do QuickReport, veja tela ao lado. Assinale as opções que estão marcadas com um círculo veremlho. Banda para título do relatório, data, hora, numeração de página etc Banda onde serão impressos os cabeçalhos de cada coluna dos dados ( banda detail ). Banda onde os dados serão impressos. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 228 Pressione F11 e altere a propriedade Name de QuickReport1 para QReport_Clientes_Todos. File ? Use Unit escolha Clientes, clique no formulário do relatório e defina a propriedade DataSet para Clientes_Frm.Clientes_TB. Insira dois componentes QRSysData e altere a propriedade Data para qrsDateTime e a segunda propriedade Data para qrsPageNumber. Insira um componente QRSysdata ( aba Report ), altere a propriedade Data para qrsReportTitle. Insira componente QRLabel ( aba Report ) para definir os cabeçalhos dos campos, altere a propriedade Caption de cada objeto, de acordo como os nomes definidos abaixo. Insira componentes QRDBText para definir onde os dados serão impressos. Preste atenção nas iniciais dos nomes dos componentes QRDB = Query Report Data Base Text, comparando com os componentes do cabeçalho QRLabel = QR = Query Report Label. Selecione individualmente cada componente e defina suas propriedades: DataSet será Clientes_Frm.Clientes_TB e a propriedade DataField para definir os campos desejados. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 229 Vamos fazer traço abaixo dos cabeçalhos dos campos. Clique na banda column header, na propriedade Frame ( no mais + ), defina o valor da propriedade DrawBottom para True e na propriedade Width o valor 2. Frame: Pode ser definido, cor do traço, estilo ( pontilhado ), traço na parte superior da banda, direita e esquerda. Clique duplo sobre o ícone Relatório, digite o código abaixo. Para visualizar e imprimir: QReport_Clientes_Todos.Preview; Imprimirá o título do relatório onde mostra a palavra ( Report title ) idYes idNo Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 230 Como padrão o Delphi disponibiliza alguns botões para aumentar ou diminuir visualização, navegar nos registros, configurar impressora, informar quantidade de cópias, salvar relatório, abrir etc.. Ao confirmar previsualizar, será mostrado o relatório antes de imprimir na tela. As descrições dos botões estão em inglês, como traduzi-las ? No Delphi 6.0 abra a pasta: C:\Arquivos de programas\Borland\Delphi6\Lib e edite o arquivo qrprev.dfm, e altere as linhas Hint ( somente ! ) de: Hint = 'Print' Para: Hint = 'Imprime? No Delphi 5.0, abra o seguinte caminho: C:\Arquivos de programas\Borland\Delphi5\lib e altere os Hints que estão no arquivo qrprev.pas Ahh, salve o arquivoJ qrprev.pas Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 231 O código da página abaixo foi alterado para verificar se é digitada uma data válida: Relatório ? Filtrando por data: Insira um novo Formulário, dois componentes Edit ( aba Standard ) e um Bitbtn, veja abaixo o código fonte. Crie um índice secundário (Database Desktop) chamado de Idata_Nasc. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 232 Resultado página anterior. Imprimindo relatório por data ( veja código página anterior ). R Como mostrar “data” e “hora” no formulário ? Clique duplo sobre o componente Timer ( aba System ) e digite a linha de código acima. Para mostrar a data em um Label é preciso primeiramente converter Hora para String ( TimeToStr ). R Como formatar “data” por extenso ? Formatando data em um label. No evento OnShow digite a linha abaixo: Label1.Caption := FormatDateTime('"Timbó, "dddd", "d" de "mmmm" de "yyyy',date); Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 233 R Fazendo cálculos no DBGrid com “OnCalcFields” ? Calcula e atualiza valores na grade de dados. Crie a tabela de Produtos. Insira um novo formulário, e os seguintes componentes: Table, Datasource, DbGrid e 5 Labels. Clique no Table, clique na propriedade DatabaseName e defina o Alias ou pasta onde está a tabela de Produtos, clique na propriedade TableName, defina o nome da tabela Produtos.DB, clique duplo sobre o componente Table1, será aberta uma pequena tela, clique no botão direito, clique em Add fields, clique Ok. Clique no DBGrid, clique na propriedade DataSource e defina DataSource1. Clique no DBGrid , clique duplo sobre o DBGrid, será abera uma tela, posicione o ponteiro do mouse sobre o primeiro ícone da tela abaixo ( Add new ? Ins ), insira quatro colunas. Teremos a tela abaixo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 234 Agora faça a associação das colunas do DBGrid com os campos da tabela. Clique no DBGrid, clique em 0 ? Tcolumn, clique na propriedade FieldName e defina o nome do campo = Prod_Descricao, na propriedade mais abaixo, clique no + da opção Title, clique no Caption - Prod_Descricao, mude o Caption para Descrição, use a propriedade Alignment para alinhar o conteúdo do Caption para direita, esquerda ou centro, repita estes passos para as colunas Qtde e Preço. Clique no DataSource e na propriedade DataSet defina Table1. Agora crie um campo “calculado” ( campo virtual ou um campo de uso temporário ). Clique no componente Table1, com o ponteiro do mouse posicionado sobre a tela ( Produtos_TB ) clique no botão direito, clique na opção New field ... ( continua no balão abaixo ... ). Agora definina a coluna Total no Grid. Dê um clique no DBGrid, clique em 4 ? Tcolumn, clique na propriedade FieldName e defina o nome do campo = Temp_Total, na propriedae mais abaixo, clique no + da opção Title, clique no Caption - Total e mude este Caption para Descrição, use a propriedade Alignment para alinhar o Caption para direita (taRightJustify ). Campo Name: Digite o nome do campo calculado ( ou campo virtual), no Type informe a opção Currency ( moeda ), clique na opção Calculated e clique Ok. Veja abaixo o campo Calculado que foi criado. Temp_Total Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 235 Veja como esta a tela até o momento. No início do programa digite a linha da procedure abaixo: Digite a procedure abaixo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 236 Digite a procedure Atualiza_Total nos respectivos eventos: O código a seguir serve para atualizar os Totais que estão fora da grade, assim quando for alterado uma quantidade, preço ou deletado algum registro estes valores também serão alterados. Clique no componente Table1 ( Produtos_TB ), dê um clique duplo no evento OnCalcfields e digite o código abaixo. Resultado: Se o preço, quantidade ou se algum registro for removido os totais serão todos atualizados. « O Campo Total_Temp é do tipo calculado, ou seja, ele é somente utilizado quando o programa estiver rodando ( na memória ), o resultado que este armazenará não será mantido na tabela, portanto é um tipo de campo variável – uso temporário. Assim sendo, não será necessário criar este campo na tabela para ocupar mais bytes físicos. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 237 R Ordenando colunas de dados no DBGrid Ao clicar em uma das colunas ordenará os Nomes em ordem ascendente. Coluna Nome desordenada Coluna Nome ordenada – nomes ascendentes Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 238 R Como criar um gráfico “básico” ? Crie tabela de Produtos. Criar Alias para esta tabela, defina o nome Gráfico Crie a pasta Dados e grave a tabela nesta para não misturar com os outros arquivos. Crie um projeto novo, File ? New Application, clique na opção Project, clique em Remove from poject, selecione Unit, clique OK e clique Yes Clique em Database ( que está na barra de títulos ), FormWizard, clique no botão Next, nesta caixa selecione o alias Gráficos, clique na tabela Produtos.db, clique em Next, clique no botão >>, clique Next, Next e Finish, veja abaixo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 239 Insira um componente DBChart ( aba Data Controls ): Dê um clique duplo, veja abaixo será aberta outra tela.... Após clicar no botão Add será aberta a tela abaixo, clique no gráfico Pie ( torta ) e clique OK. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 240 Clique na aba Series, será aberta a tela abaixo: Clique na aba Data Source, no menu dropdown selecione Dataset, clique no Dataset e defina Table1, Labels: Prod_Desricao ( que é a descrição do produto ), Pie, defina o campo Prod_Qtde, clique no botão Close. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 241 Resultado até o momento: Definir título do gráfico , clique na aba Titles e mais abaixo digite Produtos. Ao lado do nome do produto mostrar o equivalente em percentual que é bem interessante para melhor visualizar. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 242 Definindo fundo do gráfico, Panel ? Gradient, visible.... Removi o campo código, como este é gerado automaticamente não há necessidade deixa-lo no formulário. Basta brincar um pouco mais com este recurso e aprenderá muito mais J Dê um clique duplo no botão e digite as duas linhas abaixo: Table1.Close; Table1.Open; As duas linhas acima servem para atualizar o gráfico caso um registro for excluído. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 243 R Como criar um gráfico com SQL ? Crie a tabela de Funcionários. Crie um formulário para entrada de dados. Insira um novo formulário para fazer o gráfico. Insira um componente DBChart ( aba Data Controls ) Insira dois componentes DateTimePicker1 ( aba Win32 ) Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 244 Clique duplo no componente DBChart. Clique no botão Add da tela acima, clique no tipo de gráfico Bar e Ok. Clique no botão Add para selecionar ( adicionar ) um tipo de gráfico. Clique no botão Title, será aberta uma tela, digite o nome Funcionários Há muitas outras propriedades do gráfico que poderão ser alteradas. Este exemplo lhe dará apenas uma rápida idéia de como gerar um gráfico J Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 245 Clique na aba Series para definir valores para o DataSet. Clique em Series, · defina Funcinários, · DataSet, · Dataset: Query, · Labels: Func_Nome · X: Func_Salario · Bar: Func_Salario E clique em Close para finalizar. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 246 Clique no componente Query1 e digite código SQL abaixo. Defina o DatabseName = digite_seu_alias, clique na proprieda SQL ( TStrings ) e digite o código SQL abaixo. Clique na propriedade Active e defina o valor True. Decrementa dias , menos 60 dias. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 247 R Pesquisando em uma tela e retornando resultado em outra Dê um clique duplo no DbGrid, selecione o componente OnDblClick Ao abrir a tela, dê um clique duplo sobre o registro desejado, após será aberta a tela de Cadastro do Cliente, digamos que você esta pesquisando um determinado registro e precisa altera-lo ao clicar no registro selecionado. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 248 R Frames File – New - Application. Mude a propriedade Name digite Menu_Frm, insira dois Panel ( aba Standard ), o primeiro Panel , mude a propriedade Name para Panel_Esquerda, defina a propriedade Align para alLeft, clique no Caption, apaga o texto Panel1, insira o segundo Panel , mude a propriedade Name para Panel_Direita, defina a propriedade Align para alClient, clique no Caption e apague o texto Panel2, salve o arquivo como o nome Frame_Pai. File – New – Frame, insira um componente Table1, clique em Table1, clique na propriedade DatabaseName e defina o alias, clique na propriedade TableName e defina a tabela Clientes.db, clique no Table1, clique na propriedade Name e mude o nome para Clientes_TB, clique duplo em Clientes_TB, clique no botão direito, clique em Add fields e clique Ok para adicionar todos os campos da tabela. Clique no componente DataSource1 clique na propriedade DataSet e defina Clientes_TB, clique no componente DataSource e na propriedade Name defina o nome Clientes_DS. Insira um DBNavigator ( aba Data Controls ), clique no DBNavigator e defina a propriedade DataSource para Clientes_DS. Clique no formulário frame para seleciona-lo e na propriedade Name defina o nome Frame_Clientes. Clique duplo sobre o componente Clientes_TB, arraste os campos para o formulário, após organize os campos de acordo com seu gosto. Todos os passos acima deverão ser repetidos para os formulários: · Funcionários · Produtos Foram inseridos dois painéis ( Panel ) um na esquerda e outro na direita. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 249 Clique no Menu_Frm ( primeiro frame que criamos ). Insira outro frame para os Produtos. Para ver os registros e iniciar processo de cadastramento, alteração etc, clique no componente Produtos_TB, clique na propriedade Active e defina o valor para True. Insira um componente TreeView e um ImageList1 que estão na aba Win32 Clique no TreeView, clique em Images e defina ImageList1 Insira outro frame para os Funcionários. Clique na propriedade Name e defina o nome deste formulário frame de Frame_Func Formulários do projeto de FramesPropriedade Name: Menu_Frm Propriedade Name: Frame_Produtos Propriedade Name: Frame_Func Propriedade Name: Frame_Clientes Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 250 Clique duplo sobre o ícone ImageList1 para definir os ícones, clique no botão Add para adicionar dois ícones. Insira outro formulário frame para crirarmos o relatório ( ou formulário de pesquisa ), na propriedade Name digite Frame_Clientes_Rel Abra o formulário “menu” ( Name: Menu_Frm ) e digite o código abaixo: Para adicionar imagens clique no botão Add, para apagar imagens clique Clear. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 251 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 252 No evento do OnChange do TreeView digite o código abaixo: Tela de ?Clientes? Como ficou a tela de ?Funcionários? Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 253 Tela vazia ( Frame Vazia ) Relatório de ?Clientes? ( com DBGrid ). Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 254 R Como livrar-se do “ponto” em um valor ? Quando multiplicamos um valor por outro e se um destes valores possuir um ponto separador, certamente será problema...L Como posso contornar este problema ? Problema: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 255 Solução do problema: R Como fechar formulário ao pressionar ESC ? R Como usar eventos de sons do Windows ? Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 256 R Relacionando Funcionários e Empresas O campo Relaciona_Com_Empresa foi criado na tabela Funcionários apenas para relacionar com a tabela Empresas. Teremos duas telas, uma de Funcionários e outra de Empresas Cadastro de Funcionário Cadastro de Empresas Resultado Insira um componente DBLookupComboBox1 que esta na aba Data Controls e defina as propriedades como mostra na página seguinte. Insira um componente Table ( aba BDE ) e um DataSource ( aba Data Access ). Clique no componente Table, defina propriedade DataBaseName para Relaciona ( Alias ), role para baixo e altere a propriedade Name de Table1 para Empresas_TB, clique em TableName e defina o nome da tabela Clietnes.db e defina a propriedade Active para True. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 257 Defina as propriedades abaixo do componente DBLookupComboBox1 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 258 R Cadastro de Pedidos e relacionamentos No exemplo a seguir farei um pequeno Sistema de Pedidos e mostrarei como fazer relacionamentos. Crie as tabelas abaixo: Crie o Alias para apontar para pasta onde se encontram as tabelas. Quando criamos uma nova aplicação o Delphi sempre abre um formulário em branco ( uma Unit ), remova-o clicando no ícone “Remove file from Project” . Use o FormWizard e crie o formulário de Clientes. Defina as propriedades do Form, Table, Alias etc. Índices, veja há dois campos, o primeiro campo índice Integer e o segundo campo AutoIncrement. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 259 Use o FormWizard, crie o formulário de Produtos. Defina as propriedades do Form, Table, Alias etc. Use o FormWizard e crie o formulário de Pedidos. Defina as propriedades do Form, Table, Alias etc. Próximo passo é fazermos o relacionamento entre as tabelas Pedidos e Clientes. Insira um componente Table1, altere a propriedade Name de Table1 para Clientes_TB, insira um DataSource, mude o nome para Clientes_DS. Insira um componente DBLookupComboBox1 para buscar o Cliente que fará o Pedido corrente. Clique em DBLookupComboBox1, clique em DataSource = Pedidos_DS, clique em DataField = Ped_Cli_Cod_Relaciona, clique em ListSource = Clientes_DS, clique em ListField = Clie_Nome e finalmente clique em KeyField = Clie_Codigo. Insira um componente Table para: Clientes ( Clinentes_Db ), Itens ( Itens_TB ) e um para Produtos ( Produtos_TB ), insira três componentes DataSource ( Clientes_DS, Itens_DS e Produtos_DS ). DatabaseName: Pedidos3 ( meu alias ), Propriedade Name: Pedidos_Frm, Propriedade TableName: Pedidos.db Como já vimos até o momento em vários exemplos cada Table deve ser renomeado para um nome mais sugestivo, defina o DatabaseName, Name de cada table renomeado e o TableName Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 260 Continua item ... Defina as propriedades básicas do formuláro: Caption = Cadastro de Pedidos. Agora definina as propriedades do componente Itens_TBè Propriedade do formulário Name = Pedidos_Frm, clique no componente Table1, pressione F11, na propriedade DataBaseName defina Alias, Name para Pedidos_TB, clique na propriedade TableName = Pedidos.db, clique em Pedidos_TB, clique no botão direito em Fields Editor, Add Fields e Ok ( para adicionar os campos ), clique no DataSource1, pressione F11, mude a propriedade Name para Pedidos_DS. ( este passos DEVEM sempre ser executados quando inserimos um componente Table e um DataSource ). Defina as propriedades para o componente Produtos_TB seguindo os passos do tem , a propriedade TableName terá a tabela de nome Produtos.db. Insira um DBGrid no formulário, defina a propriedade DataSource para Itens_DS. Clique em Itens_TB, clique na propriedade MasterSource e defina Pedidos_DS, clique nos 3 pontinhos ( ... ) da propriedade MasterFields, será aberta a caixa abaixo, clique nos dois campos que serão relacionados e clique em no botão Add e Ok. Após ter feito associação do campo. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 261 Clique duplo em Itens_TB, clique no botão direito, clique em New Field, preencha a tela como exemplo abaixo. Estamos criando o campo temporário Descr_Prod_Temp ( descrição de produtos ). Crie um divisão para o Grid clicando no ícone Add New ( Ins ) ( primeiro ícone amarelo ? veja setinha vermelha ), clique na propriedade FieldName e informe o campo temporário ( calculado ) chamado de Descr_Prod_Temp, veja tela abaixo: Cadastrando dois registros .... Clique no canto direito do campo, será mostrado um dropdown para escolher um produto. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 262 Digite o código abaixo nos respectivos eventos. Crie o campo temporário para o Código do Produto: Crie um campo temporário para o Preço Unitário: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 263 Crie mais duas divisões no DBGrid e associe os campos temporários: Crie o campo calculado para armazenar o total ( qtde x preço = total ). Digite o código fonte abaixo no evento OnCalcFields: Após selecionado o código será mostrado o registro complete. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 264 Clique no componente Itens_TB e digite o código no evento AfterPost: Clique no componente Pedidos_DS, digite o código abaixo no evento OnDataChange: Resultado: Falta alterar os títulos das colunas, o Delphi como padrão define os nomes dos campos. Clique duplo sobre DBGrid, clique na propriedade +Title e altere o Caption de cada coluna. Quando remover um pedido também removerá todos itens do pedoido. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 265 Após alterado os títulos do DBGrid: Vamos criar um Menu para abrir os cadastros que criamos até o momento. Insira 3 botões, clique em File, Use Unit, selecione as 3 units, Clientes, Produtos e Pedidos. Clique na opção Project ( opção da barra de títulos ), clique em Options, arraste o formulário Menu_Frm paraser o primeiro da lista, para abrir o formulário do Menu por primeiro. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 266 No Cadastro de Pedidios adicione um Edit para selecionar um número de pedido e um botão para imprimir. Digite as linha indicadas abaixo: Digite linha da Procedure. Digite Procedure Atualiza. Digite a linha Atualiza. Esta rotina carregará a lista de Números de Pedidos no ComboBox. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 267 Relacionamento para gerar relatório. Vamos criar o formulário para o relatório. File ? New ? Other ? Report. Insira um componente Query, faremos a filtragem dos registros com SQL. Clique em Query e defina o Alias. Clique no botão direito, clique na opção SQL Builder, no dropdown Table abra as tabelas Pedidos, Produtos, Itens e Cidades. Relacione os códigos arrastando até a segunda tabela. Clique na tabela Pedidos, clique no campo Ped_Cli_Cod_Relaciona e arraste-o até o campo Clie_Codigo da tabela de Clientes, clique na tabela Pedidos, clique no campo Ped_Nr_Pedido e arraste até o campo Item_Nr_Pedido_Relaciona da tabela de Itens, clique na tabela de Produtos, clique no campo Prod_Codigo e arraste-o até o campo Item_Cod_Prod_Relaciona da tabela Itens. No evento OnShow digite Atualiza; Filtrará o registro pelo Número do Pedido. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 268 Você poderá testar o resultado do relatório clicando no Raio Vamos criar o formulário do relatório. File ? New ? Other ? Report ? Ok Banda Page Header: Insira um QRLabel para digitar o título, clique na propriedade Caption e digite Relatório de Pedidos. Banda Column Header: Insira cinco componentes QRLabel e altere seus Captions de acordo com a tela gráfica acima. Banda Group Header: Insira um banda QRgroup, insira um componente QRExpr, clique na propriedade nos três pontinhos ( ... ) da propriedade Expression, será aberta uma tela, clique no botão Database Field, clique em Query1, clique no lado direito no campo Clie_Nome, clique Ok e Ok. Insira dois componentes QRDBText, clique em QRDBText, clique no Quickreport ( tela branca onde serão definidos os campos ) na propriedade DataSet e defina Query, clique em DataField e defina Ped_Nr_Pedido. Clique em no segundo QRDBText e defina o campo Ped_Nr_Pedido. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 269 Banda Detail: Insira cinco componentes QRDBText, clique em QRDBText, clique na propriedade DataSet e defina Query, clique em DataField e defina Prod_Descricao Banda Summary: Insira dois componentes QRExpr. No primeiro QRExpr somaremos as quantidades. Clique no primeiro QRExpr, clique nos três pontinhos da propriedade Expression, será aberta uma tela, clique no botão Function, clique em Statistical, clique no lado direito na opção Sum, clique no botão Continue, será aberta uma pequena caixa, clique nos três pontinhos, clique no botão DataField, clique em Query1, clique no lado direito sobre o campo Item_Qtde, clique OK, OK, OK, OK. SUM(Query1.Item_Qtde) Segundo QRExpr, neste multiplicaremos a Quantidade x o Preço Unitário e Somaremos. Sum(Query1.Item_Qtde * Query1.Prod_Preco_Unit) Digite os códigos abaixo nos respectivos eventos: Resultado do relatório pronto: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 270 R Criando um Recibo simples Criaremos recibos e imprimindo-os, este formulário não possuirá tabela para armazenar os dados do Recibo. Insira um Edit ( para o nome ), um Memo1 ( para o histórico ), um MaskEdit ( aba Additional ), um SpinEdit ( aba Samples ), insira dois botões, uma para Imprimir e outro para Sair. A unidade abaixo foi salva com o nome de Recibo_Frm.pas Imprime_Recibo_Txt é o formulário onde o recibo será impresso, este está na página seguinte. A propriedade Name deste formulário é Recibo_Form Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 271 Vamos criar uma nova unidade. Clique em File – New – Other e clique em Report. A unidade abaixo foi salva com o nome de Imprime_Recibo_Texto_Frm.pas. Posicione o mouse onde o balão está indicando, dê um clique duplo e ative os quadrinhos abaixo informados. Observe a nomeação dos componentes QRLabels Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 272 : Continua código referente página anterior... : Adiante veremos o código da unidade que escreve o valor por extenso. Nome do formulário onde são digitados os dados. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 273 Nome do arquivo que escreverá o extenso é Extenso_Unit. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 274 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 275 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 276 Resultado do programa Recibos Após clicar no botão Imprime mostrará tela abaixo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 277 R Protegendo seu programa / sistema Este exemplo pegará o número serial do HD e criptografará ( codificará ) e armazenará no registro do Windows. O programa PROTEGE deve ser executado por primeiro, após rode o sistema / programa, se este sistema for copiado para outra máquina mostrará um mensagem dizendo que é um program ilegal, visto que cada HD possui um código serial diferente. Crie a unidade ( File ? New ? Unit ) que conterá as rotinas de proteção do sistema, arquivo Rotinas.pas Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 278 Crie um projeto novo e salve este com o nome PROTEGE e a unidade de nome Unit_Protege. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 279 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 280 Execute o programa PROTEGE. Será regatado o serial do HD e criptografado no registro do windows. Crie um projeto novo, e funcionará somente se serial for válido, a tela abaixo salve com o nome de Unit_Protegida e o projeto com o nome de Sistema_Protegido, altere o projeto de acordo com o código abaixo: Digite esta linhas Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 281 Agora vamos abrir o registro do Windows para ver como está. Clique em Iniciar, Executar e digite Regedit, pressione enter, clique em Editar, clique Localizar e digite o texto Código_Serial_Secreto Veja abaixo o que foi localizado no registro do Windows Se o programa PROTEGE for executado na máquina onde será rodado o sistema que foi feito, e se após isto este for copiado para outra máquina e assim por diante, será mostrada a mensagem abaixo: Vamos procurar o texto Codigo_Serial_Secreto Veja o serial esta codificado. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 282 R Criando procedure Você pode criar suas próprias Procedures e Functions para organizar o código da aplicação de forma a facilitar sua leitura e manutenção, ou mesmo para reaproveitar procedures ou functions em outros programas. A diferença básica entre procedures e functions é: Functions ( funções ) retornam valores. Procedures não retornam. Exemplo 2 : Após digitado a linha no Private, pressione a combinação Ctrl Shift C para gerar a linha da procedure, e para finalizar basta digitar o código. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 283 Procedures - Somar e Subtrair Digite as procedures Soma e Subtrai Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 284 R Criando função( Funtion ) Outro exemplo de função ( Function ) Boolean pode ser True ou False ( Verdadeiro ou Falso ) Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 285 R Criando DLL no Delphi 6.0 Este tipo de arquivo contém funções e dados que outros executáveis podem utilizar quando estiverem rodando. São úteis quando contém funções que serão chamadas repetidas vezes por vários executáveis. Ao invés de repetir estas funções em cada um dos executáveis, estes utilizam uma fonte comum: as DLLs. O acrônimo DLL origina- se de Dinamic Link Library - Biblioteca de Vínculo Dinâmico. New ? New ? Other ? DLL Wizard e OK, será aberta a tela abaixo Mude o código acima, deverá ficar como o código abaixo, compile o projeto ( Ctrl F9 ) e salve o projeto como o nome de exemplo_dll Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 286 Executando o arquivo DLL criado. Criaremos uma nova aplicação. File ? New ? Application, insira um botão Bitbtn. Copie o arquivo exemplo_dll.dll para dentro da pasta do projeto abaixo para que este localize o arquivo Dll. Nome do arquivo dll que fizemos anteriormente Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 287 R Gráfico - Banner Insira um componente Image ( aba Additional ) Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 288 R Gráfico - Retângulo Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 289 R Gráfico - Lua R Gráfico - Url Escreve a URL definida no programa na área de trabalho do Windows. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 290 R Gráfico – Texto randômico Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 291 R Gráfico – Texto sombreado R Gráfico – Pirâmide 1 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 292 R Gráfico – Pirâmide 2 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 293 R Gráfico – Linha Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 294 R Gráfico – Elipses randômicas R Gráfico – Retângulos Anima fundo do form fazendo retângulos, constantemente gera retângulos no formulário. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 295 R Gráfico – Retângulo Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 296 R Arredondando valores Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 297 R Carregando uma cópia do programa na memória Ram. Neste exemplo mostra como carregar apenas uma cópia do seu projeto para memória. Imagine, se for clicado 3 vezes no ícone que abre seu sistema e se este for carregado 3 vezes consumirá memória ram desnecessária, isto poderá ser evitado com o código abaixo. Neste projeto foram incluídos 3 formulários. R Arredondando valores ( outro exemplo ) Neste exemplo usaremos um Bitbtn, um Edit e um Label Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 298 R Ajustando largura em um DBGrid Veja no exemplo abaixo a coluna Clie_Nome possui largura maior que a coluna Data Nascimento que não está totalmente visível ou se ficar algum espaço em branco no lado direito do grid, para visualizar os campos de forma que fiquem todos visíveis no DBGrid utilize o código abaixo: Digite a Procedure Reajusta_Larg_Coluna Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 299 R Ordenando registros em um DBGrid Ao clicar na barra de título do Grid ordena nomes por Nome. Cliquei na barra de títulos na coluna Data Nascimento ordenou por data Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 300 Digite o código abaixo no evento OnTitleClick: R Criando componente File – New – Other – Component - Ok Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 301 Vamos criar um componente “botão”, este será armazenado na aba Samples. Após instalado o componente este estará disponível na aba Samples Defina a pasta onde deseja armazenar o componente. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 302 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 303 Na definição de tipo, o evento Click é declarado como um procedimento protegido. Os eventos são procedimentos específicos para determinadas ações. Na implementação deste evento, devemos primeiro herdar - inherited - as características do evento Click do componente herdado, e depois realizamos as mudanças desejadas. No nosso caso, exibir um quadro de diálogo. O método override, não substitui o evento Click herdado do Tbutton, ele apenas estende ou refina este evento no novo componente. Usamos override para especificar que haverá uma modificação no evento. Na seção public, declaramos o método constructor que controlará a construção do componente. Usamos comumente Create como nome deste método, e Aowner como nome de parâmetro, nada impedindo a utilização de outros nomes. Na implementação do constructor, semelhante ao Click, primeiro herdamos as características do objeto base e depois alteramos as propriedades Caption e Cursor. A propriedade Cursor, especifica qual será o desenho que representará o mouse quando este estiver em cima do controle, e pode ser: Após a digitação do código, selecione Component/Install Component..., na barra de menu para instalar este componente dentro do pacote de componentes do usuário (Delphi User’s Components) - dclusr30.dpk. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 304 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 305 Vamos aplicar o componente que criamos: File ? New ? Application, na aba Samples selecione o botão e arraste-o para o formulário. Execute o programa ( F9 ) e clique no botão, será mostrado uma caixa de diálogo. R ActiveControl Controlando eventos com o controle ativo. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 306 R Validando data de avaliação do sistema Este exemplo mostra como validar a data de validação do sistema. Defina a data desejada. R Definindo cor de fundo para o formulário Se a data for 16-06-2004, esta será aceita, se for anterior não. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 307 R Barra vertical no formulário Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 308 R Mostrando Data e Hora do sistema Insira um Label e um botão do tipo Bitbtn no form. R Arredondando valores Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 309 R Filtrando registros com “Filter” No exemplo abaixo insira dois componentes MaskEdit ( aba Additional ), um DbGrid ( Data Controls ), um componente Table ( defina as propriedades do Table, como, databasename – alias, tablename ), insira um DataSource e defina a propriedade Dataset = table1, um componente DBNavigator e defina a propriedade DataSource para DataSource1 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 310 R Aplicação para Ms-Dos File ? New ? Other ? Console application, sera aberta uma tela… Será aberta a tela abaixo ( no Delphi 6.0 ) Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 311 Segundo exemplo: Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 312 Terceiro exemplo: Quarto exemplo: Delphi Aplicado v byEnglish Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 313 R Gravando registro fisicamente Um dos problemas dos programadores Delphi é salvar as informações fisicamente no disco rígido. Quando estamos trabalhando com o programa as informações ficam retidas no buffer, o que, em caso de queda de energia ou até mesmo se o usuário fechar o Windows com a aplicação aberta resulta na perda dos dados, que foram processados na execução atual do sistema. Para resolver o problema, basta acrescentar no evento AfterPost de cada componente Table as linhas de código que estão abaixo. Na lista de Uses acrescente a unit DBIProcs. Dessa forma, você não precisa temer perder os seus dados por uma falha elétrica ou pela quebra do sistema. : : Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 314 R Compactando arquivos com Winzip Compactando e descompatando arquivos Delphi e Winzip Insira os seguintes componentes: SaveDialog, dois componentes OpenDialog ( aba Dialogs ), MainMenu ( aba Standard ), StatusBar ( aba Win32 ) Dê um clique duplo no componente MainMenu1 e defina as propriedades Name para as três opções do Menu, Aquivo1, Novo_Arq_Zip, Descompacta_Zip e Fechar1 Insira um ListBox ( aba Standard ) Defina o nome do formulário de Name: FrmPrinc Statusbar Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 315 Unidade Principal : : : : Digite as funções Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 316 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 317 Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 318 Defina as propriedades do componente SaveDialog No componente OpenDialg defina na propriedade Options as seguintes opções para True: ofHideReadOnly = True ofAllowMultiSelect = True ofEnableSizing = True No componente OpenDialgZip defina na propriedade Options as seguintes opções para True: ofHideReadOnly = True ofEnableSizing = True Vamos criar outra unidade UExtrair para descompactar os arquivos compactados Insira dois componentes OpenDialogs ( aba Dialogs ) Name: Abre_Arq_Zipado Name: Pasta_Destino_Bit Em Options defina as opções: ofHideReadOnly = True ofEnableSizing = True Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 319 : : Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 320 Compactando Descompactando Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 321 R Validando Cartão de Crédito Digite estas duas variáveis Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 322 R Caixa de diálogo do Windows – Sair do Windows R Rolando formulário com PageUp e PageUp Selecione o formulário, ative a propriedade KeyPreview para True. Ao pressionar as teclas PageUp e PageDown rolará o formulário para cima ou para baixo. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 323 R Navegando nos registros com botões Podemos simular um clique em um botão específico do DBNavigator, para isto usamos o procedimento BtnClick(Index: TNavigateBtn) disponibilizado pela classe TDBNavigator. O botão a ser clicado deve ser passado como parâmetro. Declare na cláusula uses a unit dbctrls. (se ainda não estiver declarado) Botoes do navegador de dados nbFirst .....Registro anterior nbPrior ..........Registro anterior nbNext ...........Próximo registro nbLast ............Último registro nbInsert .........Inserir registro nbDelete ........Apaga registro nbEdit ...........Altera registro nbPost ...........Grava registro nbCancel ......Cancela registro nbRefresh.......Atualiza registro Apagando Registro Ao clicar no sinal de menos ( - ) do DbNavegador será pedido confirmação para excluir o registro. Digite o código abaixo no evento BeforeAction. Delphi Aplicado v by English Way 26/03/2008 - 14:10:36 - Jurandir / Timbó / SC 324 R Inserindo imagem do tipo .Jpeg na tabela Dê um clique duplo no componente Table1, selecione os dois campos e arraste-os para dentro do formulário.
Compartilhar