Форум: "Начинающим";
Текущий архив: 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