Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Как зная координаты ячейки в StringGrid узнать цвет ячейки?   Найти похожие ветки 

 
moor38   (2006-08-24 11:17) [0]

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


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


> 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;


 
Leonid Troyanovsky ©   (2006-08-24 11:52) [2]


> moor38   (24.08.06 11:17)  

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


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

--
Regards, LVT.


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

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

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


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


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


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


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

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


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


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

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


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

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

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


 
unknown ©   (2006-08-24 12:59) [8]


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

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


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


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


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


 
unknown ©   (2006-08-24 14:50) [10]

В принципе, можно обойтись и без левых массивов
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;


 
moor38   (2006-08-26 08:38) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
2-1156749497
GeneralMotors
2006-08-28 11:18
2006.09.17
Пробудить комп


15-1156173016
SergP.
2006-08-21 19:10
2006.09.17
Кто знает как убрать банеры на сайте www.****.nm.ru ?


2-1156837231
0bsid
2006-08-29 11:40
2006.09.17
как изменить региональные настройки в программе


6-1146644798
Chaser
2006-05-03 12:26
2006.09.17
Зависание при "IdTCPClient.ReadInteger(true)"


2-1156955753
zxcv
2006-08-30 20:35
2006.09.17
как узнать имя активного окна