Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 21:43   #1
AdOS
 
Регистрация: 08.05.2012
Сообщений: 5
Вопрос Выделение клеток по цвету.

Добрый день.

Суть программы такая: есть торговая площадь. Загружается карта этажа, на ней отмечается где площадь свободна, где занята, где лишние куски, где проходы и т.д.
Не могу реализовать следующее: Ввожу в один из Edit площадь (Н: 50 кв.м), надо чтобы на карте все "свободные" места, в которые эта площадь влезает как-то выделились (например приобрели другой цвет или рамочку вокруг).
Пример:
Мне нужно поселить арендатора, которому нужна площадь 100 кв. м.
Каждый квадрат на карте означает 75 кв.м., то есть, надо чтобы как-то выделились 2 квадрата с желтым цветом (причем эти квадраты должны стоять рядом друг с другом).
Пыталась сделать что-то такое:



procedure TForm1.Button6Click(Sender: TObject);
var pl,sr,xx,yy:integer;
begin
xx:=(z div 2); //z - сторона клетки
yy:=(z div 2);
sr:=(z div 2);
pl:=strtoint(Edit10.Text); //"вносимая" площадь
if x<form1.Image1.Height then
begin
If y<Form1.Image1.Width then
begin
if pl<z then begin
for i:=0 to h do
for j:=0 to w do
begin
Image1.Canvas.Pixels[xx,yy];
if sta=1 then begin
Form1.Image1.Canvas.Brush.Color:= clAqua;
Image1.Canvas.Rectangle(xx-sr,yy-sr,xx+sr,yy+sr);
END

else if (pl>z) and (pl<2*z) then begin
Form1.Image1.Canvas.Pixels[xx,yy];
if sta=1 then begin
Form1.Image1.Canvas.Pixels[xx,yy-z];
if sta=1 then begin
Form1.Image1.Canvas.Brush.Color:= clAqua;
Image1.Canvas.Rectangle(xx-sr,yy-3*sr,xx+sr,yy+sr);
end else
Form1.Image1.Canvas.Pixels[xx-z,yy];
if sta=1 then begin
Form1.Image1.Canvas.Brush.Color:= clAqua;
Image1.Canvas.Rectangle(xx-3*sr,yy-sr,xx+sr,yy+sr);
end else
Form1.Image1.Canvas.Pixels[xx,yy+z];
if sta=1 then begin
Form1.Image1.Canvas.Brush.Color:= clAqua;
Image1.Canvas.Rectangle(xx-sr,yy-sr,xx+sr,yy+3*sr);
end else
Form1.Image1.Canvas.Pixels[xx+z,yy];
if sta=1 then begin
Form1.Image1.Canvas.Brush.Color:= clAqua;
Image1.Canvas.Rectangle(xx-sr,yy-sr,xx+3*sr,yy+sr);
end; end;end; end;
end; y:=y+z;
end; x:=x+z;
end; end;

end.



Эта процедура не работает и она плохая, ведь квадратов, которые надо выделить, может быть и 1, и 2, и 22.



P.S. Вот такой зубастый курсач.
AdOS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение столбцов по цвету ячеек в excel sov105 Microsoft Office Excel 6 17.01.2011 19:11
Как реализовать замену клеток s3m Microsoft Office Access 9 18.11.2010 13:59
Количество клеток мембраны artemavd Общие вопросы Delphi 33 07.05.2010 03:03
Подсчёт непустых клеток mik Microsoft Office Excel 7 27.10.2007 13:40
ComboBox - убийца нервных клеток krem Компоненты Delphi 20 15.06.2007 22:07