掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
(FireMonkry)StringGridで複数行表示するには? (ID:41898)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
コメントが付かないので、思い切って投稿します。 OnDrawCellイベント相当のものなら、 http://blogs.embarcadero.com/teamj/2011/11/14/2598/ が参考になるかと思います。 FireMonkeyについてまだ理解できてないので、アプローチが間違っているかもしれません。実用性の無いゴミコードですが、参考まで... (1) フォームのクラス定義の前に次の定義を追加 TStringColumn = class(FMX.Grid.TStringColumn) protected function CreateCellControl: TStyledControl; override; private procedure OnCellPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); procedure OnCellTyping(Sender: TObject); procedure OnCellExit(Sender: TObject); end; (2)各メソッドのコード // セルコントロールのモディファイ function TStringColumn.CreateCellControl: TStyledControl; begin Result := inherited; TTextCell(Result).OnPaint := OnCellPaint; TTextCell(Result).OnTyping := OnCellTyping; TTextCell(Result).OnExit := OnCellExit; TTextCell(Result).Tag := 0; end; // エディット中は透過しない procedure TStringColumn.OnCellTyping(Sender: TObject); begin TTextCell(Sender).Opacity := 1.0; TTextCell(Sender).Tag := 1; DoTextChanged(Sender); end; // エディット終了で透過する procedure TStringColumn.OnCellExit(Sender: TObject); begin TTextCell(Sender).Opacity := 0; TTextCell(Sender).Tag := 0; DoTextExit(Sender); end; // エディット中で無ければ表示する procedure TStringColumn.OnCellPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin if TTextCell(Sender).Tag=0 then begin Canvas.Fill.Color := claBlack; Canvas.FillText(ARect, TTextCell(Sender).Text, True, 1.0, [TFillTextFlag.ftRightToLeft], TTextAlign.taTrailing, TTextAlign.taLeading); end; end; セルの編集機能であるTEditは、マルチラインに対応していないようです。 TEditとTStringColumnのペイント処理をもっとうまくやれば、実用的になりそうですが...
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.