Перейти к содержанию

Вопросы

Как реализовать такой список в ListBox e? Что бы при программном добавлении списка новый элемент добавлялось точно такими элементами.

post-1434-0-79769000-1449433748.png

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


Ссылка на сообщение

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

  • 0

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

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


Ссылка на сообщение
  • 0

Да то что нужно! Как я понимаю вы создали отдельный класс для ListItem да? Просто я с делфи не очень дружу, можете чуть чуть обяснит?

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


Ссылка на сообщение
  • 0

нет, я просто отрисовал нужные контролы в Item'e. а тот класс это для покраски TListView, через него я убрал разделитель.

все что вам нужно находиться в OnUpdateObjects, посмотрите на константы и как присваиваются данные

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


Ссылка на сообщение
  • 0

нет, я просто отрисовал нужные контролы в Item'e. а тот класс это для покраски TListView, через него я убрал разделитель.

все что вам нужно находиться в OnUpdateObjects, посмотрите на константы и как присваиваются данные

Спасибо большое!

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


Ссылка на сообщение
  • 0

Добрый вечер господа 

во первых спасибо ZuBy за исходник

скачал данный исходник и прям в нем начал делать свой проект но возникла проблема, есть Listbox в котором динамически создаются Item-ы в них хранятся ссылки на картинки из сайта, картинки разные в формате .bmp количество Item-ов у Litbox и Listview одинаковы 

как загрузить эти картинки в Listview?

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


Ссылка на сообщение
  • 0

Да пожалуйста, пользуйтесь.

У Itema же есть Bitmap. Если нужно через инет, то нужно через хелпер тут не раз выкладывали

Есть тема от меня в разделе TListView про динамическую загрузку картинок, посмотрите там.

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


Ссылка на сообщение
  • 0

Да пожалуйста, пользуйтесь.

У Itema же есть Bitmap. Если нужно через инет, то нужно через хелпер тут не раз выкладывали

Есть тема от меня в разделе TListView про динамическую загрузку картинок, посмотрите там.

Нашел тему, спасибо буду пробовать

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


Ссылка на сообщение
  • 0

Доброе время суток.

Классный пример.

А не подскажите каким образом можно в данном примере

отобразить кнопки и прогресс бар.

и

еще один вопрос.

если требуется отобразить тиканье времени, каким образом производится обновление перерисовки итема ?

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


Ссылка на сообщение
  • 0

если требуется отобразить тиканье времени, каким образом производится обновление перерисовки итема ?

Нужен Timer и ListView

Например в ListView -> OnUpdateObjects

procedure TForm1.ListViewPoiskUpdateObjects(const Sender: TObject; const AItem: TListViewItem);

var
  aTime: TListitemText;
begin
  aTime := AItem.Objects.FindDrawable('time') as TListitemText;
  if aTime = nil then
  begin
    aTime := TListitemText.Create(AItem);
    aTime.Name := 'time';
    aTime.PlaceOffset.X := 0;
    aTime.PlaceOffset.Y := 2;
    aTime.Font.Size := 14;
    aTime.TextVertAlign := TTextAlign.Center;
    aTime.TextAlign := TTextAlign.Center;
  end;
  aTime.Width := 72;
  aTime.Height := 20;


  //Двигаем Text итема с отступом
  AItem.Objects.TextObject.PlaceOffset.X := aTime.Width + 6;
end;


И таймер

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: integer;
begin
  if ListView1.ItemCount > 0 then
    for i := 0 to ListView1.ItemCount - 1 do
      ListView1.Items[i].Data['time'] := FormatDateTime('ss сек.', Now);
end;
Отредактировал Andrey Efimov
Добавил тег "Код"

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


Ссылка на сообщение
  • 0

ок спасибо.

 

А не подскажите каким образом можно в данном примере

отобразить кнопки и прогресс бар.

Кнопку можно создать используя TListItemTextButton в обработчике OnUpdateObjects

 

а на счёт прогрессбара, то тут нужно придумать что-то своё (или текстом или картинками делать)

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


Ссылка на сообщение
  • 0

Использую helper для раскраски ListView (LVhelper.pas) из примера ZuBy.

procedure TFrmMain.SetListViewStyle();
begin
  Lsv.SetColorItemFill($FF000000); // цвет фона item-а серый
  Lsv.SetColorBackground($FF000000); // фон делаем "черным" 
  Lsv.SetColorItemFillAlt($FF1A1A1A);                      
  Lsv.SetColorItemSelected($FF1A1A1A); // фон выделенного item-а 

  Lsv.SetColorText($FFFFFFFF); // шрифт белый
  Lsv.SetColorTextSelected($FFFFFFFF); // шрифт белый
end;

Раскрашивается замечательно, НО когда я выделяю item, то текста в выделенной ячейке практически не видно - он становится то ли темно-серым, то ли черным.

Как побороть?

 

 

Оказывается все просто, процедуру надо вызывать непременно в OnApplyStyleLookup - тогда все работает как надо. 

Отредактировал Rusland

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


Ссылка на сообщение

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

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

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

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

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

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

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

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


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

    • От Mars M
      Второй день голову ломаю, без помощи не обойтись 
      Делаю компонент, что то типа таблицы, нужно добавлять колонки и что бы они отображались в редакторе как вложенные в основной компонент.
      Вот как например у стринггрида

      Нужно разумеется не для красоты а что бы редактировать их свойства.
      Если можно пример в виде кода или хоть в какую сторону смотреть.
    • От rakhmet
      Есть ли способ в FM узнать количество видимых Items у TListView?
    • От Равиль Зарипов (ZuBy)
      Доброго времени суток!
      Возникла проблема с обновлением Itemом. Суть проблемы в текстовом варианте
      Чуток изменил стиль TListBox'a, listboxstyle, сам добавил прозрачность, т.к. не понравился родной стиль из-за отступов по краям. Затем добавляю айтемы со стилем listboxitembottomdetail (по памяти) здесь все прекрасно, проблема в том что при нажатии на айтем должна показываться картинка у выбранного айтема, но она показывается только если проскролить айтем за пределы видимости и снова вернуть. Какой метод вызвать чтобы обновить отрисовку?
      Пробовал и применение стиля айтему и всему ListBoxy и Repaint и RecalcContent ничего не помогло
      Видео прилагаю, смотрите на 16 айтем
      https://youtu.be/HNmDq079Ywg
    • От PFC
      Есть класс:
      class TMyObjectInt : public TObject { private: int Value; public: __fastcall TMyObjectInt (int _Value); __fastcall ~TMyObjectInt(); }; Есть ComboBox:
      for (int i = 1; i <= 10; i++) cbxItems->Items->AddObject(IntToStr(i), new TMyObjectInt(i)); Почему при вызове ->Clear() не вызываются деструкторы для TObject'ов? Казалось бы базовый TObject замечательно для этого подходит, даже деструктор у него виртуальным объявлен.
      Я могу написать свою функцию очистки, но это потенциально приводит к ошибкам, особенно если я отдаю указатель на ComboBox за пределы своей формы.
       
      Кстати, так же ведут себя и многие другие контролы, да и в VCL было так же.
  • Последние посетители   0 пользователей онлайн

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

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