Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Вниз

Как зная координаты ячейки в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
15-1156233958
tsa
2006-08-22 12:05
2006.09.17
У всех брандмауеры обычные, а этот левый!


2-1156596558
angelika
2006-08-26 16:49
2006.09.17
горячие клавиши (ctrl+key)


15-1156396740
konrads
2006-08-24 09:19
2006.09.17
Ридеры магнитных карт


4-1147969783
Handle
2006-05-18 20:29
2006.09.17
CreateToolHelp32SnapShot


1-1154929687
KygECHuK
2006-08-07 09:48
2006.09.17
Эмуляция событий мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский