Fórum EditMask Consumindo Memória #364542

01/10/2008

0

Saudações!

No sistema, há uma tela que possui um dbgrid, onde estão sendo visualizadas 3 colunas:

- Sim (Campo: AT_TMP_SIM)
- Item (Campo: CF_ITEM_NOM)
- Descrição (Campo: AT_CLIN_TEX)

No campo CF_ITEM_NOM, há 3 itens que dizem respeito a data:
- Data de Solicitação
- Data de Cancelamento
- Data de Resolução

Quando o usuário seleciona um item, na coluna ao lado (Descrição), ele digita um texto, que pode ser um número, um texto comum ou uma data. A idéia é se o item for uma data (somente neste caso), conforme mencionado anteriomente, automaticamente a célula a descrição deverá ser mascarada, para facilitar a digitação. Agora, se não for data, a descrição não é mascarada.

Vale a pena ressaltar que há uma coluna (CF_OR_ITEM_TIP_DADO) que identifica o tipo da dado armazenado no campo da descrição.

Para isso, cheguei à seguinte solução:

[Evento ondrawcolumncell]

...
if gdFocused in State then
begin
if dmAtendimento.cdsAten_TempCF_OR_ITEM_TIP_DADO.Value = ´D´ then
dmAtendimento.cdsAten_TempAT_CLIN_TEX.EditMask := ´99/99/9999;1;_´
else
dmAtendimento.cdsAten_TempAT_CLIN_TEX.EditMask := ´´;
end;
...

[Evento ongettext do campo AT_CLIN_TEX]
Text := Sender.AsString;
if cdsAten_TempCF_OR_ITEM_TIP_DADO.AsString = ´D´ then
Text := FormatMaskText(´99/99/9999;1;_´, Sender.AsString);

Num determinado momento, percebi no gerenciador de tarefas do windows um consumo muito grande (chegando a 100¬) de memória, principalmente em computadores pentium III, por exemplo. Depois de um tempo, descobri que quando o foco está em uma célula da coluna da descrição, o consumo aumentava, se eu selecionasse uma outra coluna ou fechasse a tela e abrisse novamente, o consumo baixava. A partir do momento em que comentei o 1º código (do evento ondrawcolumncell), não houve um consumo exagerado de memória. Concluindo, por algum motivo a rotina está gerando o alto consumo (usando editmask). O sistema funciona, mas tem esse detalhe que é importantíssimo.

Eu tentei várias alternativas, mas não obtive êxito. Gostaria de saber qual a opinião de vcs sobre este problema e caso tenham uma outra solução (mais adequada), por favor postem, e ficarei muito agradecido.

Abraços,


Roger1976

Roger1976

Responder

Posts

01/10/2008

Roger1976

Ratificando, aumenta o processamento (gráfico CPU usage do gerenciador do windows, e não memória).


Responder

Gostei + 0

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

Aceitar