Fórum como chamar uma function de outro form que atualiza as strings inseridas nas cells de uma stringGrid ????????? socorro #587429
02/11/2017
0
tenho dois forms dispostos da seguinte maneira:
form 1 : esta a function e o stringGrid
obs : esta function tem uma type
seu cabsalho esta no publico :
e a função é essa
:
eu nao estou conseguindo chamar essa função para atualizar os valores dessa stringGrid de outro form
eu utilizo essa função com sucesso no mesmo form no evento onactivate
o erro ocorre justamente na manipulação da stringGrid
form 1 : esta a function e o stringGrid
obs : esta function tem uma type
type declarar_contas = record descricao : string; valor : string; dtv : string; ncolums : integer; qtd_parc : string end;
seu cabsalho esta no publico :
public
{ Public declarations }
function Excontas : declarar_contas;e a função é essa
:
function TfrmControleD.Excontas: declarar_contas;
var
i,b,a:integer;
begin
with DM.ADOQuery1 do
begin
//contar o numero de contas registrada no BD
Close;
SQL.Clear;
SQL.Add('select count(*) as NC from contas');
open;
Result.ncolums:=fieldbyname('NC').AsInteger;
sgTabelaC.RowCount:=Result.ncolums + 2; // o erro ocorre aqui e se eu comentar ele vai migrando para todas as linhas que contem a stringGrid
sgTabelaC.Cells[0,0]:='Conta';
sgTabelaC.Cells[1,0]:='Valor R$';
sgTabelaC.Cells[2,0]:='data de vencimento';
//select das contas: descricao, valor e dt_vencimeto
Close;
SQL.Clear;
SQL.Add('select c.descricao, c.valor, p.dt_vencimento, p.valor as VP from contas as c');
SQL.Add('inner join parcelas as p on p.conta = c.id_conta');
SQL.Add('where c.status = "D" and p.status = "D" and c.visivel ="1" and p.visivel ="1"');
SQL.Add('order by p.dt_vencimento, descricao');
open;
//incia gravação nas celulas do grid
First;
i:=1;
a:=0;
while not (DM.ADOQuery1.eof) do
begin
Result.descricao := fieldbyname('descricao').AsString;
Result.valor := fieldbyname('vp').AsString;
Result.dtv := fieldbyname('dt_vencimento').AsString;
b:=0;
while b <= Result.ncolums do
begin
Memo1.Lines.Add('R : ' + Result.descricao +
' ..... G: ' + sgTabelaC.Cells[0,b] + ' n°: '+ inttostr(b));
if Result.descricao = sgTabelaC.Cells[0,b] then
begin
a:=1;
end;
b:=b+1;
end; //do while
if a <> 1 then
begin
//tratando string do valor
if pos(',',Result.valor)= 0 then
begin
Result.valor:=Result.valor + ',00'
end;
if Length(Result.valor)= pos(',',Result.valor)+1 then
begin
Result.valor:=Result.valor + '0'
end;
//ShowMessage(Result.descricao + #13 + Result.valor + #13 + Result.dtv);
sgTabelaC.Cells[0,i]:=Result.descricao;
sgTabelaC.Cells[1,i]:=Result.valor;
sgTabelaC.Cells[2,i]:=Result.dtv;
i:=i+1;
end;
a:=0;
Next;
end;
end;
end;eu nao estou conseguindo chamar essa função para atualizar os valores dessa stringGrid de outro form
eu utilizo essa função com sucesso no mesmo form no evento onactivate
o erro ocorre justamente na manipulação da stringGrid
Henrique Dias
Curtir tópico
+ 0
Responder
Posts
25/01/2018
Jerson Boer
Olá Henrique,
Estava verificando o seu problema, copiei o seu código, fiz algumas adaptações para exibir os dados com outra estrutura e não encontrei problema em chamar esta função através de um outro formulário.
Você disse que a função está em um Form1, certo? Esse Form2, que irá chamar esta função do Form1 é criado a partir do Form1? ou seja, o Form1 existe no momento que chama a função?
Se quiser postar o código de como chamou esta função no Form2, talvez possa esclarecer melhor.
Estava verificando o seu problema, copiei o seu código, fiz algumas adaptações para exibir os dados com outra estrutura e não encontrei problema em chamar esta função através de um outro formulário.
Você disse que a função está em um Form1, certo? Esse Form2, que irá chamar esta função do Form1 é criado a partir do Form1? ou seja, o Form1 existe no momento que chama a função?
Se quiser postar o código de como chamou esta função no Form2, talvez possa esclarecer melhor.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)