Pesquise no PCFórum - Digite sua dúvida aqui
Bem-vindo, Visitante. Por favor efetue Login ou Registre-se
PCFORUM.com.br

    
Notícias:
  Home Fórum Notícias Anuncie AjudaLoginCadastre-se  
 

Problema em imprimir em forma de planilha (Lido 2386 vezes)   
Antonio Simões


Offline

Indique o PCFORUM
para seus amigos!

Postagens: 5

Problema em imprimir em forma de planilha
04.06.2013 às 17:34:47
 
Olá pessoal, estou fazendo um exercício em Object Pascal utilizando o Delphi 7 e eu preciso fazer que ele imprima uma lista de pessoas que contem Nome, Idade e Sexo, um embaixo do outro. Mas que na primeira linhas tenha escrito Nome | Idade | Sexo, e em baixo de cada uma seu respectivo valor.

Aqui está minha classe interface:
Código:
unit uInter;

interface
  uses uPess, uColecaoPessoas;
  type interfaces = class

  public
    constructor CrieObj;
    destructor destrua_se;
    procedure pescadadosPessoa(pPessoa : pessoa);
    procedure pecaNomePessoa(var pNome : string);
    procedure mostraDadosPessoa( pPessoa : pessoa);
    procedure mostramsg(msg : string);
    function Menu : integer;
    procedure listagem (umaColecaoP : ColecaoP);
end;

implementation
  constructor interfaces.CrieObj;
    begin
    end;

  destructor interfaces.destrua_se;
    begin
    end;

  procedure interfaces.pescadadosPessoa(pPessoa : pessoa);
  var pIdade : integer;
	pSexo : char;
    begin
	write('Idade: ');
	readln(pIdade);
	write('Sexo: ');
	readln(pSexo);
	pPessoa.Setidade(pIdade);
	pPessoa.Setsexo(pSexo);
    end;

  procedure interfaces.pecaNomePessoa(var pNome : string);
    begin
	write('Nome: ');
	readln;
	readln(pNome);
    end;

  procedure interfaces.mostraDadosPessoa(pPessoa : pessoa);
  var k : integer;
    begin
	writeln('-----------------------');
	write('Nome: ', pPessoa.Getnome);
	write(' Idade: ', pPessoa.Getidade);
	write(' Sexo: ', pPessoa.Getsexo);
	read(k);
    end;

  procedure interfaces.mostramsg(msg : string);
    begin
	writeln(msg);
	readln;
    end;

  function interfaces.Menu : integer;
  var op : integer;
    begin
	repeat

	  writeln('-----------------------------');
	  writeln('1. Cadastro');
	  writeln('2. Editar');
	  writeln('3. Excluir');
	  writeln('4. Listar');
	  writeln('0. Sair');
	  write('Opcao ( ');
	  read(op);
	  write(' )');
	  if op > 4 then
	    writeln('Opcao Invalida!');
	until (op >=0) and (op <=4);
	result := op;
    end;

Seu que devo fazer uma procedure se listagem na minha interface, mas estou bem perdido

procedure interfaces.listagem(umaColecaoP : ColecaoP);
  var i : integer;
	umaPessoa : pessoa;
  begin

  end;
end.

Aqui está minha classe aplicacão:

 [code]unit uAplicacao;

interface
  uses uInter, uColecaoPessoas, uPess;
  type Aplicacao = class

  private
    umaInter : interfaces;
    umaColecaoP : ColecaoP;
    umaPessoa : pessoa;
  protected

  public
    constructor CrieObj;
    destructor Destrua_se;
    procedure Executas_se;
    procedure Inclusao;
    procedure Alteracao;
    procedure Exclusao;
    procedure Relatorio;
end;

