掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TGridのセルに枠を描画したい (ID:151119)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
よくわかっていないのに、ソースコードを投稿することをお許しください。 FMXのTGridは使い方が難しいですね。 外していたらすいません。 unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Rtti, FMX.Grid.Style, FMX.Grid, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, System.ImageList, FMX.ImgList; type TForm1 = class(TForm) Grid1: TGrid; procedure FormCreate(Sender: TObject); procedure Grid1SetValue(Sender: TObject; const ACol, ARow: Integer; const Value: TValue); procedure FormDestroy(Sender: TObject); procedure Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue); procedure Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); procedure Grid1CellDblClick(const Column: TColumn; const Row: Integer); private { private 宣言 } pt:TPoint; bmparr:array of array of TBitmap; public { public 宣言 } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); var imgc:TImageColumn; c:Integer; begin Grid1.RowHeight:=40; Grid1.RowCount:=40; Grid1.Options:= Grid1.Options+[{TGridOption.AlwaysShowEditor,} TGridOption.Editing]; pt:=Point(-1,-1); for c := 0 to 9 do begin imgc:=TImageColumn.Create(Grid1); imgc.Width:=40; Grid1.AddObject(imgc); end; SetLength(bmparr,Grid1.ColumnCount); for c := 0 to Grid1.ColumnCount-1 do begin SetLength(bmparr[c],Grid1.RowCount); end; end; procedure TForm1.FormDestroy(Sender: TObject); var c,r:Integer; begin for c := Low(bmparr) to High(bmparr) do for r := Low(bmparr[c]) to High(bmparr[c]) do begin if assigned(bmparr[c,r]) then begin FreeAndNil(bmparr[c,r]); end; end; end; procedure TForm1.Grid1CellDblClick(const Column: TColumn; const Row: Integer); begin pt.X:=Column.Index; pt.Y:=Row; end; procedure TForm1.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); begin if (pt.X=Column.Index) and (pt.Y=Row) then begin Canvas.Stroke.Thickness:=2; Canvas.Stroke.Dash:=TStrokeDash.Solid; Canvas.Stroke.Color:=TAlphaColors.Yellowgreen; Canvas.DrawRect(Bounds,0,0,[],1); end; end; procedure TForm1.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue); begin if assigned(bmparr[ACol,ARow]) then Value:=bmparr[ACol,ARow]; end; procedure TForm1.Grid1SetValue(Sender: TObject; const ACol, ARow: Integer; const Value: TValue); begin if not assigned(bmparr[ACol,ARow]) then begin bmparr[ACol,ARow]:=TBitmap.Create; end; bmparr[ACol,ARow].Assign(TBitmap(Value.AsObject)); end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.