Перейти к содержанию
Fire Monkey от А до Я
  • 0

Покрасить ячейку Stringgrid в зависимости отзначения ячейки


Павел Караваев

Вопрос

Люди добрые, помогите) Я не понимаю, как закрасить ячейки в зависимости от информации в данной ячейке. Если в ячейке 1, то нужно покрасить белым, если 0, то чёрным. Имеющиеся на форуме ответы не помогают, ячейки не красятся=(

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

1)Среда - Delphi 10.2, ОС - Windows и Android от 4.2.2 (сейчас под винду).

2)Кривенький код:

//заполнение таблицы
procedure TForm1.ZapolnenieSG;
var
  i,j:integer;
begin
  zoom:=20;
  SG.RowCount:=n;
  for i := 0 to m-1 do
  begin
    SG.AddObject(TStringColumn.Create(nil));
    SG.ColumnByIndex(i).Width:=zoom;
  end;
  SG.RowHeight:=zoom;
  for i := 0 to m-1 do
    for j := 0 to n-1 do
    begin
      SG.Cells[j,i]:=inttostr(ImMas[i,j]);
    end;
end;
    
//собственно, сама закраска
procedure TForm1.SGDrawColumnCell(Sender: TObject; const Canvas: TCanvas;
  const Column: TColumn; const Bounds: TRectF; const Row: Integer;
  const Value: TValue; const State: TGridDrawStates);
var
  aTextRect:   TRectF;
  aTextLayout: TTextLayout;
begin
  aTextRect := Bounds;
  aTextRect.Right := Round(aTextRect.Right) + 1;
  aTextRect.Bottom := Round(aTextRect.Bottom) - 1;
  Canvas.FillRect(aTextRect, 0, 0, AllCorners, 1);
  if value.tostring = '1' then
    Canvas.ClearRect(aTextRect, TAlphaColorRec.White)
  else Canvas.ClearRect(aTextRect, TAlphaColorRec.Black);
end;

 

Ссылка на комментарий
  • 0
1 час назад, Павел Караваев сказал:

for i := 0 to m-1 do
  for j := 0 to n-1 do

У Вас перепутаны строки и столбцы. Нужно или так:
 

  for i := 0 to n-1 do
    for j := 0 to m-1 do

Или же так:  

SG.Cells[i,j]:=inttostr(ImMas[i,j]);

TStringGrid:  property Cells[const ACol, ARow: Integer]

 

TestSGDraw.zip

Изменено пользователем enatechno
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...