Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.14;
Скачать: CL | DM;

Вниз

Запись инфомации по помещению в БД   Найти похожие ветки 

 
Axel54 ©   (2010-08-13 17:03) [0]

Здравствуйте! Столкнулся с проблемой. Нужно написать программу,которая бы загружала схему помещения,например план этажа. Далее нужно,чтобы при нажатии по какому-нибудь элементу схемы,например комната №1,появлялась форма для заполнения информации по этой комнате.
Это вообще возможно на Delphi ли нет?


 
12 ©   (2010-08-13 17:12) [1]

image1.onClick ?


 
Ega23 ©   (2010-08-13 17:47) [2]

На Delphi это возможно.


 
12 ©   (2010-08-16 09:18) [3]

> image1.onClick ?

onMouseDown
там XY есть

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if  (X > 20) and (X < 40) and (Y > 50) and (Y < 60) then //если ткнули в таулет
  CreateAndShowForRditWCForm;


 
Petr V. Abramov ©   (2010-08-16 10:23) [4]


> 12 ©   (16.08.10 09:18) [3]


>  if  (X > 20) and (X < 40) and (Y > 50) and (Y < 60) then
> //если ткнули в таулет

не пройдет, у WC дверь обычно бывает :)


 
MonoLife ©   (2010-08-16 17:08) [5]


> Axel54 ©   (13.08.10 17:03)  

купи MS Visio и не парься)


 
ixen   (2010-08-18 08:28) [6]

я бы поступил так... разработал бы базу данных со следующими таблицами:
1) таблица имеющще первичный ключ и blob поле для хранения изображения схемы, например, в формате JPG.
2) таблица содержащее координаты комнат относительно рисунка. Каждая строчка это отдельная комната + доп. поле ссылка на ключ таблицы со схемами.
3) таблица параметры комнаты + ключ от таблицы с координатами

кликнув по картинке определять координаты клика и сверять вхождения с комнатой в базе и вытаскивать по ключу из 3-й таблицы параметры комнаты...


 
Ega23 ©   (2010-08-18 17:10) [7]


> я бы поступил так...

Таблица с картинками (Id, Namt, Data)
Иерархическая таблица со структурой объекта
( Id,
 ParID,
 ImgID (ссылка на картинку),
 ImgBounds (координаты относительно картинки),
 ParentBounds (координаты относительно парента)
)
Начинается всё от обязательного рута, рут - без картинки.
Как-то так.


 
Ega23 ©   (2010-08-18 18:00) [8]

А ну да, ссылки на картинки тоже две. Одна - как себя отображать на паренте, другая - как себя отображать, если ты и есть парент.


 
Юрий Зотов ©   (2010-08-18 18:38) [9]

Ув. господа, а куда пойдут ваши хранимые в БД координаты при изменении разрешения экрана?

:o)


 
Ega23 ©   (2010-08-19 11:45) [10]


> Ув. господа, а куда пойдут ваши хранимые в БД координаты
> при изменении разрешения экрана?


Координаты относительно рисунка. Ему на разрешение экрана пофигу, не?


 
Юрий Зотов ©   (2010-08-19 12:30) [11]


> Ega23 ©   (19.08.10 11:45) [10]

Что произойдет при масштабировании формы (а вместе с ней и картинки) под другое разрешение экрана, размер шрифта и пр. ?

Хранимые в БД координаты (хоть абсолютные, хоть относительно картинки), очевидно, окажутся неверными и потребуют пересчета. Типичный пример отображения ВЕКТОРНОЙ графики (поэтому TImage с его РАСТРОВОЙ графикой тут, IMHO, не канает, скорее подойдет TPaintBox c ручной прорисовкой плана на основе информации из БД).

По сути, эта задачка звучит так: сделать мини-автокад (архикад и т.п.). Сделать, конечно, можно но не так-то просто. Кавалерийские наскоки тут явно не прокатят.


 
Ega23 ©   (2010-08-19 13:59) [12]


> Что произойдет при масштабировании формы (а вместе с ней
> и картинки) под другое разрешение экрана, размер шрифта
> и пр. ?


Юр, я же не с потолка эту структуру взял. Всё это в реальной системе использовалось, где именно 3-х мерная модель объекта была, где можно было кликнуть на здание и оказаться внутри, где видно было расположение разных датчиков охранных и т.п.
Всё отлично работает. Графика - да, скорее векторная. Мы использовали GLScene (OpenGL движок под Delphi), всё было красиво и заказчики стонали от восторга.
Можно и на растровой сделать. Кстати, в таких системах очень часто заказчики требуют убрать возможность масштабирования. Типа, притупляет внимание оператора.


 
DVM ©   (2010-08-19 14:09) [13]


> Юрий Зотов ©   (19.08.10 12:30) [11]


> Что произойдет при масштабировании формы (а вместе с ней
> и картинки) под другое разрешение экрана, размер шрифта
> и пр. ?

Чтоб такого не происходило, в таких системах обычно координаты на плане хранятся во своем внутреннем представлении, обычно в вещественных значениях. При выводе и вводе пересчитываются из/в это представление.


 
Юрий Зотов ©   (2010-08-19 14:10) [14]

> Ega23 ©   (19.08.10 13:59) [12]

Ключевое слово - "Мы использовали GLScene (OpenGL движок под Delphi)".

Вот он-то, похоже, все и масштабировал, как надо. Сам. Поэтому заказчики и стонали от восторга, а не от горя.

А тут такого движка нет - так что масштабировать придется ручками.


 
Юрий Зотов ©   (2010-08-19 14:12) [15]


> DVM ©   (19.08.10 14:09) [13]

Именно так. О чем я и говорил.


 
Anatoly Podgoretsky ©   (2010-08-19 14:29) [16]

> Ega23  (19.08.2010 13:59:12)  [12]

И чтобы играла неземная музыка.


 
Ega23 ©   (2010-08-19 14:32) [17]


> Чтоб такого не происходило, в таких системах обычно координаты
> на плане хранятся во своем внутреннем представлении, обычно
> в вещественных значениях. При выводе и вводе пересчитываются
> из/в это представление.


Ну это естественно.


> Ключевое слово - "Мы использовали GLScene (OpenGL движок
> под Delphi)".


У нас и растровый движок был, где все эти штуки сами прорисовывали. GLScene - это когда понадобилось, чтобы ещё и танчики ездили. И животноводство.



Страницы: 1 вся ветка

Текущий архив: 2010.11.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
15-1280521768
Юрий
2010-07-31 00:29
2010.11.14
С днем рождения ! 31 июля 2010 суббота


2-1282080138
подмастерье
2010-08-18 01:22
2010.11.14
Изменение свойств формы


15-1280924062
oxffff
2010-08-04 16:14
2010.11.14
Yar.net для Rouse


15-1280736014
ocean
2010-08-02 12:00
2010.11.14
Выбрать ОС


2-1282109949
03111978
2010-08-18 09:39
2010.11.14
Вертикальное расположение заголовков