• 0
x11

Нет прокрутки VertScrollBox + GridPanelLayout

Вопросы

Мультиплатформенное приложение. Проверяю на Windows (на Android пока не проверял).

На форме лежит TVertScrollBox, а внутри этого ScrollBox`а лежит GridPanelLayout.

Проблема в том, что у VertScrollBox не появляется полоса прокрутки.

 

Изначально задача такая. На форме мобильного приложения для смартфона может быть много разных компонент. И нужно иметь возможность прокручивать форму, а вернее компоненты, вверх вниз.

Сейчас пытаюсь сделать так. Компонента TGridPanelLayout разделена 2 колонки: подпись слева (в левой колонке TLabel) и в правой колонке компоненты редактирования (TEdit, TComboBox и другие).

Пытаюсь спроектировать форму редактирования объявления, где много разных параметров: дата, тип, картинки, многострочный текст, выпадающие списки, кнопки и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 ответа на этот вопрос

  • 0

1). Задайте для GridPanelLayout выравнивание Top.
2). Для всех строк TGridPanelLayout.TRowItem, добавляемых в RowCollection, задайте свойство SizeStyle - Absolute и значение Value отличное от 0.

Изменено пользователем enatechno

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

подпись слева (в левой колонке TLabel) и в правой колонке компоненты редактирования (TEdit, TComboBox и другие).

В мобильных приложениях надо экономить место. Поэтому лэйбл положите прямо внутрь Tedit и TCombobox или Memo (можно сделать в инспекторе объектов), поставьте ему enabled := false чтобы он был серого цвета. Затем на OnChange или OnChangeTracking проверяйте кол. символов и прячьте лэйбл: 

Label1.Visible :=   Edit1.Text.Length = 0;

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
17 минут назад, ENRGY сказал:

В мобильных приложениях надо экономить место. Поэтому лэйбл положите прямо внутрь Tedit и TCombobox или Memo (можно сделать в инспекторе объектов), поставьте ему enabled := false чтобы он был серого цвета. Затем на OnChange или OnChangeTracking проверяйте кол. символов и прячьте лэйбл: 

Label1.Visible :=   Edit1.Text.Length = 0;

Эта плюшка уже есть в TEdit, называется TEdit.TextPrompt 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 часа назад, x11 сказал:

Мультиплатформенное приложение. Проверяю на Windows (на Android пока не проверял).

На форме лежит TVertScrollBox, а внутри этого ScrollBox`а лежит GridPanelLayout.

Проблема в том, что у VertScrollBox не появляется полоса прокрутки.

 

Изначально задача такая. На форме мобильного приложения для смартфона может быть много разных компонент. И нужно иметь возможность прокручивать форму, а вернее компоненты, вверх вниз.

Сейчас пытаюсь сделать так. Компонента TGridPanelLayout разделена 2 колонки: подпись слева (в левой колонке TLabel) и в правой колонке компоненты редактирования (TEdit, TComboBox и другие).

Пытаюсь спроектировать форму редактирования объявления, где много разных параметров: дата, тип, картинки, многострочный текст, выпадающие списки, кнопки и т.д.

Я для таких целей использую TListBox. Проще и удобнее. Плюс некоторые строки по мере надобности можно скрывать/показывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
8 часов назад, Евгений Корепов сказал:

Я для таких целей использую TListBox. Проще и удобнее. Плюс некоторые строки по мере надобности можно скрывать/показывать.

 

хмммм, неплохо, а где и как можно поизучать матчасть и примеры о том, как вставлять компоненты в TListBox или в TListView?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 минут назад, x11 сказал:

 

хмммм, неплохо, а где и как можно поизучать матчасть и примеры о том, как вставлять компоненты в TListBox или в TListView?

Кидаете на форму TListBox, правой кнопкой по нему и через контекстное меню создаете TListBoxItem. В TListBoxItem кидаете TLabel с выравниванием по левому краю, пишите текст "Это включает такую то фичу". В тот же TListBoxItem кидаете нужный контрол, к примеру TSwitch с выравниванием по правому краю и привязываете к нему нужный код. Все, повторяете необходимое количество раз. Если нужно много подобного - проделываете тоже самое в процессе выполнения приложения программно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот именно, что хорошо бы без TLabel, чтобы у контейнера была своя подпись.

Шикарное решение у DevExpress в TcxLayoutControl. И пользлватель сам может редактировать форму в Runtime.

Изменено пользователем x11

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
32 минуты назад, x11 сказал:

Вот именно, что хорошо бы без TLabel, чтобы у контейнера была своя подпись.

Шикарное решение у DevExpress в TcxLayoutControl. И пользлватель сам может редактировать форму в Runtime.

Элементарно - TListBoxItem.Text:='Это включает такую то фичу';

Изменено пользователем Евгений Корепов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

и этот TListBoxItem.Text можно разместить слева/справа/сверху основной компоненты?

 

сейчас нету IDE под рукой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
8 минут назад, x11 сказал:

