Criando um formulário padrão de cadastro com teclas de atalho e sem nenhuma linha de código
A herança visual de formulários é um recurso muito utilizado por qualquer programador Delphi, este recurso poupa o programador de ficar construíndo formulários que são sempre iguais, como os de cadastro por exemplo.
Este artigo destina-se tanto a programadores iniciantes, quanto avançados e mostra como criar um formulário padrão de cadastro com teclas de atalho e sem nenhuma linha de código, apenas utilizando componentes nativos do Delphi.
Aqui utilizarei a versão 7 do Delphi, nesta versão ao abrir o Delphi, ele já traz uma nova aplicação, mas não é o que queremos, desejamos apenas um novo Form. Por isso, clique em File e depois em Close All, em seguida clique em File/New/Form.
Vamos alterar algumas propriedades de nosso formulário: Name para FrmPai e BorderStyle para BsDialog, Position para poScreenCenter.
Coloque no formulário um componente ImageList da palheta Win32.
De um duplo-clique sobre o ImageList e clique no botão Add, as imagens no Delphi ficam no seguinte caminho: C:\Arquivos de programas ou Program Files\Arquivos comuns ou Common Files\Borland Shared\Images\Buttons. Selecione o arquivo de imagem DOCSINGL e clique em Abrir, Ao ser questionado se deseja separar o Bitmap em 2, clique em Yes. Será inserido uma segunda imagem, mais apagada, selecione-a e clique em Delete.
Repita o procedimento adicionando os arquivos de imagem: FLOPPY, TRASH e UNDO, respectivamente, veja a imagem abaixo:

Coloque no formulário um componente ActionList1 da palheta Standard. Altere sua propriedade Image para ImLst e Name para ActLst.
De um duplo-clique sobre o ActionList, será aberta a janela Editing FrmPai.ActLst, Na parte superior da janela há um botão com uma seta, clique na seta e depois em New Standard Action ou tecle Ctrl + Ins. Será aberta a janela Standard Action Classes, role a barra de rolagem até aparecer a classe Dataset. Mantenha a tecla Ctrl pressionada e clique em TDatasetInsert, depois em TDatasetDelete, depois em TDatasetPost e por último clique em TDatasetCancel, para encerrar clique em OK.
Será exibida novamente a janela Editing FrmPai.ActLst, mas note que agora em Categories temos a categoria Dataset, clique sobre ela, em Actions é exibido as quatro Ações que selecionamos, o que temos de fazer agora é personalizar cada uma destas ações. Selecione a acão DatasetInsert1 e vamos alterar algumas propriedades:
Caption: F2 Novo
ImageIndex: 0
ShortCut: F2
Name: DstNovo
Caption: F3 Excluir
ImageIndex: 2
ShortCut: F3
Name: DstExcluir
Selecione a acão DataSetPost1 e vamos alterar algumas propriedades:
Caption: F4 Salvar
ImageIndex: 1
ShortCut: F4
Name: DstSalvar
Selecione a acão DataSetCancel1 e vamos alterar algumas propriedades:
Caption: F5 Cancelar
ImageIndex: 3
ShortCut: F5
Name: DstCancelar

Coloque no formulário quatro BitBtn's da palheta Additional.
Selecione o BitBtn1 e altere as seguintes propriedades:
Action: DstNovo
Name: BtnNovo
Width: 89
Selecione o BitBtn2 e altere as seguintes propriedades:
Action: DstExcluir
Name: BtnExcluir
Width: 89
Action: DstSalvar
Name: BtnSalvar
Width: 89
Selecione o BitBtn4 e altere as seguintes propriedades:
Action: DstCancelar
Name: BtnCancelar
Width: 89
Crie uma pasta Chamada de Herança e salve este formulário como Upai dentro desta pasta.
Veja na figura abaixo, como ficou o formulário:

Na janela Add to Repository, que foi aberta prencha os campos Title e Descripition com Herança de Formulário, em Page selecione Forms e em Author coloque o seu nome, depois clique em OK.
Feche o nosso formulário através do menu File/Close All.
Utilizando nosso formulário
Clique em File/New/Application, será criado o projeto Project1, o formulário Form1 e a Unit Unit1.
Feche o formulário Form1 e a Unit Unit1, ao ser perguntado se deseja salvar a Unit1, clique em No. Clique em File/New/Other..., selecione a aba Forms, dentro desta aba selecione Herança de Formulário, na parte de baixo marque Inherit, como mostra a figura abaixo:

