Конференция "Начинающим" » Запись инфомации по помещению в БД
 
  • Axel54 © (13.08.10 17:03) [0]
    Здравствуйте! Столкнулся с проблемой. Нужно написать программу,которая бы загружала схему помещения,например план этажа. Далее нужно,чтобы при нажатии по какому-нибудь элементу схемы,например комната №1,появлялась форма для заполнения информации по этой комнате.
    Это вообще возможно на Delphi ли нет?
  • 12 © (13.08.10 17:12) [1]
    image1.onClick ?
  • Ega23 © (13.08.10 17:47) [2]
    На Delphi это возможно.
  • 12 © (16.08.10 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 © (16.08.10 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 © (16.08.10 17:08) [5]

    > Axel54 ©   (13.08.10 17:03)  

    купи MS Visio и не парься)
  • ixen (18.08.10 08:28) [6]
    я бы поступил так... разработал бы базу данных со следующими таблицами:
    1) таблица имеющще первичный ключ и blob поле для хранения изображения схемы, например, в формате JPG.
    2) таблица содержащее координаты комнат относительно рисунка. Каждая строчка это отдельная комната + доп. поле ссылка на ключ таблицы со схемами.
    3) таблица параметры комнаты + ключ от таблицы с координатами

    кликнув по картинке определять координаты клика и сверять вхождения с комнатой в базе и вытаскивать по ключу из 3-й таблицы параметры комнаты...
  • Ega23 © (18.08.10 17:10) [7]

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

    Таблица с картинками (Id, Namt, Data)
    Иерархическая таблица со структурой объекта
    ( Id,
     ParID,
     ImgID (ссылка на картинку),
     ImgBounds (координаты относительно картинки),
     ParentBounds (координаты относительно парента)
    )
    Начинается всё от обязательного рута, рут - без картинки.
    Как-то так.
  • Ega23 © (18.08.10 18:00) [8]
    А ну да, ссылки на картинки тоже две. Одна - как себя отображать на паренте, другая - как себя отображать, если ты и есть парент.
  • Юрий Зотов © (18.08.10 18:38) [9]
    Ув. господа, а куда пойдут ваши хранимые в БД координаты при изменении разрешения экрана?

    :o)
  • Ega23 © (19.08.10 11:45) [10]

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


    Координаты относительно рисунка. Ему на разрешение экрана пофигу, не?
  • Юрий Зотов © (19.08.10 12:30) [11]

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

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

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

    По сути, эта задачка звучит так: сделать мини-автокад (архикад и т.п.). Сделать, конечно, можно но не так-то просто. Кавалерийские наскоки тут явно не прокатят.
  • Ega23 © (19.08.10 13:59) [12]

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


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

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


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

    Чтоб такого не происходило, в таких системах обычно координаты на плане хранятся во своем внутреннем представлении, обычно в вещественных значениях. При выводе и вводе пересчитываются из/в это представление.
  • Юрий Зотов © (19.08.10 14:10) [14]
    > Ega23 ©   (19.08.10 13:59) [12]

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

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

    А тут такого движка нет - так что масштабировать придется ручками.
  • Юрий Зотов © (19.08.10 14:12) [15]

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

    Именно так. О чем я и говорил.
  • Anatoly Podgoretsky © (19.08.10 14:29) [16]
    > Ega23  (19.08.2010 13:59:12)  [12]

    И чтобы играла неземная музыка.
  • Ega23 © (19.08.10 14:32) [17]

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


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


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


    У нас и растровый движок был, где все эти штуки сами прорисовывали. GLScene - это когда понадобилось, чтобы ещё и танчики ездили. И животноводство.
 
Конференция "Начинающим" » Запись инфомации по помещению в БД
Есть новые Нет новых   [134434   +27][b:0][p:0.001]