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

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

Как зная координаты ячейки в StringGrid узнать цвет ячейки? [D7, XP]


moor38 ©   (2006-08-24 11:17:00) 

Добрый день Господа! Подскажите, как зная координаты ячейки в StringGrid узнать цвет ячейки?


moor38   (2006-08-26 08:38:00) [1]

Спасибо, за объекты я и забыл


unknown   (2006-08-24 14:50:00) [2]

В принципе, можно обойтись и без левых массивов
procedure TForm1.FormCreate(Sender: TObject);
var
 i,j:integer;
begin
 with StringGrid1 do
   for i:=1 to Pred(RowCount) do
     for j:=1 to Pred(ColCount) do
       Rows[i].Objects[j]:=TObject(Random(16355));
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 if StringGrid1.Rows[ARow].Objects[Acol]<>nil then
   with StringGrid1.Canvas do
   begin
     Brush.Color:=Integer(StringGrid1.Rows[ARow].Objects[Acol]);
     FillRect(Rect);
   end;
end;


Loginov Dmitry_   (2006-08-24 13:29:00) [3]


> и все, за то не надо вводить дополнительных переменных и
> следить за ними


А если сетка вмещает к примеру только 5 строчек, а нужно узнать цвет 6-й невидимой строки, то что будете делать?


unknown   (2006-08-24 12:59:00) [4]


> Плохиш ©   (24.08.06 12:45) [6]
> А если в эту точку текст попадёт

В т.з. сказано - узнать цвет ячейки. Задача выполнена.
Если надо узнать "фоновый" цвет ячейки, то требуется внести соотв. изменения в т.з.
Изменения формить как приложение к т.з. и заверить печатями. :-)


moor38   (2006-08-24 12:56:00) [5]

Когда рисуешь сетку сдвинь на пару пикселов
TextRect(Rect, Rect.Left+2, Rect.Top+2, StringGrid1.Cells[aCol, aRow]);

и все, за то не надо вводить дополнительных переменных и следить за ними


Плохиш   (2006-08-24 12:45:00) [6]


> moor38   (24.08.06 12:36) [5]
> Почему? Замечательно получается, смотри пример "неизвестного".

А если в эту точку текст попадёт или вообще в ячейке картинку нарисовали?


moor38   (2006-08-24 12:36:00) [7]

Почему? Замечательно получается, смотри пример "неизвестного".


Loginov Dmitry_   (2006-08-24 12:06:00) [8]


> Подскажите, как зная координаты ячейки в StringGrid узнать
> цвет ячейки?


При закраске в OnDrawCell запоминай этот цвет в каком-нибудь массиве. По канве его определить в общем случае врядли удастся.


moor38   (2006-08-24 12:02:00) [9]

Большое спасибо "неизвесному"! Я просто забыл сместить на один пиксель.

Leonid Troyanovsky>> Разукрашивал я ее в TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;  Rect: TRect; State: TGridDrawState); а вычислить цвет мне надо с любой точки программы.


Leonid Troyanovsky   (2006-08-24 11:52:00) [10]


> moor38   (24.08.06 11:17)  

> в StringGrid узнать цвет ячейки?


Ну, а как ее раскрашивали?

--
Regards, LVT.


unknown   (2006-08-24 11:41:00) [11]


> moor38   (24.08.06 11:17)
> Добрый день Господа! Подскажите, как зная координаты ячейки
> в StringGrid узнать цвет ячейки?

Какие именно координаты?
А, впрочем, вот :
procedure TForm1.StringGrid1DblClick(Sender: TObject);
var
 p:TPoint;
begin
 { Определяем координаты }
 p:=StringGrid1.CellRect(StringGrid1.Col,StringGrid1.Row).TopLeft;
 { Добавляем пиксел, иначе получим цвет границы ячейки. }
 p.X:=p.X+1;
 p.Y:=p.Y+1;
 { Получаем цвет ячейки. Следует учесть, что если ячейка будет выделена
   индикатором, то получим цвет индикатора. }
 Caption:=ColorToString(StringGrid1.Canvas.Pixels[P.X,P.Y]);
end;


Наверх

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