![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись инфомации по помещению в БД
Axel54 © (2010-08-13 17:03:00)Здравствуйте! Столкнулся с проблемой. Нужно написать программу,которая бы загружала схему помещения,например план этажа. Далее нужно,чтобы при нажатии по какому-нибудь элементу схемы,например комната №1,появлялась форма для заполнения информации по этой комнате.
Это вообще возможно на Delphi ли нет?
Ega23 (2010-08-19 14:32:00) [1]
> Чтоб такого не происходило, в таких системах обычно координаты
> на плане хранятся во своем внутреннем представлении, обычно
> в вещественных значениях. При выводе и вводе пересчитываются
> из/в это представление.
Ну это естественно.
> Ключевое слово - "Мы использовали GLScene (OpenGL движок
> под Delphi)".
У нас и растровый движок был, где все эти штуки сами прорисовывали. GLScene - это когда понадобилось, чтобы ещё и танчики ездили. И животноводство.
Anatoly Podgoretsky (2010-08-19 14:29:00) [2]> Ega23 (19.08.2010 13:59:12) [12]
И чтобы играла неземная музыка.
Юрий Зотов (2010-08-19 14:12:00) [3]
> DVM © (19.08.10 14:09) [13]
Именно так. О чем я и говорил.
Юрий Зотов (2010-08-19 14:10:00) [4]> Ega23 © (19.08.10 13:59) [12]
Ключевое слово - "Мы использовали GLScene (OpenGL движок под Delphi)".
Вот он-то, похоже, все и масштабировал, как надо. Сам. Поэтому заказчики и стонали от восторга, а не от горя.
А тут такого движка нет - так что масштабировать придется ручками.
DVM (2010-08-19 14:09:00) [5]
> Юрий Зотов © (19.08.10 12:30) [11]
> Что произойдет при масштабировании формы (а вместе с ней
> и картинки) под другое разрешение экрана, размер шрифта
> и пр. ?
Чтоб такого не происходило, в таких системах обычно координаты на плане хранятся во своем внутреннем представлении, обычно в вещественных значениях. При выводе и вводе пересчитываются из/в это представление.
Ega23 (2010-08-19 13:59:00) [6]
> Что произойдет при масштабировании формы (а вместе с ней
> и картинки) под другое разрешение экрана, размер шрифта
> и пр. ?
Юр, я же не с потолка эту структуру взял. Всё это в реальной системе использовалось, где именно 3-х мерная модель объекта была, где можно было кликнуть на здание и оказаться внутри, где видно было расположение разных датчиков охранных и т.п.
Всё отлично работает. Графика - да, скорее векторная. Мы использовали GLScene (OpenGL движок под Delphi), всё было красиво и заказчики стонали от восторга.
Можно и на растровой сделать. Кстати, в таких системах очень часто заказчики требуют убрать возможность масштабирования. Типа, притупляет внимание оператора.
Юрий Зотов (2010-08-19 12:30:00) [7]
> Ega23 © (19.08.10 11:45) [10]
Что произойдет при масштабировании формы (а вместе с ней и картинки) под другое разрешение экрана, размер шрифта и пр. ?
Хранимые в БД координаты (хоть абсолютные, хоть относительно картинки), очевидно, окажутся неверными и потребуют пересчета. Типичный пример отображения ВЕКТОРНОЙ графики (поэтому TImage с его РАСТРОВОЙ графикой тут, IMHO, не канает, скорее подойдет TPaintBox c ручной прорисовкой плана на основе информации из БД).
По сути, эта задачка звучит так: сделать мини-автокад (архикад и т.п.). Сделать, конечно, можно но не так-то просто. Кавалерийские наскоки тут явно не прокатят.
Ega23 (2010-08-19 11:45:00) [8]
> Ув. господа, а куда пойдут ваши хранимые в БД координаты
> при изменении разрешения экрана?
Координаты относительно рисунка. Ему на разрешение экрана пофигу, не?
Юрий Зотов (2010-08-18 18:38:00) [9]Ув. господа, а куда пойдут ваши хранимые в БД координаты при изменении разрешения экрана?
:o)
Ega23 (2010-08-18 18:00:00) [10]А ну да, ссылки на картинки тоже две. Одна - как себя отображать на паренте, другая - как себя отображать, если ты и есть парент.
Ega23 (2010-08-18 17:10:00) [11]
> я бы поступил так...
Таблица с картинками (Id, Namt, Data)
Иерархическая таблица со структурой объекта
( Id,
ParID,
ImgID (ссылка на картинку),
ImgBounds (координаты относительно картинки),
ParentBounds (координаты относительно парента)
)
Начинается всё от обязательного рута, рут - без картинки.
Как-то так.
ixen (2010-08-18 08:28:00) [12]я бы поступил так... разработал бы базу данных со следующими таблицами:
1) таблица имеющще первичный ключ и blob поле для хранения изображения схемы, например, в формате JPG.
2) таблица содержащее координаты комнат относительно рисунка. Каждая строчка это отдельная комната + доп. поле ссылка на ключ таблицы со схемами.
3) таблица параметры комнаты + ключ от таблицы с координатами
кликнув по картинке определять координаты клика и сверять вхождения с комнатой в базе и вытаскивать по ключу из 3-й таблицы параметры комнаты...
MonoLife (2010-08-16 17:08:00) [13]
> Axel54 © (13.08.10 17:03)
купи MS Visio и не парься)
Petr V. Abramov (2010-08-16 10:23:00) [14]
> 12 © (16.08.10 09:18) [3]
> if (X > 20) and (X < 40) and (Y > 50) and (Y < 60) then
> //если ткнули в таулет
не пройдет, у WC дверь обычно бывает :)
12 (2010-08-16 09:18:00) [15]> 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;
Ega23 (2010-08-13 17:47:00) [16]На Delphi это возможно.
12 (2010-08-13 17:12:00) [17]image1.onClick ?