掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
XE2のStringGridで二重に表示されるのは? (ID:41346)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
7や2007からXE2へアプリを移植しています。 その中で、StringGridの表示がおかしくなってしまいます。 具体的には、各セルの表示をセルの中心にしている場合、 Fixセルと(1,1)のセルが左端(標準の表示)とセルの中心の表示の 二重表示になります。他のセルは問題なく中心の表示になっています。 確認のため、新しいフォームにButtonとStringGridを一つ置き、 下記のコードで実験しても同様です。 procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin //適当なデータの表示 for i := 0 to 4 do begin StringGrid1.Cells[i,0] := IntToStr(i); StringGrid1.Cells[i,1] := IntToStr(i*i); StringGrid1.Cells[i,2] := IntToStr(i*i*2); StringGrid1.Cells[i,3] := IntToStr(i*i*3); end; end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var X,Y,SH,SW :Integer; begin StringGrid1.Canvas.FillRect(Rect); SW := StringGrid1.Canvas.TextWidth( StringGrid1.Cells[ACol,ARow]) div 2; SH := StringGrid1.Canvas.TextHeight(StringGrid1.Cells[ACol,ARow]) div 2; X := Rect.Left + (Rect.Right - Rect.Left) div 2 - SW ; Y := Rect.Top + (Rect.Bottom - Rect.Top) div 2 - SH ; StringGrid1.Canvas.TextOut(X,Y,StringGrid1.Cells[ACol,ARow]); end; StringGridをクラシック表示にすると問題なく表示できますが・・・・・ 対処方法は何かないでしょうか? よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.