Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 18:19   #1
zoza1
Пользователь
 
Регистрация: 01.07.2009
Сообщений: 15
По умолчанию (Delphi)stringgrid раскраска ячейки ошибка

Народ помогите пажалуйста найдите ошибку в листинге
вот файл с исходниками _http://www.filehoster.ru/files/ep7967 , а вот и сам листинг
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Button4: TButton;
    Label1: TLabel;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,j:integer;
  a:array[1..9,1..9] of integer;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
a,b:integer;
begin
randomize;
for i:=1 to 9 do
   for j:=1 to 9 do
StringGrid1.cells[i-1,j-1]:=IntToStr(random(3)-1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=1 to 9 do
   for j:=1 to 9 do
     StringGrid1.cells[i-1,j-1]:='';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
s,o:integer;
begin
label1.caption:='';
for i:=1 to 9 do
begin
s:=0;
for j:=1 to 9 do
begin
a[i,j]:=StrToInt(StringGrid1.cells[j-1,i-1]);
if a[i,j]=0 then s:=1;
end;
if s=1 then
label1.caption:=label1.Caption+(inttostr(i))+'ая строка имеет нуль'+#13;
end;
label1.width:=200;
end;




procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var R : TRect;
begin
  R := Rect;
  OffsetRect(R, 0, 2);  //для "красоты", чтобы текст не прижимался к разделительным линиям таблицы

  if gdSelected in State then begin   //для выделения активной строки
    StringGrid1.Canvas.Brush.Color := clHighlight;
    StringGrid1.Canvas.FrameRect(Rect);
    StringGrid1.Canvas.Font.Color := clWhite;
  end else begin     //другие строки
    if StringGrid1[ACol, ARow] = '0' then                                                                         //здесь начинается ошибка
      StringGrid1.Canvas.Brush.Color := clred
    else
      StringGrid1.Canvas.Brush.Color := clWhite;
    StringGrid1.Canvas.FillRect(Rect);
  end;
  //в любом случае отрисовка текста
  if ARow = 0 then //текст заголовков по центру
    DrawText(StringGrid1.Canvas.Handle, pchar(StringGrid1.Cells[ACol, ARow]), -1, R, DT_CENTER)
  else
    DrawText(StringGrid1.Canvas.Handle, pchar(StringGrid1.Cells[ACol, ARow]), -1, R, DT_LEFT);
end;


end.

Последний раз редактировалось zoza1; 17.02.2010 в 18:23.
zoza1 вне форума Ответить с цитированием
Старый 17.02.2010, 19:28   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

StringGrid1.cells[ACol, ARow]
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Координаты ячейки в StringGrid??? aslanbek Общие вопросы Delphi 13 01.08.2014 16:53
StringGrid. получать номер ячейки Doget Помощь студентам 2 07.12.2009 09:02
Delphi: Сортировка строк в StringGrid, критерий - элемент ячейки Andris Помощь студентам 9 09.03.2008 23:04