![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
У меня такой вопрос: Нужно наложить на Image сетку ,(например 20х20 ячеек), и при клике по разным ячейкам должны происходить разные события. При этом сетка не должна быть видна, только при программировании для удобства. Подскажите пожалуйста, как это можно реализовать, очень бы хотелось с примером кода, а то я в программировании еще не силён. Очень надеюсь на Вашу помощь. |
|
#2
|
||||
|
||||
|
Цитата:
|
|
#3
|
|||
|
|||
|
Спасибо, а можете привести небольшой примерчик, если не трудно.
|
|
#4
|
||||
|
||||
|
Цитата:
я тебе информацию к размышлению дам (см. картинку). Точка - это где щелчок произошел. Известны размеры воображаемой ячейки. Как вычислить ячейку, в которой произошел щелчок? http://www.delphisources.ru/forum/at...d=131375652 5 |
|
#5
|
|||
|
|||
|
Мало что понятно из вышесказанного, вопрос остаётся нерешенным, может кто-нибудь может подробно объяснить на нормальном примере?
|
|
#6
|
||||
|
||||
|
не хош думать, сделай решение в лоб, накидай на форму 100 Image(10х10)
И кликай по ним сколько душе угордно ![]() |
|
#7
|
||||
|
||||
|
Цитата:
По теме: Размеры твоего имиджа тебе известны, делишь ширину и высоту на столько частей, на сколько надо (в твоем случае 10). image1.width div 10, получишь размер клеточки. Далее думаем сами. |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Image (1000х600) надо разбить на 6000 кусочков (10х10).
Так как я не профи как вы в делфи, вот и просил привести наглядный рабочий пример на нескольких ячейках хотябы, чтобы по аналогии я уже смог сделать полностью. |
|
#10
|
||||
|
||||
|
А какие события должны происходить при нажатии на ячейку??
|
|
#11
|
|||
|
|||
|
По клику на указанные ячейки должно перемещаться Image2(10x10).
|
|
#12
|
||||
|
||||
|
Так что ли:
Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Const
a = 20;
b = 20;
begin
ShowMessage('Ячейка = ['+IntToStr(X div a)+', '+IntToStr(Y div b)+']');
end; |
|
#13
|
|||
|
|||
|
Цитата:
Спасибо за пример. Скомпилировал, ячейки показывает, а как для определённых ячеек прописывать события, нужно, чтобы по клику на указанные ячейки перемещалось Image2(10x10). Буду очень признателен за помощь. |
|
#14
|
||||
|
||||
|
Можно в case сделать.
Код:
case X div a of
0: showmessage('ячейка 1 по x');
1: showmessage('ячейка 2 по x');
...
end; |
|
#15
|
|||
|
|||
|
Цитата:
Спасибо большое, а как в этот код еще по оси Y добавить, а то у меня в коде при клике все ячейки по оси Y срабатывают? Код: Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Const
a = 10;
b = 10;
begin
//ShowMessage('Ячейка = ['+IntToStr(X div a)+', '+IntToStr(Y div b)+']');
case X div a of
0: begin Panel1.visible:=True; Panel1.left:=X;Panel1.Top:=Y;end;
1: begin Panel1.visible:=True; Panel1.left:=X;Panel1.Top:=Y;end;
2: begin Panel1.visible:=True; Panel1.left:=X;Panel1.Top:=Y;end;
end;
end; |