Buffer do teclado é limpo no Memoedit()
Enviado: 08 Jun 2011 17:25
Prezados,
Estou passando pela seguinte situação:
No sistema que estou dando manutenção existe uma rotina para fazer a criação de formulários personalizados onde o usuário pode escrever textos e colocar os campos que deseja que sejam impressos, semelhante a Mala Direta do Word.
A escolha dos campos é feita ao pressionar uma tecla (F2) que apresenta uma lista de campos disponíveis e ao escolher o campo é preenchido no memoedit o código referente a este campo. Esta função sempre funcionou e começou a apresentar erro depois que passei a utilizar o xHarbour 1.0, testei com versões mais recentes mas com este sistema ele ocupa quase 50% do tempo do processado, isto estando parado sem processar nada.
O problema ocorre pois na função passada ao Memoedit, quando o usuário escolhe o campo, o seu código é armazenado em uma variável local e depois de um processamento é utilizado a função Keyboard para colocar o código do campo no MemoEdit no local onde o cursor esta. Depois de passar para o xHarbour 1.0 é apresentado apenas o primeiro caracter do código.
Pelo que pode analisar, colocando alertas, antes de chamar a função Keyboard(variavel), a variável que armazena o campo esta com o valor correto, na linha abaixo da chamada do Keyboard(variavel) a variável já não possui mais o valor. Observei que ao chamar o Keyboard a função definida no Memoedit é chamada novamente, o que causa a perda do conteúdo da variável, e o primeiro caracter é retornado pois ele fica armazenado na Lastkey().
Alguém já passou por algo parecido ou teria alguma ideia, que não seja migrar para o Harbour ou uma versão mais recente do xHarbour ?
Agradeço a atenção de todos!
Estou passando pela seguinte situação:
No sistema que estou dando manutenção existe uma rotina para fazer a criação de formulários personalizados onde o usuário pode escrever textos e colocar os campos que deseja que sejam impressos, semelhante a Mala Direta do Word.
A escolha dos campos é feita ao pressionar uma tecla (F2) que apresenta uma lista de campos disponíveis e ao escolher o campo é preenchido no memoedit o código referente a este campo. Esta função sempre funcionou e começou a apresentar erro depois que passei a utilizar o xHarbour 1.0, testei com versões mais recentes mas com este sistema ele ocupa quase 50% do tempo do processado, isto estando parado sem processar nada.
O problema ocorre pois na função passada ao Memoedit, quando o usuário escolhe o campo, o seu código é armazenado em uma variável local e depois de um processamento é utilizado a função Keyboard para colocar o código do campo no MemoEdit no local onde o cursor esta. Depois de passar para o xHarbour 1.0 é apresentado apenas o primeiro caracter do código.
Pelo que pode analisar, colocando alertas, antes de chamar a função Keyboard(variavel), a variável que armazena o campo esta com o valor correto, na linha abaixo da chamada do Keyboard(variavel) a variável já não possui mais o valor. Observei que ao chamar o Keyboard a função definida no Memoedit é chamada novamente, o que causa a perda do conteúdo da variável, e o primeiro caracter é retornado pois ele fica armazenado na Lastkey().
Alguém já passou por algo parecido ou teria alguma ideia, que não seja migrar para o Harbour ou uma versão mais recente do xHarbour ?
Agradeço a atenção de todos!