implementation

  constructor Aplicacao.CrieObj;
    begin
	umainter := interfaces.CrieObj;
	umaColecaoP := ColecaoP.CrieObjeto;
    end;

  destructor Aplicacao.Destrua_se;
    begin
	umainter.destrua_se;
	umaColecaoP.destrua_se;
    end;

  procedure Aplicacao.Executas_se;
  var op : integer;

    begin
	repeat
	  op := umaInter.Menu;
	  case op of
	  1 : begin
		  Inclusao;
		end;
	  2 : begin
		  Alteracao;
		end;
	  3 : begin
		  Exclusao;
		end;
	  4 : begin
		  Relatorio;
		end;
	  end;
	until op = 0;
    end;

   procedure Aplicacao.Inclusao;
   var vNome : string;
	 pos   : integer;
    begin
	if umaColecaoP.cheia then
	  umaInter.mostramsg('Lista Cheia! ')
	else
	  begin
	    umaInter.pecaNomePessoa(vNome);
	    if umaColecaoP.vazia then
		pos := 1
	    else
		pos := umaColecaoP.pesquisa(vNome, false);
	    if pos = 0 then
		umaInter.mostramsg('Nome ja esta na lista')
	    else
		begin
		  umaPessoa := pessoa.crieInstacia;
		  umaPessoa.Setnome(Vnome);
		  umaInter.pescadadosPessoa(umaPessoa);
		  umaColecaoP.insere(umaPessoa, pos);
		end
	  end;

    end;

  procedure Aplicacao.Alteracao;
  var pos, NovaIdade : integer;
	vNome : string;
	NovoSexo : char;
	NovaPessoa : pessoa;
    begin
	if umaColecaoP.vazia then
	  umaInter.mostramsg('Lista Vazia')
	else
	  begin
	    umaInter.pecaNomePessoa(vNome);
	    pos := umaColecaoP.pesquisa(vNome, true);
	    if pos = 0 then
		umaInter.mostramsg('Nome nao esta na lista')
	    else
		begin
		  NovaPessoa := pessoa(umaColecaoP.getObj(pos));
		  umaInter.pescadadosPessoa(NovaPessoa);
		  NovaPessoa.Setidade(NovaIdade);
		  NovaPessoa.Setsexo(NovoSexo);
		  umaInter.mostramsg('Pessoa Alterada');
		  umaColecaoP.setObj(NovaPessoa, pos);
		end;
	  end;
    end;

  procedure Aplicacao.Exclusao;
  var vNome : string;
	pos   : integer;
	NovaPessoa : pessoa;
    begin
	if umaColecaoP.vazia then
	  umaInter.mostramsg('Lista Vazia!')
	else
	  begin
	    umaInter.pecaNomePessoa(vNome);
	    pos := umaColecaoP.pesquisa(vNome, true);
	    if pos = 0 then
		umaInter.mostramsg('Nome nao esta na lista')
	    else
		begin
		 NovaPessoa := pessoa(umaColecaoP.getObj(pos));
		 umaColecaoP.remove(NovaPessoa, pos);
		end;
	  end;
    end;


Sei que nessa minha procedure Relatorio, ele vai chamar a interface.listagem.

procedure aplicacao.Relatorio;
  var i : integer;
    begin
    
    end;

end.  




Estou bem perdido neste ponto. Obrigado a todos.
Caso Precisem das outras classes, eu posso postar sem problemas.  :)
Voltar ao topo
 
 
Visualizar Perfil   IP registrado
PCRobô
Divulgador

Online

PCFórum, o mais completo fórum de informática do Brasil!

Postagens: 99999999
Brasil
Gênero: male
Anúncios

Voltar ao topo
Email Visualizar Perfil IP registrado
Antonio Simões


Offline

Indique o PCFORUM
para seus amigos!

Postagens: 5

Re: Problema em imprimir em forma de planilha
Resposta #1 - 06.06.2013 às 09:48:38
 
Pessoal consegui resolver o problema, na minha classe "interfaces" aquela procedure relatório não era necessária, exclui ela, e ainda na classe "interfaces" alterei minha procedure "mostraDadosPessoa( pPessoa : pessoa);" e ela ficou assim:

Código:
 procedure interfaces.mostraDadosPessoa(pPessoa : pessoa);
   begin
      writeln('-----------------------');
      writeln('Nome: ', pPessoa.Getnome);
      writeln('Idade: ', pPessoa.Getidade);
      writeln('Sexo: ', pPessoa.Getsexo);
      writeln('-----------------------');
      readln;
    end; 



Já na minha classe Aplicacao fiz a seguinte alteração na minha procedure "Relatorio":

Código:
  procedure aplicacao.Relatorio;
  var i, qtd : integer;
      umaPessoa : pessoa;
    begin
      qtd := umaColecaoP.getQtd;
      for i:= 1 to qtd do
        begin
          umaPessoa := pessoa(umaColecaoP.getObj(i));
          umaInter.mostraDadosPessoa(umaPessoa);
        end;
    end;
 



Dessa maneira imprimiu como eu queria, falta ainda melhorar algumas coisas básicas mas o problema central resolvi.
Caso alguém queria o código completo para estudar, basta pedir.
Obrigado a todos.
Legal
Voltar ao topo
 
 
Visualizar Perfil   IP registrado



Visite nossa página inicial e veja mais dicas e conteúdos! Clique aqui!!