Перейти к содержанию
  • Регистрация
  • 0
chaplin.u@gmail.com

Как сделать разделители между итемами

Вопрос

Как сделать разделители между итемами. Как на картинке.

listview.png

Изменено пользователем Andrey Efimov
Заголовок исправлен

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


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

Рекомендуемые сообщения

  • 0

Ну если лист бокс - можно сделать кастомный листИтем. Мало данных что бы ответить более точно

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


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

а какие данные ещё нужно ? у стандартного листбокса нет каких-то полосок между итемами а у этого есть. можно конечно ставить панели на каждый итем но потом придётся обращаться не детям а к внукам а это не удобно.

что такое кастомный итем ? может люди закончившие курсы по стилям могут кастомнуть стиль листбокса ?  есть желающие ?

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


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

Речь идет (RageGod спрашивает) - что именно Вы используете для этого "списка"?

Если TListBox и используете TListBoxItem, то все очень просто! Измените стиль для 'listboxitemstyle', добавив ему линию или битмап с выравниванием Bottom, толщиной в один пиксель (типа того...) и все.

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

А если Вы используете TListView, то раньше надо было делать все "ручками", в коде, но это не сложно совсем. А сейчас вообще можно в конструкторе!

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


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

Если вопрос задан в теме TListBox -> стилизация то видимо речь идёт об TListBox.  Курсы я не кончал так что стиль поменять не могу. если это так просто - сделайте это пожалуйста в качестве тренировки.

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


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

решение как я и предполагал простое. У ListBox есть свойство GroupingKind. Так вот по дефолту оно стоит Plaint (без зазоров) а когда меняешь на  Grouped появляются полосочки как я и хотел.

странно что никто на форуме этого не знал...

 

Untitled.png

