• ベストアンサー

delphi6 StringGrid セルの位取り

delphi6 StringGrid セルの位取り セルの値(数字)を右寄せ、位取りさせて表示させたいのですが、きれいに並びません。 A:='00,123,456,789' B:='00,000,123,456'  にすると、きれいに並びますが、 A:='___123,456,789' B:='_________123,456' と、0を空白にすると並びがずれます。 右寄せにするプロパティはないでしょうか? QNo.258234に似た質問がありましたが、もっと簡単にできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • techa
  • ベストアンサー率60% (41/68)
回答No.1

DefaultDrawingをやめて自前で右寄せ表示するのが一番確実だとはおもいますが、 単純に桁合わせしたいなら、フォントを等倍フォントにかえればよいのではありませんか? プロポーショナルフォントをつかうと、多かれ少なかれ位置情報は狂ってきます。 わたしのばあいは大概MS ゴシックをしてしておいて 位置の狂いを最低限にしていますよ。

situmonnsya
質問者

お礼

MS P ゴシックのPはプロポーショナルの略だったのですね。 うまく、簡単にできました。 ありがとうございます。

その他の回答 (1)

回答No.2

残念ながら「右寄せプロパティ」は存在しないと思います。 自分の場合は以下のようにしています。 ButtonとStringGridを設置し、 procedure TForm1.Button1Click(Sender: TObject); begin StringGrid1.Cells[1,1]:= '123,456,789'; StringGrid1.Cells[2,1]:= '123,456'; end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin StringGrid1.Canvas.FillRect(Rect); DrawText(StringGrid1.Canvas.Handle, PChar(StringGrid1.Cells[ACol,ARow]), Length(StringGrid1.Cells[ACol,ARow]), Rect, DT_RIGHT); end; Buttonをクリックしてみて確かめてください。 ※「この列」「この行」など、特定行列レベルで行うならAColやARowで処理を行いましょう。

situmonnsya
質問者

お礼

あまり勉強もせず、DT_RIGHTがあるなんて知りませんでした。 これだと特定行列を指定できるのでありがたいです。 ありがとうございます。

関連するQ&A