|
Usuários |
|
48 Usuários Online
|
|
[Artigos]
DBGrids Persistentes |
Publicado por ActiveDelphi : Quinta, Dezembro 23, 2004 - 12:34 GMT-3 (4484 leituras)
3 Comentários Enviar para um amigo Versão para impressão
|
Para continuarmos com a configuração do grid igual a última vez, podemos usar uma técnica chamada “DBGrids Persistentes”.
No formulário que possui o grid colocamos no evento onShow os seguinte código:
if( FileExists('C:\DBGridsPersistentes\DBGrid1.cfg')
)then
DBGrid1.Columns.LoadFromFile('C:\DBGridsPersistentes\DBGrid1.cfg')
else
ShowMessage('Arquivo não encontrado');
Esse código verifica se há o arquivo gravado no endereço indicado se existir ele
é carregado.
Também colocamos um button para chamarmos uma outra tela, o caption do button
chama-se “adicionar colunas”.
A Tela fica com essa aparência:

O formulário “FmMostraCampos” possui
os nomes dos campos que devemos marcar qual deve ficar visível ou não para isso
use um panel e DBCheckbox antes crie uma tabela com os campos do dbgrid do tipo
lógico.
A Tela fica com essa aparência:

A tabela aqui utilizada tem o nome
“CampoCliente” pois A Tabela que está conectado no DBGrid é a de Cliente.
No evento OnShow deste Formulário inserimos este código:
CampoCliente.Open;
CampoCliente.Edit;
O evento OnClose fica desse jeito:
var i : Integer;
begin
if(CustNo.Checked)then
Form1.DBGrid1.Columns[0].Visible := true
else
Form1.DBGrid1.Columns[0].Visible := false;
if(Company.Checked)then
Form1.DBGrid1.Columns[1].Visible := true
else
Form1.DBGrid1.Columns[1].Visible := false;
if(Addr1.Checked)then
Form1.DBGrid1.Columns[2].Visible := true
else
Form1.DBGrid1.Columns[2].Visible := false;
if(Addr2.Checked)then
Form1.DBGrid1.Columns[3].Visible := true
else
Form1.DBGrid1.Columns[3].Visible := false;
if(City.Checked)then
Form1.DBGrid1.Columns[4].Visible := true
else
Form1.DBGrid1.Columns[4].Visible := false;
if(State.Checked)then
Form1.DBGrid1.Columns[5].Visible := true
else
Form1.DBGrid1.Columns[5].Visible := false;
if(Zip.Checked)then
Form1.DBGrid1.Columns[6].Visible := true
else
Form1.DBGrid1.Columns[6].Visible := false;
if(Country.Checked)then
Form1.DBGrid1.Columns[7].Visible := true
else
Form1.DBGrid1.Columns[7].Visible := false;
if(Phone.Checked)then
Form1.DBGrid1.Columns[8].Visible := true
else
Form1.DBGrid1.Columns[8].Visible := false;
if(Fax.Checked)then
Form1.DBGrid1.Columns[9].Visible := true
else
Form1.DBGrid1.Columns[9].Visible := false;
if(TaxRate.Checked)then
Form1.DBGrid1.Columns[10].Visible := true
else
Form1.DBGrid1.Columns[10].Visible := false;
if(Contact.Checked)then
Form1.DBGrid1.Columns[11].Visible := true
else
Form1.DBGrid1.Columns[11].Visible := false;
if(LastInvoiceD.Checked)then
Form1.DBGrid1.Columns[12].Visible := true
else
Form1.DBGrid1.Columns[12].Visible := false;
//------------------------------------------------
CampoCliente.Post;
CampoCliente.Close;
i:=0;
Form1.DBgrid1.Columns.Count;
for i:= 0 to (Form1.DBgrid1.Columns.Count - 1) do
begin
Form1.Dbgrid1.Columns[i].Title.Color := clMoneyGreen;
Form1.Dbgrid1.Columns[i].Color := clWindow;
// As duas linhas acima alteram a cor do titulo e a cor
da coluna
//Esta linha Salva a aparência do DBGrid para que ele possa
ser carregado da próxima vez que for utilizado.
Form1.DBgrid1.Columns.SaveToFile('DBGrid1.cfg');
end;
Mostrei o exemplo como persistir com o mesmo dbgrid da ultima
configuração agora basta usar a criatividade.
É isso, espero ter ajudado!
Observação: por Alexsander Wilen Ferreira - alexsander.wilen@terra.com.br
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
por: joao.schroeder : Dez 26, 2004 - 08:15 (Informações sobre o membro | Enviar uma mensagem)
|
|
Muito bom este código. É de bastante utilidade. Aí eu pensei em fazer isso com relatórios. Se isso é possível, seria bom se alguém fizesse um artigo explicando como se escolhe os campos para que o cliente escolha o que ele quer imprimir.
|
por: micheus : Abr 01, 2005 - 02:46 (Informações sobre o membro | Enviar uma mensagem)
http://
|
Podemos economizar um pouco de digitação se nas seqüências como:
if (CustNo.Checked) then
Form1.DBGrid1.Columns[0].Visible := true
else
Form1.DBGrid1.Columns[0].Visible := false;
utilizarmos:
Form1.DBGrid1.Columns[0].Visible := CustNo.Checked;
[]s
|
por: danielrmt : Mai 28, 2005 - 11:19 (Informações sobre o membro | Enviar uma mensagem) http:// | ou melhor meu caro micheus,
colocariamos um checklistbox e fariamos assim
for i := 0 to checklistbox.items.count -1 do
form1.dbgrid1.columns[i].visible := checklistbox.checked[i];
poderiamos até mesmo colocar no oncreate da tela de seleção o seguinte para colocar os items dianmicamente. assim funcionaria para qualquer dbgrid:
checklistbox.items.clear;
for i := 0 to Dbgrid1.Columns.Count -1 do
checklistbox.items.add(Dbgrid1.Columns[i].Title);
lembrando de colocar a var i: integer | [ Comentários não permitidos para usuários anônimos. Por gentileza, registre-se ou conecte-se ao sistema
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|