Jump to content

loginov_d

Members
  • Posts

    4
  • Joined

  • Last visited

loginov_d's Achievements

Newbie

Newbie (1/4)

1

Reputation

  1. Как оказалось, UniGui передает высоту рабочей области скроллбокса только один раз. Используется свойство ScrollHeight, которое было определено автоматически в дизайн-тайме (в инспекторе объектов его не видно). Мне же потребовалось расположить на скроллбоксе несколько TUnimPanel со свойством Height=auto. Получилось, что реальная суммарная высота панелек отличается от размера, который был в свойстве ScrollHeight, в результате компоненты в скроллбоксе обрезались то снизу, то сверху. Я потратил почти весь день на то, чтобы решить эту проблему. Решить её только на стороне браузера не получилось, поскольку UniGui прячет некоторые детали скроллбокса. Если я вызываю UnimScrollBox1.ScrollHeight := 1000, то видно, что UniGui обращается к какому-то дополнительному объекту и именно для него вызывает setHeight(1000). Как достучаться до этого объекта из кода JS - я не разобрался. Пришлось прибегнуть в Ajax-запросу. Для UnimScrollBox1 написал клиентский обработчик: function resize(sender, info, eOpts) { var h = MainmForm.UnimPanel1.el.dom.offsetHeight + MainmForm.UnimPanel2.el.dom.offsetHeight + MainmForm.UnimPanel3.el.dom.offsetHeight + MainmForm.UnimPanel4.el.dom.offsetHeight; ajaxRequest(MainmForm.UnimScrollBox1, 'SetScrollHeight', { "sh1": h }); } Обработка Ajax-запроса: procedure TMainmForm.UnimScrollBox1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName = 'SetScrollHeight' then UnimScrollBox1.ScrollHeight := StrToInt(Params.Values['sh1']); end; Есть ли идеи как решить задачу более красиво? Неплохо было бы, если бы данную задачу мог решить UniGui без написания дополнительного кода.
  2. Кстати, компонент TUnimFieldSet обеспечивает автоматическую настройку высоты, но у него другая проблема: если компонентов TUnimFieldSet несколько, то между ними образуется большое пространство, которое невозможно убрать с помощью имеющихся настроек (это - на последней триальной версии)
  3. Моя организация приняла решение разработать веб-приложение с использованием UniGui. Благодаря поддержки Sencha ExtJS 6.5.3, теперь можно использовать в UniGui набор компонентов Mobile, которые используют компоненты Modern из ExtJS. Благодаря этому, приложением можно пользоваться на смартфонах, на планшетах и на обычных компьютерах. Большой недостаток UniGui заключается в том, что документации почти никакой нет, огромное время приходится тратить на то, чтобы разобраться с элементарными вещами. Вчера я весь день потратил на то, чтобы заставить компоненты TUnimPanel / TUnimContainerPanel автоматически изменять свою высоту в зависимости от расположенных на них компонентов. Я взял панель TUnimContainerPanel, установил тип вывавнивания - клиентское, установил свойство vbox, изменил для наглядности цвет, кинул на него несколько компонентов TUnimEdit (Width=100%) и пытался добиться того, чтобы TUnimContainerPanel менял свою высоту автоматически в зависимости от количества компонентов TUnimEdit. Это очень важно для того, чтобы программа выглядела красиво на смартфонах, планшетах и на обычных компьютерах. Нигде в интернете я не нашёл, как это сделать. Этого нет в документации UniGui. Этого нет в результатах поиска на форуме UniGui. В результате в голову пришла мысль проверить какие варианты могут быть для высоты элементов в HTML. Поиск показал, что существует значение "auto", я установил LayoutConfig.Height = 'auto' и всё заработало как я и хотел. Ура! У меня есть огромная просьба: сделайте у компонентов TUnimPanel / TUnimContainerPanel какое-нибудь свойство, например HeightAutoSize, при выставлении которого будет автоматически выставляться LayoutConfig.Height = 'auto'. Это позволит сэкономить огромное время для других разработчиков. P.S. Хотел перевести на английский и расположить в разделе "Общее", однако гугл-переводчик очень сильно искажает смысл моего сообщения. Если не затруднит, дайте знать о моём предложении разработчикам!
×
×
  • Create New...