Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.08.2011, 14:15
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию Наложение сетки на Image

Здравствуйте.
У меня такой вопрос:
Нужно наложить на Image сетку ,(например 20х20 ячеек), и при клике по разным ячейкам должны происходить разные события. При этом сетка не должна быть видна, только при программировании для удобства.

Подскажите пожалуйста, как это можно реализовать, очень бы хотелось с примером кода, а то я в программировании еще не силён.

Очень надеюсь на Вашу помощь.
Ответить с цитированием
  #2  
Старый 19.08.2011, 14:48
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;
TImage OnMouseDown: TMouseEvent
по X, Y: Integer вычисляй ячейку в воображаемой сетке.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 19.08.2011, 15:31
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

Спасибо, а можете привести небольшой примерчик, если не трудно.
Ответить с цитированием
  #4  
Старый 19.08.2011, 17:19
Аватар для DenNik
DenNik DenNik вне форума
Прохожий
 
Регистрация: 25.07.2011
Адрес: Около 300000 км от Луны
Сообщения: 25
Версия Delphi: D7 Enterprise
Репутация: 10
По умолчанию

Цитата:
Спасибо, а можете привести небольшой примерчик, если не трудно.

я тебе информацию к размышлению дам (см. картинку). Точка - это где щелчок произошел. Известны размеры воображаемой ячейки. Как вычислить ячейку, в которой произошел щелчок?
http://www.delphisources.ru/forum/at...d=131375652 5
Изображения
Тип файла: jpg GRID.JPG (3.1 Кбайт, 44 просмотров)
Ответить с цитированием
  #5  
Старый 19.08.2011, 17:52
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

Мало что понятно из вышесказанного, вопрос остаётся нерешенным, может кто-нибудь может подробно объяснить на нормальном примере?
Ответить с цитированием
  #6  
Старый 19.08.2011, 17:54
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

не хош думать, сделай решение в лоб, накидай на форму 100 Image(10х10)
И кликай по ним сколько душе угордно
Ответить с цитированием
  #7  
Старый 19.08.2011, 18:36
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Pilot_Red
не хош думать, сделай решение в лоб, накидай на форму 100 Image(10х10)
И кликай по ним сколько душе угордно
Возникнет второй вопрос, как одно изображение разбить на 100 кусочков.

По теме:
Размеры твоего имиджа тебе известны, делишь ширину и высоту на столько частей, на сколько надо (в твоем случае 10).
image1.width div 10, получишь размер клеточки. Далее думаем сами.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 19.08.2011, 18:47
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Возникнет второй вопрос, как одно изображение разбить на 100 кусочков.
Ну... я думаю автор темы знаком с таким замечательным продуктом, как MsPaint.
Ответить с цитированием
  #9  
Старый 19.08.2011, 19:05
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

Image (1000х600) надо разбить на 6000 кусочков (10х10).
Так как я не профи как вы в делфи, вот и просил привести наглядный рабочий пример на нескольких ячейках хотябы, чтобы по аналогии я уже смог сделать полностью.
Ответить с цитированием
  #10  
Старый 19.08.2011, 19:12
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

А какие события должны происходить при нажатии на ячейку??
Ответить с цитированием
  #11  
Старый 19.08.2011, 19:35
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

По клику на указанные ячейки должно перемещаться Image2(10x10).
Ответить с цитированием
  #12  
Старый 19.08.2011, 19:41
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Так что ли:
Код:
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;
__________________
If end Then begin;
Ответить с цитированием
  #13  
Старый 19.08.2011, 19:55
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от AND_REY
Так что ли:
Код:
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)+']');
end;

Спасибо за пример.
Скомпилировал, ячейки показывает, а как для определённых ячеек прописывать события, нужно, чтобы по клику на указанные ячейки перемещалось Image2(10x10).

Буду очень признателен за помощь.
Ответить с цитированием
  #14  
Старый 19.08.2011, 20:13
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Можно в case сделать.
Код:
case X div a of
  0: showmessage('ячейка 1 по x');
  1: showmessage('ячейка 2 по x');
...
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #15  
Старый 19.08.2011, 21:27
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Можно в case сделать.
Код:
case X div a of
  0: showmessage('ячейка 1 по x');
  1: showmessage('ячейка 2 по x');
...
end;

Спасибо большое, а как в этот код еще по оси 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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter