前回はどうもありがとうございました。
また別な壁にぶちあたってしまいました。。。
StringGrid関連です。
1.グリッドを範囲指定したときの色(青っぽいやつ)を変更できますか?
変更できるときのやり方を教えてください。
2.範囲指定した場合の外枠はつけれますか?
・この二つで選択の背景色を黄色にしてその枠を赤色にしたいです
3.セルの入力時に背景色もしくは文字の色を変更できますか?」
・現在背景色が黒で文字が白なのですが入力時に背景色が白になってしまい
入力中の文字がみえません。
よろしければ教えてください。
こうゆうのは別々に書いたほうがよいのでしょうか?
> こうゆうのは別々に書いたほうがよいのでしょうか?
別々が良い場合と、一緒でも良い場合があると思います。
にたような処理なら一緒に書いた方が1つですみますし。
1,2に関しては、OnDrawCellイベントでできると思います。
3に関しては、TStringGridでの編集ボックス TInplaceEdit のColor, Fontを変更すればできそうですが、プロパティ・メソッドどちらにもそれらしい項目は見あたりません。
TStringGridを派生させて、新しいコンポーネントを作れば、TInplaceEdit のColor, Fontの変更も可能になります。
1,2のサンプルです。
セルの内容の描画も必要ですが、ここではしていません。
適宜修正してください。
# 先頭の空白に、全角空白を使っています。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if gdFixed in State then
begin
// 固定セル
Exit;
end
else if gdSelected in State then
begin
// 選択中
StringGrid1.Canvas.Brush.Color := clYellow;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Pen.Color := clRed;
StringGrid1.Canvas.Rectangle(Rect);
INC(Rect.Left);
INC(Rect.Top);
DEC(Rect.Right);
DEC(Rect.Bottom);
StringGrid1.Canvas.Rectangle(Rect);
end
else
begin
// 非選択中
StringGrid1.Canvas.Brush.Color := clWindow;
StringGrid1.Canvas.FillRect(Rect);
end;
end;
ツイート | ![]() |