пятница, 31 января 2014 г.

Закрашивание ячеек StringGrid

В примере ячейки таблицы будут закрашиваться разными цветами, в зависимости от того, какие числа хранятся в них: 0 - белый, 1 - красный, 2 - желтый, 3 - зеленый.
На форме разместим компонент sg: TStringgrid и создадим обработчик события OnDrawCell
// Процедура перерисовки таблицы вызывается при любом изменении StringGrid
procedure TForm1.sgDrawCell(Sender: TObject; aCol, aRow: integer;
  aRect: TRect; aState: TGridDrawState);
begin
  sg.Canvas.Pen.Width := 0;
  sg.Canvas.Pen.Color := clWhite;
  // В зависимости от данных, хранимых в ячейках, закрашиваем их разными цветами
  if sg.Cells[aCol, aRow] = '0' then
  begin
    sg.Canvas.Brush.Color := clWhite;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '1' then
  begin
    sg.Canvas.Brush.Color := clRed;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '2' then
  begin
    sg.Canvas.Brush.Color := clYellow;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '3' then
  begin
    sg.Canvas.Brush.Color := clGreen;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
end;

среда, 22 января 2014 г.

Построение модели в электронных таблицах

Автор: +Алексей Раскин 

Давайте предположим, что вы решаете задачу о том, сколько электроэнергии будет потреблять город Кемерово ближайшие 20 лет. (Ссылка на модель)

Итак. Как выглядит процесс моделирования? Существенно упрощенный, но вполне реальный. Мы пройдем по основным этапам моделирования и в конце у нас должна появиться модель. Простая, но рабочая.

вторник, 21 января 2014 г.

Lazarus. Загрузка изображений в StringGrid

Ниже приведен код программы, в которой по нажатию на клетки таблицы, в нее будут загружаться флажки разного цвета (зеленый - при первом нажатии и красный - при втором нажатии)

type
  { TForm1 }
//На форме размещаем
  TForm1 = class(TForm)
    Button1: TButton; //Кнопка Restart
    sg: TStringGrid;  //Таблица StringGrid 
    procedure Button1Click(Sender: TObject); //Создаем обработчик события onClick для Button1
    procedure FormCreate(Sender: TObject); //Создаем обработчик события onCreate для Form1
    procedure sgClick(Sender: TObject); //Создаем обработчик события onClick для sg
    procedure sgDrawCell(Sender: TObject; aCol, aRow: integer;
      aRect: TRect; aState: TGridDrawState);//Создаем обработчик события onDrawCell для sg
  private
    { private declarations }
  public
    { public declarations }
  end;