Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.006 c
15-1280688344
Медвежонок Пятачок
2010-08-01 22:45
2010.11.14
Вон оно чо, михалыч!


15-1280511663
Darth Revan
2010-07-30 21:41
2010.11.14
HowTo: Полностью избавиться от меток.


15-1280731176
nod32
2010-08-02 10:39
2010.11.14
создание самопального сервера обновлений nod32


15-1281080893
Knight
2010-08-06 11:48
2010.11.14
Как сделать быструю загрузку файла для просмотра?


15-1280471380
tesseract
2010-07-30 10:29
2010.11.14
Всех причастных с днём сисамдмина.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский