Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringGrid красим ячейки мышкой


Ardent ©   (2010-04-29 17:37:00) 

Всем привет! есть код:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
  With TstringGrid(Sender) Do
begin

 If (gdSelected in State)and(ACol=Col)And(ARow=Row)  then  
 begin

 if Canvas.Brush.Color = clRed then Canvas.Brush.Color:= clWhite else  Canvas.Brush.Color:= clRed ;
  Canvas.FillRect(Rect);
  Canvas.DrawFocusRect(Rect);

 end
  else
 If (gdSelected in State)  then
 begin
  if Canvas.Brush.Color = clRed then Canvas.Brush.Color:= clWhite else  Canvas.Brush.Color:= clRed ;
  Canvas.FillRect(Rect);
  Canvas.DrawFocusRect(Rect);
  Canvas.DrawFocusRect(Rect);
 end;
end;

Выделенные ячейки закрашиваются в красный цвет.
1) Как сделать чтоб  ячейки оставались закрашенными, после перехода в другую ячейку?
2) Как сделать исключение при закраске - при выделении красных ячеек они красятся в белый и наоборот


ixen   (2010-05-02 11:03:00) [1]

я так понял что данные для заполнения в stringgrid беруться из некоего массива. Создай тип запись где укажи поле состояние ячейки, например 0 или 1 . затем проверяй содержимое этого поля в DrawCell и закрашивай.


MonoLife   (2010-04-30 06:41:00) [2]


> 1) Как сделать чтоб  ячейки оставались закрашенными, после
> перехода в другую ячейку?

Пиши что-нить в ячейку, а потом проверяй в DrawCell
"если в ячейке ACol, ARow то, что надо, то красим, иначе не красим"


Ardent   (2010-04-29 17:39:00) [3]

Вот правильный исходный код....

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
 With TstringGrid(Sender) Do
begin

If (gdSelected in State)and(ACol=Col)And(ARow=Row)  then  
begin

Canvas.Brush.Color:= clRed ;
 Canvas.FillRect(Rect);
 Canvas.DrawFocusRect(Rect);

end
 else
If (gdSelected in State)  then
begin
 Canvas.Brush.Color:= clRed ;
 Canvas.FillRect(Rect);
 Canvas.DrawFocusRect(Rect);
 Canvas.DrawFocusRect(Rect);
end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо