Fórum DBGRID delphi xe10 #553015

03/05/2016

0

Saudações a todos;

Platoforma XE10 e Win7

Tenho uma rotina feito e delphi 7 e estou migrando para o xe10 e testando parte por parte me deparei com uma situação

Tenho um dbgrid que tem uma coluna que esta invisivel e sem informacao do campo esta la so para marcar lugar,

Dbg.Columns[8].FieldName := 'FORMA_EMISSAO';
Dbg.Columns[8].Visible := ((Pos(UpperCase(FGER_RETORNA_IP_NOME('N')),m_rginitialsys.Estacao_Nfe)>0) And m_rgempresa.UTILIZA_NFE);

Explicando :

A Funcao (FGER_RETORNA_IP_NOME retorna um string com o nome ou ip da estacao
Variavel tipo recpord m_rginitialsys.Estacao_Nfe(string) que guarda o nome das estacoes que podem emitir nf-e
m_rgempresa.UTILIZA_NFE variavel boolean que indica que a empresa trabalha com emissao de nf-e;

O que esta ocorrendo qdo carrego formulario que tem esta rotina executa 2 vezes e depois da erro.
o erro esta ligado a propriedade visible pois se coloco false ou true funciona legal

carrego o formulario desta forma
application.createform(tform,form)
form.showmodal;
form.release;
form:=nil;

Desde já agradeço a todos...
Geraldo Barroso

Geraldo Barroso

Responder

Posts

03/05/2016

Fabio Cardoso

Você pode colocar qual o erro??
o retorno ai do método que você criou ele é boolean ou uma string?
Porque se for string, pode acontecer do retorno vir com o padrão unicode
nesse caso dentro do método colocar no result

assim:

  function minhafuncao:string;
  begin
    result:=ansistring(valorAretornar); // aqui será feito uma conversão dos unicode para caracteres tabela ASCII.
  end;


mas uma resposta mais real só posso dar se ver o erro. poste o erro e exatamento em qual ponto ele acontece.
Verifique se por acaso o form ai na sua chamada ele nao esta como nil devido a algum erro na criação do form pela segunda chamada.

Poste mais detalhes sobre seu códico.
Responder

Gostei + 0

03/05/2016

Geraldo Barroso

Esqueci de colocar o erro

Pelo debug exception class $c00000fd 'stack overflow' '

[function LoadResString(ResStringRec: PResStringRec): string;
var
  Buffer: array [0..4095] of Char;
begin
  if ResStringRec = nil then Exit;
  if ResStringRec.Identifier < 64*1024 then
    SetString(Result, Buffer,
      LoadString(FindResourceHInstance(ResStringRec.Module^),
        ResStringRec.Identifier, Buffer, Length(Buffer)))
  else
    Result := PChar(ResStringRec.Identifier);
end;



Para nesta rotina ele retorna duas strings e comparo se uma contem a a outra.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar