StringGridで複数行表示

解決


かず  2010-11-26 02:37:35  No: 39607

Delphi2007から2010へ移行中です。
下記のように2007で正常に表示していたStringGridで複数行表示が
2010でうまく表示できません。
2行表示するのですが、2行目が1行目にも表示されてしまいます。

AAABBB
BBB
と表示される

StringGrid1.Cells[0,VarRow] := 'AAA' + #13 + 'BBB';

procedure TYoteiIchiranForm.StringGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  S : String;
  Options : Integer;
begin
  StringGrid1.Canvas.FillRect(Rect);
  S := StringGrid1.Cells[ACol, ARow];
  Rect.Left := Rect.Left + 2;
  Rect.Top  := Rect.Top  + 2;
  Options := DT_EDITCONTROL;
  DrawTextEx(StringGrid1.Canvas.Handle, PChar(S), Length(S), Rect, Options, nil);
end;


igy  2010-11-26 06:00:10  No: 39608

確認したところ、Delphi XEでもスクロールしない固定列・行で
その現象はなりました。
とりあえず、DrawingStyleプロパティを gdsClassic にして、
テーマやグラデーション表示しなければ、期待するような結果に
なるかと思います。


かず  2010-11-26 19:23:25  No: 39609

igyさん
ありがとうございました。
DrawingStyleプロパティを gdsClassicで、固定列・行の複数表示が正常になりました。
クラッシック表示でがまんですね。


かず  2010-11-26 19:24:34  No: 39610

解決を忘れました。


au  2010-11-26 22:09:57  No: 39611

解決になってますが。
FillRectする前に、Canvasのブラシスタイルに bsSolid を指定したら大丈夫でした。

どうも、最初はbsClearが入ってきてる見たいですねぇ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加