![]() |
|
#1
|
|||
|
|||
![]() Всем привет. Надо сделать план местности. Кинул на форму ScrollBox. В него поместил Image. В него поместил большую картинку, чтобы края были за пределами. На картинке есть дома. Мне надо чтобы при наведении на определенный дом во втором Image выводилась фото этого дома. Решаю данную проблему через опу... кидаю на изображение на место дома другой Image и при наведении на него срабатывает событие... Но домов много и как мне кажется это не выход... Подскажите другой способ решения данной проблы пожалуйста.
|
#2
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Demlan (14.04.2014)
|
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
||||
|
||||
![]() Цитата:
|
#5
|
|||
|
|||
![]() Использовал Mouse.CursorPos.X. А надо было использовать IntToStr(x) в Image1MouseMove...Это я немного запупил. Спасибо большое.
А если здание стоит ромбом, как тогда отследить положение7 Последний раз редактировалось M.A.D.M.A.N., 14.04.2014 в 11:57. |
#6
|
|||
|
|||
![]() Да так же квадратом!!
Еще можно прописать +/- погрешность. Если, конечно, у Вас дома не слишком плотно стоят. |
#7
|
||||
|
||||
![]() Вот, еле нашёл в сорцехране свой ну очень (1998) старинный проект - делал тогда по работе каталог инструментов и для него пришлось разрабатывать компонент с "подсветкой" областей на рисунке, вам это не нужно точно, но там организуются "не прямоугольные" сообщества регионов (хранятся в самом рисунке), а при попадании на них мышки возможна реакция, вот это вам скорее всего подойдёт. Есть и редактор полигонов, посмотрите пжлст
З.Ы. А вот и пример (exe+src) отыскался того, как это должно было работать Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 14.04.2014 в 15:45. |
#8
|
|||
|
|||
![]() Безымянный.png
Может я что-то не так делаю, но появляется эта ошибка при открытии программы, на которую вы дали ссылку.. |
#9
|
||||
|
||||
![]() Рисунок что в свойстве PictureNormal компонента LedImage прописан немного глючит из-за возраста - не ходовая часть, но если хотите, то можете свой "двухцветный" битмап в Picture запихнуть через инспектор, автоматом ошибка исчезнет
З.Ы. Не могли бы вы выложить здесь фрагмент (больше не нужно) используемого вами изображения плана местности, это вероятно пригодится чтоб понять как лучше решить поставленную задачу Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 15.04.2014 в 04:57. |
#10
|
|||
|
|||
![]() Безымянный.png вот вид программы.
Код:
if (x>918) and (X<990) then begin if (y>2456) and (y<2512) then begin If LoadImage<>'Штаб тыла' then begin Image5.Picture.LoadFromFile('..\Foto\Тыл.jpg'); LoadImage:='Штаб тыла'; end else begin panel2.Visible:=FALSE; Image5.Picture.Create; Image5.Picture:= nil;; LoadImage:=''; end; end; end; понял саму концепцию-надо создать БД с координатами зданий и по перемещению курсора сверять с БД и при совпадении выводить картинку. но как это сделать ума не приложу.... код на событии Image1MouseMove Код:
function GetImageName(const X, Y: Integer): string; begin if (X > 918) and (X < 990) and (Y > 2456) and (Y < 2512) then // это для демонстрации, в реальном приложении ищем по базе Result:= '..\Foto\Тыл.jpg' else Result:= ''; end; procedure Form1.Image1MouseMove(...); var NewImageName: string; begin NewImageName:= GetImageName(X, Y); if NewImageName = '' then Image5.Visible:= False else if NewImageName <> LoadImage then begin Image5.Visible:= True; Image5.Picture.LoadFromFile(NewImageName); LoadImage:= NewImageName; end; end; сделан такой кусок кода. помогите связать с бд пожалуйста. как бд должна выглядеть... Последний раз редактировалось M.A.D.M.A.N., 16.04.2014 в 09:45. |
#11
|
||||
|
||||
![]() а какая бд устроена таблицы как ?
ты хочеш чтоб за тебя зделали всё ? братишка,я когда в бане был нормально,20 раз правила прочитал,там сказано одна тема один вопрос а ты все в одну тему столка,небо не видело такого позорного братишки как ты . |
#12
|
||||
|
||||
![]() Цитата:
+ на этом форуме от своего сленга придется отказаться, либо использовать его в другом месте |
#13
|
|||
|
|||
![]() Всем спасибо огромное за участие!!! Удачи Вам в ваших начинаниях.
|