![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как зная координаты ячейки в 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;