Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno_Ferreira

Adicionar linhas em uma TStringGrid

Recommended Posts

Boa tarde galera,

 

Estou começando a trabalhar com Delphi agora e já tô com um probleminha:

 

Estou fazendo um aplicativo que insere dados em uma TStringGrid para simples visualização (por enquanto). acontece que não sei como adicionar os dados à tabela.

 

Pretendo fazer isso em um looping adicionando os dados um a um, a tabela tem duas colunas.

Aproveitando, se puderem posta um exemplo de código bem comentado seria ótimo pois nunca trabalhei com Delphi.

Se alguém puder me indicar algum site com a documentação dos métodos e atributos das classes do Delphi seria ótimo.

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há várias formas... você pode criar uma função para jogar os itens no grid como esta por exemplo:

 

procedure TForm1.AdicionaItemGrid(sValorColuna1, sValorColuna2 : String);
begin
   with StringGrid do
   begin
		 Row := RowCount-1;
		 RowCount := RowCount + 1;
		 Cells[0, Row] := sValorColuna1;
		 Cells[1, Row] := sValorColuna2;
   end;
end;

Ai no seu código só precisaria chamar a função jogando os valores das duas colunas para a mesma para o StringGrid ser preenchido.

 

Quanto a essa documentação que fala, não tem documentação melhor que o próprio help do delphi... tem tudo lá, só saber pesquisar.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu meu caro, mas agora o que tá pegando é que tá dando a seguinte mensagem:

 

Exception EClassNotFound in module Project1.exe at 0001329E Class TStringGrid not found.

 

Parece que ele não achou a classe TStringGrid, mas foi o próprio Delphi que colocou essa classe ao montar o formulario...

 

Olha o código:

unit ContaArquivosTelecobranca;

interface

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

type
  TForm1 = class(TForm)
  Executar: TButton;

  private
	{ Private declarations }
  public
	{ Public declarations }
	procedure ExecutarClick(Sender: TObject);
	procedure ListaArquivos();
  end;

var
  Form1: TForm1;
  arquivo: TextFile;
  procArquivo: TSearchRec;
	tabela: TStringGrid;

implementation

{$R *.dfm}

Procedure TForm1.ListaArquivos();
  var
	i: Integer;
	linha, nomeArq: String;
	cont: Integer;
 begin
	try
	  i := FindFirst('Z:\Telecobranca\*.txt', 0, procArquivo);
	  while i=0 do
	  begin
		//conta linhas do arquivo
		nomeArq:=String(procArquivo.Name);
		AssignFile(arquivo, nomeArq);
		Reset(arquivo);
		cont:=0;

		while Eof(arquivo) do
		begin
		  Readln(arquivo, linha);
		  cont := cont + 1;
		end;
	  end;

	  //escreve na tabela
	  with tabela do
	  begin
		 Row := RowCount-1;
		 RowCount := RowCount + 1;
		 Cells[0, Row] := nomeArq;
		 Cells[1, Row] := IntToStr(cont);
	  end;
	except
	end;

end;

procedure TForm1.ExecutarClick(Sender: TObject);
begin
  ListaArquivos();
end;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque tirou a declaração do stringgrid do type do form??? Na sua unit está assim:

 

type
  TForm1 = class(TForm)
  Executar: TButton;

  private
	{ Private declarations }
  public
	{ Public declarations }
	procedure ExecutarClick(Sender: TObject);
	procedure ListaArquivos();
  end;

var
  Form1: TForm1;
  arquivo: TextFile;
  procArquivo: TSearchRec;
	tabela: TStringGrid;

Quando deveria ser assim:

 

type
  TForm1 = class(TForm)
  tabela: TStringGrid;
  Executar: TButton;

  private
	{ Private declarations }
  public
	{ Public declarations }
	procedure ExecutarClick(Sender: TObject);
	procedure ListaArquivos();
  end;

var
  Form1: TForm1;
  arquivo: TextFile;
  procArquivo: TSearchRec;

Outra coisa... porque declara as variáveis arquivo e procArquivo como globais? A menos que use elas em outros forms, elas poderiam estar dentro do private do form.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

É... quando acho que tava tudo certo deu outro erro.

 

Dessa vez um EReadError, com a mensagem "Executar.OnClick: Invlid Property value"

 

a unica coisa que está no Executar.Onlick é "ExecutarClick" que é o nome do procedimento que ele chama, não vejo nada de errado nisso, tem algo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código completo para analise.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.