Ir para conteúdo
Fórum Script Brasil
  • 1

(Resolvido) Criar DbGrid em tempo de execução


Vivendo&Aprendendo

Pergunta

Olá pessoal

Tenho uma tabela no banco mysql onde salvo os seguintes dados (Referente, IgrejaPastor, MesReferente, DataDeposito, Valor e Comprovante), essa tabela é para controle de depósitos bancários que são efetuados obrigatoriamente todos os meses e para fins pré-estabelecidos. No campo Referente, específico que tipo de depósito será (Missões, Contabilidade, Contribuição pastoral, etc;). Para cada uma dessas opções, preciso mostrar os dados em um DBGrid ou StringGrid e saber se os depósitos estão em dia. Em todas as igrejas as seguintes opções se repetem normalmente (Contabilidade e Missões), mas em algumas existem mais de um pastor que deposita a contribuição pastoral. Nesse caso, preciso saber qtos pastores estão efetuando o depósito e criar o Grid para mostrar os dados. Lembrando que só tenho a certeza de que existe pelo menos um pastor, mas se houver mais de um como faço para criar os grids?

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Se voce quer criar DBGrids para mostrar tabelas diferentes, não é preciso fazer isso, basta colocar somente um DBGrid no Form e ir trocando as tabelas pelo link do DBGrid

Entretanto, se voce definir corretamente a sua tabela, voce pode colocar na mesma tabela, igrejas com nomes diferentes, com nomes de pastores diferentes, e com as demais informações pertinentes a cada um deles....  esses dados poderão ser controlados por um código ou por algum outro identificador.

Ai na pesquisa, voce traz para o DBGrid somente as informações de uma determinada Igreja ou Pastor.

exempos de sistemas prontos

https://www.google.com.br/search?ei=iNkzWvH5BsWiwgT9xpuQBA&q=sistema+integrado+de+igrejas+delphi&o que=sistema+integrado+de+igrejas+delphi&gs_l=psy-ab.3..33i22i29i30k1l6.5334.7238.0.10928.7.7.0.0.0.0.188.832.0j6.6.0....0...1c.1.64.psy-ab..1.6.826...0i22i30k1.0.mHZj_4IZ6p0

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jhonas

Já temos um sistema próprio da nossa igreja. O que preciso agora é controlar depósitos. Vou tentar explicar melhor.

Todos os meses as igrejas depositam certos valores em uma conta corrente. Esses valores são referentes a: Contribuição da igreja, contabilidade, Missões, Contribuição para o seminário teológico e Contribuição pastoral. Salvo na tabela os seguintes dados: 

Referente - que será uma dessas opções acima;

Mês referente - escolho o mês ao qual o depósito é referente, pois posso depositar atrasado em algumas situações;

Data depósito - data que sai no comprovante de depósito

Comprovante - número do envelope de depósito ou da transferência bancária; e

Igreja/Pastor - O nome da igreja se for as quatro primeiras opções, mas se for contribuição pastoral, preciso salvar o nome dele. (Está certo também).

O problema está na apresentação desses dados. Preciso para cada opção (Contribuição da igreja, contabilidade, Missões, Contribuição para o seminário teológico e Contribuição pastoral), mostrar em um grid separado de uma vez. Faço a separação pelo campo referente, mas na mesma igreja podem ter mais de um pastor e agora preciso que os cada pastor seja mostrado em grid separado também.

Entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

ok... então vamos dizer que tenha 10 pastores....seriam 10 DBGrids ? no mesmo Form ?

voce poderia usar o PageControl para colocar um DBGrid em cada pagina

ou poderia selecionar um Pastor em um DBCombobox e mostrar os dados dele no DBGrid

existe realmente a necessidade de mostrar os dados em Grids separados ?

monte no Form uma tela, idealizando como voce pensa que seria ... e depois poste no forum a imagem ...  talvez eu possa te dar outras idéias.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite Jhonas

Seria mais interessante cada pastor em seu Grid. Consigo criar as TabSheets do pagecontrol em tempo de execução e criar um DBGrid dentro delas. Mas quando clico na Aba 2 por exemplo o DBGrid some.

Só que ele cria na primeira TabSheet em vez de criar na que está sendo criada também. Deveria ser criado o DBGrid na TabSheet Aba1 e não na Cadastro.

Esse é o código que estou usando para criar a tabsheet no meu pagecontrol já existente e o DBGrid dentro dela.

 

procedure TForm1.SpeedButton1Click(Sender: TObject);
var ZQuery : TZQuery;
    DataSource : TDataSource;
    Abas : TTabSheet;
    DBGrid : TDBGrid;
