Mascara no DBGrid mesmo sem foco
sempre q o DBGrid perde o foco a máscara desaparece, e os dados só voltam a ficar formatados conforme a máscara quando recebe novamente o foco.
como deixar o DBGrid sempre com a máscara?
como deixar o DBGrid sempre com a máscara?
Raserafim
Curtidas 0
Respostas
Micheus
04/08/2006
Além da propriedade EditMask, vc está configurando DisplayFormat?
GOSTEI 0
Raserafim
04/08/2006
Não, até pq no campo (que é string) não tem esta propriedade.
GOSTEI 0
Marco Salles
04/08/2006
Não, até pq no campo (que é string) não tem esta propriedade.
Não tem a propriedade DisplayFormat , mas tem, a propriedade EditMask
Se voce não usa o editMask . como voce faz para mascarar o ´campo´. ???
GOSTEI 0
Raserafim
04/08/2006
eu defino a propriedade EditMask.
mas acho que já achei o pq do problema.
já que eu pinto o canvas da linha da grid, então tenho que recolocar o texto tb, acho que é neste momento que fica sem a máscara.
vou tentar ver se tem jeito
mas acho que já achei o pq do problema.
já que eu pinto o canvas da linha da grid, então tenho que recolocar o texto tb, acho que é neste momento que fica sem a máscara.
vou tentar ver se tem jeito
GOSTEI 0
Marco Salles
04/08/2006
mas acho que já achei o pq do problema.
já que eu pinto o canvas da linha da grid, então tenho que recolocar o texto tb, acho que é neste momento que fica sem a máscara.
tem grandes possibilidades de ser este o ´problema´...
mas a saida para isto pode ser talvez mais simples ....
para pintar voce usa qual das duas instruçoes abaixo ?????
DBGReltPesquisa.Canvas.FillRect(Rect); DBGReltPesquisa.Canvas.TextOut(Rect.Left+2,Rect.Top+2,Column.Field.DisplayText); ou Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
GOSTEI 0
Raserafim
04/08/2006
no evento OnDrawColumnCell
utilizo o DrawText para escrever o texto
eu não conhecia este TextOut, mas sim o TextRect, na qual utilizava em conjunto com o FillRect.
utilizo o DrawText para escrever o texto
eu não conhecia este TextOut, mas sim o TextRect, na qual utilizava em conjunto com o FillRect.
GOSTEI 0
Raserafim
04/08/2006
encontrei a solução.
ao capturar o valor do campo para colocar na função DrawText, ao invés de eu pegar o valor:
utilizo este código e passa a pegar exatamente o valor que está sendo exibido:
ao capturar o valor do campo para colocar na função DrawText, ao invés de eu pegar o valor:
Column.Field.AsString
utilizo este código e passa a pegar exatamente o valor que está sendo exibido:
Column.Field.DisplayText
GOSTEI 0
Marco Salles
04/08/2006
[b:85b27eabbe]como é que é esta função função DrawText ?????[/b:85b27eabbe]
GOSTEI 0
Raserafim
04/08/2006
no evento OnDrawColumnCell faço o seguinte:
... var S: string; R: TRect; begin S := Column.Field.DisplayText; R := Rect; R.Top := R.Top + 2; R.Left := R.Left + 2; TDBGrid(Sender).Canvas.FillRect(Rect); DrawText(TDBGrid(Sender).Canvas.Handle, PChar(S), Length(S), R, DT_LEFT) end;
GOSTEI 0
Marco Salles
04/08/2006
me recordei ... Draw Text é uma Api do Windows para Pintar o Texto no
Handle Especificado.. Mas esta chamada é so em casos especificos , o que voce faz especificamente nesse evento Para ter a necessidade de fazer esta ´chamada´....
Sei que isto esta fora do contesto de sua dúvida inicial , que por sinal , ja ate foi resolvida , mas aqui se relembra conceitos e métodos..
[b:69736b27e9]citação de raserafim[/b:69736b27e9]
[b:69736b27e9]citação de marco salles[/b:69736b27e9]
Handle Especificado.. Mas esta chamada é so em casos especificos , o que voce faz especificamente nesse evento Para ter a necessidade de fazer esta ´chamada´....
Sei que isto esta fora do contesto de sua dúvida inicial , que por sinal , ja ate foi resolvida , mas aqui se relembra conceitos e métodos..
[b:69736b27e9]citação de raserafim[/b:69736b27e9]
mas acho que já achei o pq do problema.
[b:69736b27e9]citação de marco salles[/b:69736b27e9]
tem grandes possibilidades de ser este o ´problema´...
GOSTEI 0