Coloque no formulário um componente ClientDataSet da palheta Data Access e altere sua propriedade Name para CdsClientes. De um clique na propriedade FieldDefs e outro clique nas reticências ao lado da propriedade. Será aberta a janela Editing CdsClientes. FieldDefs, clique duas vezes no botão Add New na parte superior da janela.
Selecione cdsClientesField1 e altere as seguintes propriedades:
Name: id
DataType: ftAutoInc
Selecione cdsClientesField2 e altere as seguintes propriedades:
Name: Nome
DataType: ftString
Size: 35
Feche a janela Editing CdsClientes. FieldDefs. Clique com o botão direito do mouse sobre o ClientDataSet e depois em Create Dataset.
Clique novamente com o botão direito do mouse sobre o ClientDataSet e depois em Fields Editor...
Clique com o botão direito do mouse sobre o Fields Editor e depois em Add all fields.
Mantendo a tecla Shift pressionada, clique sobre os campos id e nome, ambos ficaram selecionados, arraste os dois campos para o formulário.
Ajeite os componentes para que fique parecido com a figura abaixo:

Tecle F9.
Teste as teclas de atalho, teclando F2, preencha apenas o campo Nome e tecle F4, veja a figura abaixo, os botões F2 Novo e F3 Excluir são habilitados automaticamente, isto é feito pelas Actions de Dataset:


7 COMENTÁRIOS
Interessante o uso do actionlist para inserir, exclusão, alteração e cancelamento. Faltando somente o ALTERAÇÃO/EDIÇÃO.
Mas descordo:
1) O uso do clientdaset no formulário e não no DataModule
2) DataType: ftAutoInc - isto deveria estar a cargo da base de dados, visto que em rede poderia ter uma duplicidade de ID.
Atenciosamente
Obrigado pelo comentário Gustavo, como eu disse anteriormente aplicações grandes e reais, não utilizam Data Module, pois, devido ao uso de pacotes são dificeis de gerenciar, toda as empresas que trabalhei até agora não usam Data Module.
Atenciosamente
Sou novo no forum e não sei muito bem como e nem onde postar...
Mas vamos ver se vc consegue me dar um help:
Sou iniciante no Delphi e estou com dificuldades em separar os dados de uma linha do ListBox em colunas.
Ex.:
No meu ListBox eu tenho os seguintes dados:
20:05 | segunda-Feira | e:\Arq.rar
17:22 | terça-Feira | C:\Arquivos de progrmas\App2.exe
10:10 | quarta-Feira | e:\Arq.txt
13:30 | quinta-Feira | C:\windows\App3.exe
Gostaria de receber estes dados em 3 variáveis diferentes:
Col1= 20:05
Col2= segunda-Feira
Col3= e:\Arq.rar
e assim por diante, linha a linha.
Tentei trabalhar com alguns dos componentes que possuem grid, pois fica mais "bonitinho", mas não me acertei também. Estes dados eu importo de um txt para o ListBox. Acho que separar isso de um componente que possua GRID é mais fácil, mas não consegui nem importar o arquivo txt (risos).
Se puder me dar uma luz sobre como receber separadamente cada coluna...
Abraço!
Para este tipo de dúvida geralmente usamos o Fórum mesmo, veja este no link http://www.devmedia.com.br/forum/delphi,
por lá você encontrará diversos colegas que vão poder lhe ajudar.
Porém nesta tua dúvida eu gostaria de lhe ajudar. Estou finalizando um artigo e amanhã de manha bem cedo(22/03/2012) o mesmo estará no ar, creio que ele irá lhe atender 100%.
Qualquer dúvida você já posta no próprio artigo amanhã.
Peço que você aguarde apenas para terminar o mesmo, ok ?
Obrigado e um abraço.
Um abraço e qualquer coisa só entrar em contato.
Space do autor


4
0