Изменено пользователем chaplin.u@gmail.com
добавил картинку

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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

    • От Вячеслав
      Добрый день, форумчане! Столкнулся со следующей задачей: 
      Имеется TListBox с 32 итемами, задаются в DesignTime. В некоторых ситуациях требуется убрать половину, оставить только первые 16 итемов. Я делаю лишние невидимыми, но при этом область прокрутки листбокса остается прежней и излишне большой. В связи с этим вопрос: можно ли как-то ограничить область прокрутки? 
      XE7, Windows.
    • От x11
      Можно ли во время работы программы вызвать Items editor, который я вызываю во время дизайна приложения?
      Или свой лисапет создавать?
    • От x11
      Процедура добавления Item
       
      procedure TfmEditObject.AddPhoto(Image: TBitmap); Var item: TListBoxItem; imageV: TImageViewer; begin item := TListBoxItem.Create(lbPhotos); item.parent := lbPhotos; item.text := ''; item.Width := lbPhotos.Width; item.PopupMenu := PopupMenu1; imageV := TImageViewer.Create(lbPhotos); imageV.HitTest := False; imageV.Parent := item; imageV.Align := TAlignLayout.Client; imageV.Bitmap.Assign(image); item.SetFocus; end; У popupmenu есть 2 пункта, привязанных к Action.
       
      Gestures срабатывает на "long tap"
      procedure TfmEditObject.lbPhotosGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); var c: IControl; ListBox: TListBox; lbxPoint: TPointF; ListBoxItem: TListBoxItem; begin if EventInfo.GestureID = igiLongTap then if (sender is TListBox) and assigned(TListBox(sender).Selected) then begin c := ObjectAtPoint(EventInfo.Location); if Assigned(c) then if Assigned(c.GetObject) then if c.GetObject is TListBox then begin ListBox := TListBox(c.GetObject); lbxPoint := ListBox.AbsoluteToLocal(EventInfo.Location); ListBoxItem := ListBox.ItemByPoint(lbxPoint.X, lbxPoint.Y); if Assigned(ListBoxItem) then PopupMenu1.Popup(lbxPoint.X, lbxPoint.Y); Handled := True; end; end; end;  
      Ставил точку останова, видно, что до строки "PopupMenu1.Popup(lbxPoint.X, lbxPoint.Y);" доходит.
      Если программа работает на Windows, то меню отображается по правой кнопке мышки, а на андроид устройстве меню не отображается по Long Tap.
       
      Как видно из кода, то меню прикручивается к ListBoxItem, а непосредственно к TListBox меню прикрутил в дизайне.
    • От x11
      Хочу реализовать прокрутку фото с помощью TListBox.
      Пока что в дизайне добавил пару Item и кинул на них TImageViewer, ну и картинку туда вставил.
      В свойстве TListStyle указал Horizontal. На Windows не листается мышкой влево/вправо, но есть хотя бы полоса прокрутки внизу.
      На андроид-устройстве и не листается, и полосы прокрутки нет вообще.
      Это связано с этим вопросом http://fire-monkey.ru/topic/4301-выводотображение-нескольких-картинок-на-форме
    • От x11
      В свойстве TListBox.ListStyle установил значение Horizontal. Список поменял вид.
      Теперь ставлю Vertical, но ничего не происходит.
      Как вернуть стиль списка обратно к вертикальному?
    • От Euvene
      Добрый день, возникла такая проблемка: при добавлении в ListBoxItem компонента TEdit если поставить ему TControlType::Platform он вылазит за пределы ListBox но при Styled все норм, кто нибудь сталкивался и как с этим бороться?


    • От ENERGY
      Что лучше в плане производительности использовать из этих компонентов для Android и iOS?
      Мне показалось что TlistBox как то дольше создается и грузится (я использую фрэймы (TFrame), которые создаются в RunTime, но сделаны они в Design Time) 
      На компоненте будут лежать Editbox 2x, лэйблы, Tmemo, DateEdit, TimeEdit.
      TListBox удобен тем что (я так понимаю) он автоматом подстроит визуальный стиль заголовков и пунктов под текущую систему (fix me?).
      А вот TScrollBar это не сделает. Кстати, если использовать этот компонент, скроллбар, как отделить пункты рамкой (горизонтальной чертой?). Может есть какой то межплатформенный TBorder, который отображается в нужной стиле? А если использовать TLine то какого цвета его делать (DarkGray?), кто нибудь знает?
      Спасибо.
    • От AlexG
      Привет друзья!
      Возникла странная ситуация при работе с TListBox. А именно - при попытке прокрутки списка в его конец.
      Условно:
      - есть список итемов (сообщения чата);
      - загрузка сообщений происходит в процедуре "синхронизированной" с главным потоком и заключена в TListBox(listbox1).BeginUpdate  и TListBox(listbox1).EndUpdate;
      - все замечательно грузится
      НО! После загрузки Итемов требуется прокрутить список в его конец. И вот тут начинаются "приколы".
      Как только не пытаться прокрутить список в его конец (разные способы, см.ниже) - всегда получается, что список прокручивается до конца, но немного "откатывается" вверх. Размер его автоматического скролла "обратно" зависит от количества Item в TListBox! Чем больше кол-во Item - тем больше назад откатывается скролл.
      Способы прокрутки в конец списка - значения не имеют. Всегда одно и то же.
      procedure TChatListBoxEx.ScrollToLast; var   Item: TListBoxItem; begin // ВАРИАНТ 1   Item := ListItems[Items.Count - 1];   if Assigned(Item) then     ScrollToItem(Item); // ВАРИАНТ 2   ViewportPosition:= TPointF.Create(0, Item.ParentedRect.Top); // ВАРИАНТ 3   ScrollBy(0, ViewportPosition.Y - Item.ParentedRect.Top); // ВАРИАНТ 4   BeginUpdate;   try     ItemIndex := Items.Count - 1;   finally     EndUpdate;   end; end; Предупреждая ваши вопросы, сразу скажу - пробовал и другие варианты, просто перечислять не стал все. Пробовал и эмитировать нажатие клавиши END при "активном" списке.
      Все синхронизируется, типа 
      TThread.Synchronize(nil, listbox1.ScrollToLast); Эффект всегда один и тот же...
      НО! Если загрузить список, независимо от кол-ва элементов списка, а потом в программе вызвать ScrollToLast, подождав некоторое время, а не сразу, например по нажатию на какую-нибудь кнопку, то список прокрутится в конец НОРМАЛЬНО!
      Будьте добры - кто сталкивался с подобной ситуацией, или кто что-то может посоветовать?
      Или наши Гуру смогут ответить на этот вопрос?
      Видео, чтобы было понятнее что происходит, прилагаю.
      RAD Studio 10.1 Berlin (эффект наблюдается на всех версиях Windows - XP, Vista, 7, 8, 10. На других ОС пока не пробовал...)
      Заранее благодарен!
      P.S. Возник вопрос (как вариант решения проблемы) - как узнать, что произошло событие окончания отрисовки TListBox? А именно - список заполнился, выполнилась отрисовка и можно прокручивать.
    • От M1shQa
      Есть один листбокс..) В общем парился я парился, так и не понял как запилить стиль по человечески для итемов в боксе и нашел кнопку Edit default Style. Нашел куда впилить TimageViewer и поставил ему свойство client. Все бы ничего, да вот размер итемов не статичен, а картинка не растягивается, к тому же pngшная картинка не отделяется от фона. Подскажите, как картинку растягивать в зависимости от длины и ширины итемов листбокса и как правильно юзать pngшные картинки (что бы они сохраняли прозрачность). Может я вообще не туда рою и нужно другими способами вставлять картинки под каждый item? Видел много гайдов под listview, но к сожалению мне нужно именно для бокса..
      ----
      п.с. что бы было проще: как нарисовать ровную плашку позади каждого элемента листбокс?
    • От chaplin.u@gmail.com
      Поставил несколько TCheckBox на TListBox и на 4 инчевой  мобилке очень плохо реагируют на нажатия пальцами. В лучшем случае требуется пару раз тапнуть а то и пять-шесть.
      Причём пока никакого кода не вводил. По умолчанию у всех стоит  HitTest = True.
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...