Muito grata pela ajuda mas não consegui obter o resultado que era centralizar os valores. Simplesmente isto fez com que eles sumissem da grid. :(
Não há uma maneira mais fácil???? --- Em delphi-br@yahoogrupos.com.br, "Romario (Listas)" <[EMAIL PROTECTED]> escreveu > Se você estiver utilizando os componentes VCL: > > { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> } > > Procedure WriteText(ACanvas: TCanvas; Const ARect: TRect; ACol, ARow: > Integer; Const Text: String; Format: Word); > var > S: Array[0..255] of Char; > B, R: TRect; > Begin > > With ACanvas, ARect do > Begin > > Case Format of > > DT_LEFT: ExtTextOut(Handle, Left + ACol, Top + ARow, ETO_OPAQUE or > ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), Nil); > > DT_RIGHT: ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + > ARow, ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), > Length(Text), nil); > > DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth (Text)) > div 2, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect, > StrPCopy(S, Text), Length(Text), Nil); > > End; > > End; > > End; > > { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> } > > Procedure TStringGrid1.DrawCell(ACol, ARow: Longint; Rect: TRect; State: > TGridDrawState); > Var > > Procedure Display(Const S: String; Alignment: TAlignment); > Const > Formats: Array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER); > Begin > > WriteText(Canvas, Rect, 2, 2, S, Formats[Alignment]); > > End; > > Begin > > Case Row of > > 0 : { Center column headings } > > If (Col < ColCount) then > > Display(Cells[ACol, ARow], taCenter) > > Else > > Display(Cells[ACol, ARow], taRight); > > End; > > End; > > { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> } > > Senão, se estiver utilizando os componentes CLX: > > +------------+----------+------------------------------------------- ---+ > | Flag | Type | Meaning | > +------------+----------+------------------------------------------- ---+ > |AlignLeft |Horizontal|Align text to the left edge of the rectangle. | > +------------+----------+------------------------------------------- ---+ > |AlignRight |Horizontal|Align text to the right edge of the rectangle.| > +------------+----------+------------------------------------------- ---+ > |AlignHCenter|Horizontal|Center text horizontally in the rectangle. | > +------------+----------+------------------------------------------- ---+ > |AlignTop |Vertical |Align text to the top edge of the rectangle. | > +------------+----------+------------------------------------------- ---+ > |AlignBottom |Vertical |Align text to the bottom edge of the ectangle.| > +------------+----------+------------------------------------------- ---+ > |AlignVCenter|Vertical |Center text vertically in the rectangle. | > +------------+----------+------------------------------------------- ---+ > | You can also use the AlignCenter flag to indicate AlignHCenter + | > | AlignVCenter. | > +------------------------------------------------------------------- ---+ > > > Veja um exemplo (CLX) em que adicionei alguns comentários para um melhor > entendimento: > > { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> } > > Procedure Tfrm_anamne.grd_atvfisDrawCell(Sender: TObject; ACol, ARow: > Integer; > Rect: TRect; State: > TGridDrawState); > Begin > > // Se forem colunas da linha zero ou linhas da coluna zero e dois... > If ( ARow = 0 ) or ( ACol in [0, 2] ) then > Begin > > // Se forem colunas da linha zero... > If ( ARow = 0 ) then > > // Altera a cor do texto para preto. > grd_atvfis.Canvas.Font.Color := clBlack; > > // Limpa as células. > grd_atvfis.Canvas.FillRect( Rect ); > > // Redesenha e centraliza o texto nas células (note o nº 4 ao final). > grd_atvfis.Canvas.TextRect( Rect, Rect.Left + 2, Rect.Top + 2, > grd_atvfis.Cells[ACol, ARow], 4 ); > > End > > // Senão... (o texto continuará em Azul) > Else > Begin > > // Limpa as células. > grd_atvfis.Canvas.FillRect( Rect ); > > // Exibe e alinha à esquerda o texto das células (o nº ao final é > omitido). > grd_atvfis.Canvas.TextRect( Rect, Rect.Left + 2, Rect.Top + 2, > grd_atvfis.Cells[ACol, ARow] ); > > End; > > End; > > { <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> } > > Espero que isso ajude! > > Sds, > > Romario > > > > Shally escreveu: > > Sim, preciso da String Grid pois trabalho com dados que vem de um BD, > > cálculos são realizados, etc e tal para depois os dados serem > > mostrados nesta Grid. > > Sabe como posso centralizar esses valores? > > > > > ____________________________________________________ > Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! http://mail.yahoo.com.br -- <<<<< 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