Форум: "Начинающим";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
ВнизЗапись инфомации по помещению в БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c