|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2012, 21:43 | #1 |
Регистрация: 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. Вот такой зубастый курсач. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выделение столбцов по цвету ячеек в 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 |