Fórum Como alinhar a direita ao usar defaultdrawing=false #209805
27/01/2004
0
Caros amigos
Uso D7. Em todos meus dbgrids, como não gosto de usar a opção selectrow em true, uso o seguinte código para pintar os dbgrids.
if dmc.QordemservicoconsultaCodigo.Value = posordserv then
begin
if gdselected in state then
dbgrid1.canvas.brush.Color :=Rgb(celulaRed,CelulaGreen,CelulaBlue)
else
dbgrid1.canvas.brush.Color := Rgb(linhaRed,LinhaGreen,LinhaBlue);
dbgrid1.canvas.Font.Color:= clwhite;
dbgrid1.canvas.Font.Style:= [fsbold];
DBGrid1.Canvas.Textrect(rect,Rect.Left+3,Rect.top+2,column.field.displaytext);
end
else
DBGrid1.Canvas.Textrec(rect,Rect.Left+3,Rect.top+2,column.field.displaytext);
Para isto seto a propriedade defaultdrawing em false.
Percebo que com a seleção automática selectedrow=true e defaultdrawing em true, posso alinhar os valores a direita, mas com o esquema que uso, mesmo que eu sete a prop. alignment=taRightJustify os valores permanecem alinhados a esquerda.
Alguma solução?
T+
Um abraço
Delmar
Uso D7. Em todos meus dbgrids, como não gosto de usar a opção selectrow em true, uso o seguinte código para pintar os dbgrids.
if dmc.QordemservicoconsultaCodigo.Value = posordserv then
begin
if gdselected in state then
dbgrid1.canvas.brush.Color :=Rgb(celulaRed,CelulaGreen,CelulaBlue)
else
dbgrid1.canvas.brush.Color := Rgb(linhaRed,LinhaGreen,LinhaBlue);
dbgrid1.canvas.Font.Color:= clwhite;
dbgrid1.canvas.Font.Style:= [fsbold];
DBGrid1.Canvas.Textrect(rect,Rect.Left+3,Rect.top+2,column.field.displaytext);
end
else
DBGrid1.Canvas.Textrec(rect,Rect.Left+3,Rect.top+2,column.field.displaytext);
Para isto seto a propriedade defaultdrawing em false.
Percebo que com a seleção automática selectedrow=true e defaultdrawing em true, posso alinhar os valores a direita, mas com o esquema que uso, mesmo que eu sete a prop. alignment=taRightJustify os valores permanecem alinhados a esquerda.
Alguma solução?
T+
Um abraço
Delmar
Delmar
Curtir tópico
+ 0
Responder
Posts
27/01/2004
Beppe
Um jeito que é certo que funciona é calcular a largura da string com Canvas.TextWidth e avançar Rect.Left por (Rect.Right - Rect. Left + Canvas.TextWidth(S)).
Talvez essa dicas possa funcionar:
Ou essa
OBS: Não testei as útimas duas.
Talvez essa dicas possa funcionar:
Canvas.TextFlags := Canvas.TextFlags or DT_RIGHT;
Ou essa
Canvas.TextFlags := Canvas.TextFlags or ETO_RTLREADING;
OBS: Não testei as útimas duas.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)