и этот TListBoxItem.Text можно разместить слева/справа/сверху основной компоненты?

 

сейчас нету IDE под рукой

Посмотрите стандартные примеры ListBox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

зашёл в папку Embarcadero\Studio\18.0\Samples

 

Screenshot_10.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 31.03.2017 в 09:11, Евгений Корепов сказал:

TListBox

 

А вот GridPanelLayout удобнее тем, что у колонку с подписями можно легко изменить ширину. А у ListBox придётся менять каждый ListBoxItem :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Зато в ListBoxItem можно разместить несколько компонент, как на панели.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Я не разобрался, как менять ListBoxItem`ы местами в Design time.

Изменено пользователем x11

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, x11 сказал:

Я не разобрался, как менять ListBoxItem`ы местами в Design time.

Правой кнопкой на ListBox, далее "Items Editor"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да, спасибо. Уже и сам догадался. Не успел написать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 31.03.2017 в 00:33, Евгений Корепов сказал:

Я для таких целей использую TListBox

 

У меня получается очень неудобно.

При попытке прокрутить список пальцем на смартфоне, т.е. потянуть его вверх или вниз, получается тап (click) и всплывает клавиатура постоянно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Сейчас Item`ом у ListBox`а пока не много, около 20, но список при пролистывании вверх и вниз пальцем заметно тормозит. При при тапе по Item`у видна "визуализация выбора" и она тоже заметно тормозит.

А смарт не самый плохой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 03.04.2017 в 22:16, x11 сказал:

Сейчас Item`ом у ListBox`а пока не много, около 20, но список при пролистывании вверх и вниз пальцем заметно тормозит. При при тапе по Item`у видна "визуализация выбора" и она тоже заметно тормозит.

А смарт не самый плохой.

ListBox всегда был тормозной. Поэтому лучше использовать ListView (если версия НЕ Токио) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Берлин. А что если Токио? Договаривайте.

Т.е. в ListView тоже можно навставлять много разных компонент?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 часов назад, x11 сказал:

Берлин. А что если Токио? Договаривайте.

Т.е. в ListView тоже можно навставлять много разных компонент?

В Токио ЛистВью чуток тормознее.

Вот же выше ссылка на видео от krapotkin показывающее что можно делать с ListView

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

ListBox - тормоз

ListView - ещё тормознее

т.е. в FMX до сих пор нет нормальной компоненты для ввода данных списком.

Может кто посоветует нормальную компоненту, чтобы можно было визуально сделать дизайн Itema? Чтобы отображать данные из БД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От sezavasasilov
      Добрый день!
      На форме есть TVertScrollBox с активной прокруткой. Пытаюсь придумать как можно сделать подобие обновления страницы плавным свайпом вниз. TGestureManager срабатывает только после фактического завершения жеста. Хотелось бы при скролле вверх, достижения верхнего положения и последующего свайпа вниз плавно увеличивать Margin.Top следуя за пальцем.
      Всё осложняется тем, что объекты внутри TVertScrollBox так же должны реагировать на действия пользователя, поэтому отключать их нельзя. 
      Сначала хотел отслеживать события TGestureManager с проверкой TVertScrollBox .ViewportPosition.IsZero, но интерактивности так и не добился.
      Буду рад любым идеям.
    • От Anasazi
      Доброго времени суток. Помогите пожалуйста разобраться с динамическим созданием компонентов.
      Хочу создать на vertscrollbox несколько rectangle, На каждом из rectangle создать хочу попробовать создать tbutton и tlabel.
      Пока смог только создать несколько TRectangle. Получился вот такой:
      procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin for i :=1 to 30 do with TRectangle.Create(VertScrollBox1) do Parent:=VertScrollBox1 end; procedure TForm1.FormResize(Sender: TObject); var i: integer; begin for i :=0 to Box1.ComponentCount-1 do begin if box1.Components is TRectangle then with TRectangle(box1.Components) do begin Align := TAlignLayout.Top; Margins.Left:=10; Margins.Top:=15; Margins.Right:=15; end; end;  
      Подскажите пожалуйста как на каждом из созданных TRectangle создать Tbutton и Tlabel?
    • От ENERGY
      Что лучше в плане производительности использовать из этих компонентов для Android и iOS?
      Мне показалось что TlistBox как то дольше создается и грузится (я использую фрэймы (TFrame), которые создаются в RunTime, но сделаны они в Design Time) 
      На компоненте будут лежать Editbox 2x, лэйблы, Tmemo, DateEdit, TimeEdit.
      TListBox удобен тем что (я так понимаю) он автоматом подстроит визуальный стиль заголовков и пунктов под текущую систему (fix me?).
      А вот TScrollBar это не сделает. Кстати, если использовать этот компонент, скроллбар, как отделить пункты рамкой (горизонтальной чертой?). Может есть какой то межплатформенный TBorder, который отображается в нужной стиле? А если использовать TLine то какого цвета его делать (DarkGray?), кто нибудь знает?
      Спасибо.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу