都道府県穴埋めゲーム

delphi6 StringGrid セルの位取り

セルの値(数字)を右寄せ、位取りさせて表示させたいのですが、きれいに並びません。

A:='00,123,456,789'
B:='00,000,123,456'  にすると、きれいに並びますが、

A:='___123,456,789'
B:='_________123,456' と、0を空白にすると並びがずれます。

右寄せにするプロパティはないでしょうか?

QNo.258234に似た質問がありましたが、もっと簡単にできないでしょうか?

A 回答 (2件)

DefaultDrawingをやめて自前で右寄せ表示するのが一番確実だとはおもいますが、


単純に桁合わせしたいなら、フォントを等倍フォントにかえればよいのではありませんか?
プロポーショナルフォントをつかうと、多かれ少なかれ位置情報は狂ってきます。

わたしのばあいは大概MS ゴシックをしてしておいて
位置の狂いを最低限にしていますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/15 00:34

残念ながら「右寄せプロパティ」は存在しないと思います。


自分の場合は以下のようにしています。
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で処理を行いましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/15 00:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!