Boa noite, pessoal.
Me esclareçam, o Dr. Soto diz que então basta setar o fonte para o idioma e pode-se rodar em ANSI normalmente?
Em sendo assim, acho que tenho chance de fazer algo.
Bom, eu fiz isso e realmente rodou com os forms e relatórios em português. Aparentemente, ok.
Aquele tal congelamento que reportei de dia, eu estou tentando correr atrás e avancei mais. Tinham uns SET FILTER meio perdidos de uma antiga filtragem que fazia, mas como não é técnica bem recomendada, deixei pra lá. Na verdade eles eram para desativar qualquer SET FILTER TO <algo> que pudesse me atrapalhar.
Descobri que o problema é uma extrema lentidão em duas funções que fazem coisas parecidas: manipular o formulário.
Vou colocar o código e a primeira função:
Código: Selecionar todos
////
FUNCTION Abre_Certidao()
PRIVATE bColor := { || IF( OrdKeyNo()/2 == INT(OrdKeyNo()/2), { 234,244,255 },{ 255,255,255 } ) }, ;
bColorG := { || {255,255,128} }, ;
fColorG := { || {0,0,0} }, ;
fColor := {}, ;
vProtestos := {}, ;
bN := "", ;
PartiuTal := .F., ;
Achou_Talao := .F., ;
Mdata := DATE(), ;
FilTal := "" //"(CODFUNCAO='02' .OR. CODFUNCAO='04') .AND. EMPTY(SSELLO)"
// Caminho da pasta do sistema de protestos //
DBUSEAREA( .T.,"DBFCDX","SETCER",, .T. )
IF ! EMPTY(SETCER->PASTA_PROT)
xPath := ALLTRIM(SETCER->PASTA_PROT)
SET PATH TO (xPath)
//MSGINFO('Mapeado para o sistema de protesto em: '+xpath)
ELSE
MSGINFO("PASTA DO SISTEMA DE PROTESTOS NÃO CONFIGURADA.")
ENDIF
DBUSEAREA( .T.,"DBFCDX","SETCART",, .T. )
DBUSEAREA( .T.,"DBFCDX","TCUSTAS",, .T. )
SET INDEX TO TCUSTAS
DBUSEAREA( .T.,"DBFCDX","FCUSTAS",, .T. )
DBUSEAREA( .T.,"DBFCDX","DEMCUST",, .T. )
SET INDEX TO DEMCUST
DBUSEAREA( .T.,"DBFCDX","TFUNCAO",, .T. )
SET INDEX TO TFUNCAO
IF ! FILE("RECIBOS.DBF")
MSGINFO("RECIBOS.DBF NÃO LOCALIZADO")
//else
// msginfo('Localizou Recibos.dbf')
ENDIF
DBUSEAREA( .T.,"DBFCDX","RECIBOS",, .T. )
SET INDEX TO RECIBOS
IF ! FILE("PEDIDOS.DBF")
MSGINFO("PEDIDOS.DBF NÃO LOCALIZADO")
//else
// msginfo('Localizou Pedidos.dbf')
ENDIF
DBUSEAREA( .T.,"DBFCDX","PEDIDOS",, .T. )
SET INDEX TO PEDIDOS
DBUSEAREA( .T.,"DBFCDX","TBTIPTIT",, .T. )
SET INDEX TO TBTIPTIT
DBUSEAREA( .T.,"DBFCDX","BANCOS",, .T. )
SET INDEX TO BANCOS
DBSETORDER(2)
DBUSEAREA( .T.,"DBFCDX","TITULAR",, .T. )
SET INDEX TO TITULAR
DBUSEAREA( .T.,"DBFCDX","COEMIT",, .T. )
SET INDEX TO COEMIT
DBUSEAREA( .T.,"DBFCDX","LOG_SELO",, .T. )
SET INDEX TO LOG_SELO
//DBUSEAREA( .T.,"DBFCDX","LOG_FORM",, .T. )
//SET INDEX TO LOG_FORM
DBUSEAREA( .T.,"DBFCDX","TITULOS",, .T. )
SET INDEX TO TITULOS
DBSETORDER(14)
DBGOTOP()
Load Window Frm_Certidao
Frm_Certidao.center
MSGINFO('Carregou Form, vai setar titular.')
DBSELECTAR("TITULAR")
DBSETORDER(1)
DBSEEK(USUARIOS->NOMME)
Frm_Certidao.Combo_2.Value := RECNO()
MSGINFO('Setou titular, vai pro filtro.')
Filtra_Talao()
MSGINFO('Rodou Filtro, vai pra inicialização da tela.')
Inicia_Tela_Certidao() // <==== Aqui nessa função demora muito, três a cinco minutos!
MSGINFO('Inicilizou tela, vai abrir o formulário.')
Frm_Certidao.activate
RETURN NIL
////
FUNCTION Inicia_Tela_Certidao()
Achou_Talao := .F.
Frm_Certidao.Text_1.Enabled := .T.
Frm_Certidao.Text_1.Value := ""
Frm_Certidao.Text_2.Enabled := .F.
Frm_Certidao.Text_2.Value := ""
Frm_Certidao.Txt_Talao.Enabled := .T.
Frm_Certidao.Txt_Talao.Value := 0
Frm_Certidao.Txt_Result.Value := 0
Frm_Certidao.Txt_Result.Enabled := .T.
Frm_Certidao.Txt_Result.BackColor := {255,255,255}
Frm_Certidao.Txt_Certidao.Value := 0
Frm_Certidao.Txt_Selo.Value := ""
Frm_Certidao.Txt_Ale.Value := ""
Frm_Certidao.Txt_CCT.Value := ""
Frm_Certidao.Txt_Selo.Enabled := .F.
Frm_Certidao.Txt_Ale.Enabled := .F.
Frm_Certidao.Txt_CCT.Enabled := .F.
Frm_Certidao.RadioGroup_1.Enabled := .F.
Frm_Certidao.DatePicker_1.Enabled := .F.
Frm_Certidao.DatePicker_2.Enabled := .F.
Frm_Certidao.Dtp_Emis.Enabled := .F.
Frm_Certidao.Check_Impr.Value := .F.
Frm_Certidao.Check_Cab.Value := .f. //IIF(SETCART->CABCERT == "S", .T., .F.)
Frm_Certidao.Combo_1.Enabled := .T.
Frm_Certidao.Combo_1.Value := 1
Frm_Certidao.Combo_2.Enabled := .F.
Frm_Certidao.Btn_Busca.Enabled := .F.
Frm_Certidao.Btn_Imprime.Enabled := .F.
Frm_Certidao.Btn_Positiva.Enabled := .F.
Frm_Certidao.Btn_Positiva.Visible := .T.
Frm_Certidao.Btn_Negativa.Enabled := .F.
Frm_Certidao.Btn_Negativa.Visible := .T.
Frm_Certidao.Grid_1.Enabled := .F.
Frm_Certidao.Grid_1.DeleteAllItems
Frm_Certidao.Frame_3.Caption := "Resultado da Certidão"
PartiuTal := .F.
Frm_Certidao.Txt_Talao.SetFocus
DBSELECTAR("TITULOS")
DBSETORDER(14)
//SET FILTER TO
DBGOTOP()
RETURN NIL
////
Observo que na versão compilada com o 3.0.46 está até demorando uns segundos, mas nada que te faça ir na cozinha passar um café. A outra faz uma leitura em uma tabela e isso vai normal, enche um grid, mas na hora de setar a tela de novo, demora muito.
Código: Selecionar todos
Frm_Certidao.RadioGroup_1.Enabled := .F.
Frm_Certidao.DatePicker_1.Enabled := .F.
Frm_Certidao.DatePicker_2.Enabled := .F.
Frm_Certidao.Btn_Busca.Enabled := .F.
Frm_Certidao.Txt_Result.Value := Frm_Certidao.Grid_1.ItemCount
Frm_Certidao.Txt_Result.BackColor := IIF(Frm_Certidao.Grid_1.ItemCount = 0, {0,128,255}, {255,0,0} )
Frm_Certidao.Grid_1.Enabled := .T.
Frm_Certidao.Btn_Negativa.Enabled := IIF(Frm_Certidao.Grid_1.ItemCount = 0, .T., .F.)
Frm_Certidao.Btn_Positiva.Enabled := IIF(Frm_Certidao.Grid_1.ItemCount = 0, .F., .T.)
Frm_Certidao.Txt_Certidao.Value := -1
Então, amigos: O que pode ser isso? Considero estranho, uma vez que o desempenho dessa versão deve ser superior a da mais antiga, eu suponho. Talvez algum vício de programação, sei lá...
Se vocês tiverem algo pra me ajudar, como sempre agradeço. Vão salvar um colega de um 2017 cinzento.
Saudações e boa noite. Ainda vou fazer mais testes até a vista queimar ou a coluna gritar.
Abraço,
Mario.