Tenta fazer isso: procedure DesenhaGrid(Canvas:TCanvas;color:TColor;Rect:TRect; alignement:string;value:String); var proporcao:integer; begin proporcao:=0; Canvas.Brush.Color:=color; Canvas.FillRect(Rect); Canvas.Font.Color:=clBlack; if alignement = 'left' then proporcao:=Rect.Left+2 else if alignement = 'center' then proporcao:=StrToInt(FloatToStr( Int( (Rect.Right-Rect.Left- Canvas.TextWidth( value))/2) ))+Rect.left-2 else if alignement = 'right' then proporcao:=StrToInt(FloatToStr( Int( (Rect.Right-Rect.Left- Canvas.TextWidth( value))) ))+Rect.left-2; Canvas.TextRect(rect,proporcao,rect.Top+2,value); end;
no método onDrawCell vc faz a chamada da procedure. Shally <[EMAIL PROTECTED]> escreveu: Não estou conseguindo usar esta procedure de jeito nenhum. Dá td quanto é erro no delphi ao compilar. Que faço? Não tem algo mais facil? --- Em delphi-br@yahoogrupos.com.br, "Alisson Yahoo" escreveu > Use a procedure abaixo > > procedure AlinhaGrid(Grid : TStringGrid; ACol, ARow : Longint; Rect : TRect; State : TGridDrawState; Align : array of Integer); > var S : array[0..255] of Char; > begin > //0-Esquerda 1-Centro 2-Direita} > if (ARow = 0) or (ACol > Length(Align)-1) and (Align[ACol] = 0) then > Exit > else if (Align[ACol] = DT_LEFT) then > ExtTextOut(Grid.Canvas.Handle, Rect.Left + ACol, Rect.Top+2, ETO_OPAQUE or > ETO_CLIPPED, @Rect, StrPCopy(S, Grid.Cells[ACol,ARow]), Length(Grid.Cells[ACol,ARow]), nil) > else if (Align[ACol] = DT_RIGHT) then > ExtTextOut(Grid.Canvas.Handle, Rect.Right - Grid.Canvas.TextWidth(Grid.Cells[ACol,ARow]) - 3, Rect.Top+2, > ETO_OPAQUE or ETO_CLIPPED, @Rect, StrPCopy(S, Grid.Cells [ACol,ARow]), > Length(Grid.Cells[ACol,ARow]), nil) > else if (Align[ACol] = DT_CENTER) then > ExtTextOut(Grid.Canvas.Handle, Rect.Left + (Rect.Right - Rect.Left - Grid.Canvas.TextWidth(Grid.Cells[ACol,ARow])) > div 2, Rect.Top+2, ETO_OPAQUE or ETO_CLIPPED, @Rect, > StrPCopy(S, Grid.Cells[ACol,ARow]), Length(Grid.Cells [ACol,ARow]), Nil); > end; > > > Faça a chamada no evento OnDrawCell : > AlinhaGrid(NomeStringGrid, ACol, ARow, Rect, State, [0,0,2, 1, 2,....]) > > [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos --------------------------------- Yahoo! Mail: agora com 1GB de espaço grátis. Abra sua conta! [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html