Fórum Mascara no DBGrid mesmo sem foco #326862

04/08/2006

0

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?


Raserafim

Raserafim

Responder

Posts

06/08/2006

Micheus

Além da propriedade EditMask, vc está configurando DisplayFormat?


Responder

Gostei + 0

07/08/2006

Raserafim

Não, até pq no campo (que é string) não tem esta propriedade.


Responder

Gostei + 0

07/08/2006

Marco Salles

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´. ???


Responder

Gostei + 0

10/08/2006

Raserafim

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


Responder

Gostei + 0

10/08/2006

Marco Salles

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); 



Responder

Gostei + 0

11/08/2006

Raserafim

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.


Responder

Gostei + 0

12/08/2006

Raserafim

encontrei a solução.


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



Responder

Gostei + 0

12/08/2006

Marco Salles

[b:85b27eabbe]como é que é esta função função DrawText ?????[/b:85b27eabbe]


Responder

Gostei + 0

13/08/2006

Raserafim

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;



Responder

Gostei + 0

14/08/2006

Marco Salles

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]
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´...



Responder

Gostei + 0

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

Aceitar