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

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

Закраска в StringGrid [D7]


Khabibulin ©   (2006-12-13 22:58:00) 

Здравствуйте!
Помогите закрасить требуемую ячейку в StringGrid, например:
StringGrid.Cells[3, 4]...
За ранее спасибо!


Плохиш   (2006-12-14 11:05:00) [1]


> Германн ©   (14.12.06 01:32) [6]
> Ну почему на "Королевстве" есть статья о раскраске только
> DBGrid'a

Может им претит копирование примеров из справки?


Германн   (2006-12-14 01:32:00) [2]

Ну почему на "Королевстве" есть статья о раскраске толькоDBGrid'a! Или я не информирован достаточно полно? :-)


> Virgo_Style ©   (13.12.06 23:46) [4]
...
> Как-то так, к примеру (на коленке по-быстрому):

Ну если "по-быстрому", то полезно помнить, что оператор withдопускает перечисление условий через запятую :-)


Khabibulin   (2006-12-14 00:21:00) [3]

Спасибо огромное!


Virgo_Style   (2006-12-13 23:46:00) [4]

не забыть выключить DefaultDrawing (или как его, лень опять Delphi запускать)

Как-то так, к примеру (на коленке по-быстрому):

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var X,Y:integer;
begin

 with TStringGrid(Sender).Canvas do begin
   with Rect do begin
     X:=Left+(Right-Left-TextWidth(TStringGrid(Sender).Cells[ACol,ARow])) div 2;
     Y:=Top+(Bottom-Top-TextHeight(TStringGrid(Sender).Cells[ACol,ARow])) div 2;
   end;
   if (gdFixed in State) then begin
     DrawFrameControl({TStringGrid(Sender).Canvas.}Handle,Rect,DFC_BUTTON,DFCS_BUTTON PUSH);
     Brush.Color:=clBtnFace;
     TextOut(X,Y,TStringGrid(Sender).Cells[ACol,ARow] );
   end else begin
    if (gdSelected in State) then Brush.Color:=clBlue else
      if ((ACol=3) and (ARow=4)) then
        Brush.Color:=clRed
      else
        Brush.Color:=clWhite;
    TextRect(Rect,X,Y,TStringGrid(Sender).Cells[ACol,ARow] );
    if (gdFocused in State) then
      DrawFocusRect(Rect);
   end;
 end;
end;

P.S. [2] отделяет от [1] три минуты. Скажи, что ты сделал за эти три минуты? Прочитал справку? Поискал пример? Посмотрел параметры OnDrawCell?
Э-эх...


Anatoly Podgoretsky   (2006-12-13 23:41:00) [5]

> Khabibulin  (13.12.2006 23:12:02)  [2]

Тебе его скопировать сюда?


Khabibulin   (2006-12-13 23:12:00) [6]

а пример конкретный можно...


Virgo_Style   (2006-12-13 23:09:00) [7]

см. OnDrawCell


Наверх

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