Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как Попасть в нужный Квадрат? ))))) [D6, 2000]


Officeman ©   (2006-03-16 14:18:00) 

НА форме расположены панельки Panel1..Panel100  в виде маленьких квардатиков. Расположенные рядом 10x10 они образуют большой квадрат.

Примимая общие габариты  x=500, y=500. получается что каждая Panel-ка
должно занимать (в уме) .. 50 точек (позиций)

на форме дополнительно размещаем  TEdit.xxx  и  TEdit.yyy
в которые заносим значения(каждый раз разные) - обозначающие координаты X и Y

например     xxx.text:=365
                 yyy.text:=117

!!! Вопрос: как закрашивать нужную ПАНЕЛЬКУ. на которую приходятся введённые координаты  xxx и yyy

p.s. 100% что никто не понял о чём речь ))). придётся самому ломать башню.


Officeman   (2006-03-17 08:47:00) [1]

to Плохиш

это данные КООРДИНАТ поступающих на обработку, в итоге обработка указывает на нужных квадратик (Panel27), которой в последствии красится и делается запись в его Caption.

очень доволен


Плохиш   (2006-03-16 17:46:00) [2]


> Officeman   (16.03.06 17:38) [14]

Смотрел, смотрел, так и не понял, где здесь используется

> например     xxx.text:=365
>                  yyy.text:=117

Ну и ладно, главное, автор доволен.


Officeman   (2006-03-16 17:38:00) [3]

вай. супер!!! спасибо! кароче работает.! потом оптимизирую, и всё гуд будет!


procedure TForm1.Button1Click(Sender: TObject);
var
x,y,poz_x,poz_y,KVA:integer;
begin

for x:=0 to LV.Items.Count-1 do begin
//--------
poz_x:=0;
poz_y:=0;
KVA:=0;
//--------
poz_x:=(strtoint(LV.Items[x].caption)+51) div 51;
poz_y:=(strtoint(LV.Items[x].subitems[0])+51) div 51;
//--------
if ((poz_x<>0) and (poz_y<>0)) then begin
KVA:=((poz_y*10)+poz_x); // номер Квадрата
Memo1.Lines.Add('x='+inttostr(poz_x)+',  y='+inttostr(poz_y)+' //Panel'+inttostr(KVA));

//пробуем покрасить
with TPanel(FindComponent('Panel'+inttostr(KVA))) do
begin
color:=clRED;
end;
end;

end;

end;


Leonid Troyanovsky   (2006-03-16 16:23:00) [4]


> Officeman   (16.03.06 15:30) [11]

> помогите перевести STR в тип КОМПОНЕНТ и закрасить например


Видишь ли, Юра..
Похоже, что ты больше пишешь, чем читаешь.
Предлагаю восполнить этот пробел: FindComponent, RTFM.

Хотя, как уже сказали, все это - не наш путь.
Ну, а красить уж изволь сам, бо, видимо, с панелей ты не слез,
а их красят в одиночестве (clRed).

--
Regards, LVT.


Officeman   (2006-03-16 15:30:00) [5]

уже почти сделал.  обработка в 10 строк вышла. )))

получаю в "string"  название нужной панельки. например  str:='Panel72'

помогите перевести STR в тип КОМПОНЕНТ и закрасить например в красный

спасибо за поддержку топа.


Leonid Troyanovsky   (2006-03-16 15:30:00) [6]


> Сергей М. ©   (16.03.06 15:06) [9]

> Имеешь ввиду дальнейший ControlAtPos() ?


Его-то б было можно даже без div :)
А я хотел сказать, что, все равно, придется мапить контролы
в какой-нибудь массив. Потому, как сначала раскрасить,
потом еще чего-нибудь.

--
Regards, LVT.


Игорь Шевченко   (2006-03-16 15:19:00) [7]

пример выбора квадратика есть в http://kladovka.net.ru/download.cgi?id=191


Сергей М.   (2006-03-16 15:06:00) [8]


> Leonid Troyanovsky ©   (16.03.06 14:44) [8]


Имеешь ввиду дальнейший ControlAtPos() ?
Тоже неплохо .. Но все равно - геморрой) .. по сравнению с готовымиконтролами а-ля grid, реализующими интуитивно понятный и простой/удобный интерфейс доступа к тем самым "квадратам")


Leonid Troyanovsky   (2006-03-16 14:44:00) [9]


> Сергей М. ©   (16.03.06 14:39) [7]

> Что ж ... В цикле по всем контролам в пределах указанного


Цикл - это уже перебор.
Квадраты одинаковые, расположены в квадрате,
т.е., достаточно двух div.

--
Regards, LVT.


Leonid Troyanovsky   (2006-03-16 14:39:00) [10]


> Officeman   (16.03.06 14:35) [4]

> Нужно по заданным координатам определить НА КАКОЙ КВАДРАТ
> они попадают!


MouseToCell

Покрасить-то сумеешь? ;)

--
Regards, LVT.


Сергей М.   (2006-03-16 14:39:00) [11]


> Officeman   (16.03.06 14:35) [4]


мы легких путей не ищем ? Нам геморрой подавай ?

Что ж ... В цикле по всем контролам в пределах указанного владельца проверяй нужные координаты на предмет их вхождения в координаты каждого из перечисляемых в цикле контролов.


Джо   (2006-03-16 14:37:00) [12]

PtInRect


Officeman   (2006-03-16 14:35:00) [13]

как угодно. рисовать или компоненты ставить. главное:

Нужно по заданным координатам определить НА КАКОЙ КВАДРАТ они попадают! и ЗАКРАСИТЬ этот КВАДРАТ


Anatoly Podgoretsky   (2006-03-16 14:31:00) [14]

А если посчитать то получится 2500 точек


Leonid Troyanovsky   (2006-03-16 14:28:00) [15]


> Officeman   (16.03.06 14:18)  

> НА форме расположены панельки Panel1..Panel100  в виде маленьких
> квардатиков. Расположенные рядом 10x10 они образуют большой


Уже плохо.
Возьми TDrawGrid и раскрась его требуемым образом.

--
Regards, LVT.


clickmaker   (2006-03-16 14:25:00) [16]


> p.s. 100% что никто не понял о чём речь

я не понял только одного: зачем для этого располагать панельки? Каждая панелька - окно, а это - ресурс.
Проще рисовать прямо на форме.


Наверх

Титульная страница Поиск, карта сайта Написать письмо