begin
  Inc(Contador);
  Abas := TTabSheet.Create(PageControl1);
  Abas.Caption := 'Aba '+IntToStr(Contador);
  Abas.Name := 'Aba'+IntToStr(Contador);
  Abas.PageControl := PageControl1;
  PageControl1.ActivePage := Abas;
  DBGrid := TDBGrid.Create(Self);
  with DBGrid do
  begin
    Parent := PageControl1;
    Align := alClient;
    Name := 'Grid'+Abas.Name;
    Visible := True;
    DBGrid.Columns.Insert(0);
    DBGrid.Columns[0].FieldName:='Referente';
    DBGrid.Columns[0].Title.Caption:='Referente';
    DBGrid.Columns[0].Title.Alignment := taCenter;
    DBGrid.Columns[0].Title.Font.Style := [fsBold];
    DBGrid.Columns[0].Width:=155;
    DBGrid.Columns.Insert(1);
    DBGrid.Columns[1].FieldName:='DescricaoPastor';
    DBGrid.Columns[1].Title.Caption:='Igreja/Pastor';
    DBGrid.Columns[1].Title.Alignment := taCenter;
    DBGrid.Columns[1].Title.Font.Style := [fsBold];
    DBGrid.Columns[1].Width:=200;
    DBGrid.Columns.Insert(2);
    DBGrid.Columns[2].FieldName:='MesReferente';
    DBGrid.Columns[2].Title.Caption:='Mês Ref.';
    DBGrid.Columns[2].Title.Alignment := taCenter;
    DBGrid.Columns[2].Title.Font.Style := [fsBold];
    DBGrid.Columns[2].Width:=65;
    DBGrid.Columns.Insert(3);
    DBGrid.Columns[3].FieldName:='DataDeposito';
    DBGrid.Columns[3].Title.caption:='Data Dep.';
    DBGrid.Columns[3].Title.Alignment := taCenter;
    DBGrid.Columns[3].Title.Font.Style := [fsBold];
    DBGrid.Columns[3].Alignment := taRightJustify;
    DBGrid.Columns[3].Width:=65;
    DBGrid.Columns.Insert(4);
    DBGrid.Columns[4].FieldName:='ValorD';
    DBGrid.Columns[4].Title.caption:='Valor';
    DBGrid.Columns[4].Title.Alignment := taCenter;
    DBGrid.Columns[4].Title.Font.Style := [fsBold];
    DBGrid.Columns[4].Alignment := taRightJustify;
    DBGrid.Columns[4].Width:=70;
    DBGrid.Columns.Insert(5);
    DBGrid.Columns[5].FieldName:='Comprovante';
    DBGrid.Columns[5].Title.caption:='Nº Envelope';
    DBGrid.Columns[5].Title.Alignment := taCenter;
    DBGrid.Columns[5].Title.Font.Style := [fsBold];
    DBGrid.Columns[5].Alignment := taRightJustify;
    DBGrid.Columns[5].Width:=100;
  end;
end;

 

Sem título.jpg

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

  • 0

O correto seria assim....   mas acho que o controle é mais complicado.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Buttons, Grids, DBGrids, StdCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function AddDBGrid( Controle : TPageControl; caption : string ) : TTabSheet;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DBGrid : TDBGrid;
  contador : integer;
implementation

{$R *.dfm}

function TForm1.AddDBGrid( Controle : TPageControl; caption : string ) : TTabSheet;
var DBGrid : TDBGrid;
begin
  Result := TTabSheet.Create(self);
  Result.PageControl := Controle;
  Result.Caption := caption;
  DBGrid := TDBGrid.Create(PageControl1);
  Result.Tag := Integer(DBGrid);
  DBGrid.Parent := Result;
  DBGrid.Font.Name := 'Courier New';
  DBGrid.Font.Size := 10;
  DBGrid.Align := alClient;

  with DBGrid do
  begin
    Visible := True;
    DBGrid.Columns.Insert(0);
    DBGrid.Columns[0].FieldName:='Referente';
    DBGrid.Columns[0].Title.Caption:='Referente';
    DBGrid.Columns[0].Title.Alignment := taCenter;
    DBGrid.Columns[0].Title.Font.Style := [fsBold];
    DBGrid.Columns[0].Width:=155;
    DBGrid.Columns.Insert(1);
    DBGrid.Columns[1].FieldName:='DescricaoPastor';
    DBGrid.Columns[1].Title.Caption:='Igreja/Pastor';
    DBGrid.Columns[1].Title.Alignment := taCenter;
    DBGrid.Columns[1].Title.Font.Style := [fsBold];
    DBGrid.Columns[1].Width:=200;
    DBGrid.Columns.Insert(2);
    DBGrid.Columns[2].FieldName:='MesReferente';
    DBGrid.Columns[2].Title.Caption:='Mês Ref.';
    DBGrid.Columns[2].Title.Alignment := taCenter;
    DBGrid.Columns[2].Title.Font.Style := [fsBold];
    DBGrid.Columns[2].Width:=65;
    DBGrid.Columns.Insert(3);
    DBGrid.Columns[3].FieldName:='DataDeposito';
    DBGrid.Columns[3].Title.caption:='Data Dep.';
    DBGrid.Columns[3].Title.Alignment := taCenter;
    DBGrid.Columns[3].Title.Font.Style := [fsBold];
    DBGrid.Columns[3].Alignment := taRightJustify;
    DBGrid.Columns[3].Width:=65;
    DBGrid.Columns.Insert(4);
    DBGrid.Columns[4].FieldName:='ValorD';
    DBGrid.Columns[4].Title.caption:='Valor';
    DBGrid.Columns[4].Title.Alignment := taCenter;
    DBGrid.Columns[4].Title.Font.Style := [fsBold];
    DBGrid.Columns[4].Alignment := taRightJustify;
    DBGrid.Columns[4].Width:=70;
    DBGrid.Columns.Insert(5);
    DBGrid.Columns[5].FieldName:='Comprovante';
    DBGrid.Columns[5].Title.caption:='Nº Envelope';
    DBGrid.Columns[5].Title.Alignment := taCenter;
    DBGrid.Columns[5].Title.Font.Style := [fsBold];
    DBGrid.Columns[5].Alignment := taRightJustify;
    DBGrid.Columns[5].Width:=100;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var Abas : TTabSheet;
begin
  Inc(Contador);

  Abas := TTabSheet.Create(PageControl1);
  Abas.Caption := 'Aba '+IntToStr(Contador);
  Abas.Name := 'Aba'+IntToStr(Contador);

  AddDBGrid(PageControl1,Abas.Name);

end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...