• 0
x11

ItemAppearance Button click

Вопросы

Добавил TTextButtonObjectAppearance. А как выполнить click/tap?

Предполагается, что будет 2-3 кнопки с разными процедурами.

На форме лежит TActionList и нужно к кнопками привязать действия, но у кнопки нет Action. Даже событий нет :(

 

Вопрос в догонку. А в

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


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

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

  • 0

Чтобы не плодить похожие темы, задам ещё вопрос по кнопке типа TGlyphButtonObjectAppearance.

Как в неё вставить картинку, и опять же, как добраться до обработчика нажатия?

Цель: по нажатию на кнопку нужно вызвать некую форму редактирования данной записи, на которой тапнул пользователь.

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


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

вот так это делается

LV_ClickEx.zip

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


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

Может быть Вы не поняли сути проблемы? Попытаюсь ещё раз.

Интересует не щелчок по Item, а именно по той или иной кнопке, которых может быть несколько у Item.

У DinamicAppearance есть 2 вида кнопок. Но ни в справке, ни на просторах интернета нет примеров и описания. Ни у самих кнопок, ни у Item, ни у ListView не нашёл возможности обработать клик/тап именно по кнопке, а не по Item`у.

Допустим, на Item лежит 2 кнопки:

1. Кнопка "Удалить" типа TGlyphButtonObjectAppearance

2. Кнопка "Редактировать" типа TTextButtonObjectAppearance.

Как обработать отдельно клики этих кнопок?

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


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

Может быть Вы не поняли сути проблемы? Попытаюсь ещё раз.

Интересует не щелчок по Item, а именно по той или иной кнопке, которых может быть несколько у Item.

У DinamicAppearance есть 2 вида кнопок. Но ни в справке, ни на просторах интернета нет примеров и описания. Ни у самих кнопок, ни у Item, ни у ListView не нашёл возможности обработать клик/тап именно по кнопке, а не по Item`у.

Допустим, на Item лежит 2 кнопки:

1. Кнопка "Удалить" типа TGlyphButtonObjectAppearance

2. Кнопка "Редактировать" типа TTextButtonObjectAppearance.

Как обработать отдельно клики этих кнопок?

я то как раз понял, а вы видимо нет

Клик был по Item'y, не задевая другие объекты

if ItemObject = nil then
begin
  ShowMessage('Click to Item');
  exit;
end;

Как можно различить объекты в Item'e?

ShowMessage('Name: ' + ItemObject.Name + sLineBreak + 'Text: ' + (ItemObject as TListItemText).Text);

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


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

аааа, ItemObject - это и есть тот или иной объект, лежащий внутри Item`а?

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


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

аааа, ItemObject - это и есть тот или иной объект, лежащий внутри Item`а?

да

каждый объект имеет уникальное имя которое вы задаете в редакторе

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

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


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

1. А почему при загрузке ListView происходит clickEx 2 раза?

2. При клике по кнопке происходит clickEx 2 раза.

Как от этого избавиться?

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


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

1. А почему при загрузке ListView происходит clickEx 2 раза?

2. При клике по кнопке происходит clickEx 2 раза.

Как от этого избавиться?

Приложи проект

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


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

ссылка на проект

тынц

у меня нету компонентов которые там используются, сделайте пустой проект, где это воспроизводится

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


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

сделал с использованием прототипа TPrototypeBindSource.

тынц

 

Но проблема в том, что при открытии PrototypeBindSource1 ListView пустой почему-то. Поэтому не могу воспроизвести эту проблему

1 час назад, x11 сказал:

1. А почему при загрузке ListView происходит clickEx 2 раза?

 

а вторая проблема с повторным кликом воспроизводится

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

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От Dmitry Stolyarov
      Добрый день, подскажите, пжл, новичку...
      Есть ListView и ImageList с двумя картинками. В ListView Item добавлен Image. ListView заполняю из БД и пытаюсь вывести картинку в зависимости от значения поля БД, но в независимости от значения БД выводится одна и та же картинка.. Такое нельзя провернуть?
      procedure TForm6.ListViewNAMEUpdateObjects(const Sender: TObject;
        const AItem: TListViewItem);
        var IItem:TListItemImage;
      begin
       IItem:= aItem.Objects.FindDrawable('Image4') as TListItemImage;
      if (IItem<>nil) then
      with FDQuery1 do
       begin
       First;
       while not Eof do
        begin
         if FDQuery1FK_PRICE.AsInteger = 1 then begin
          IItem.ImageIndex:=1
         end else
            begin
               IItem.OwnsBitmap := True;
           IItem.ImageIndex:=0;
            end;
         Next;
        end;
       end;
      end;
       
    • От gresaggr
      Добрый день.
      Как под FMX в ListView сделать подчеркивание Detail в рантайме?
      Пытался делать так:
      LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
      но не срабатывает.
      P.S. Возможно это применить не ко всем строкам, а только к некоторым?
    • От ice donkey
      Заполняю ListView в рантайме:
       
       
      LiveBindings не подходит, поэтому есть вопрос: а как задать фиксированный заголовок - чтобы в списке все Items, начинающиеся с буквы А были как бы объединены под одним заголовком А? Который  в свою очередь смещался бы только заголовком Б (с Items, которые на букву Б) и так далее.
       
      Пример:
       
    • От Olexander Sagaydak
      Летом 2016 вопрос отображения объектов в ListView при создании Items уже обсуждался. Хочу ещё раз обсудить этот вопрос. А именно:
      Простой код 
      ListViewItem := ListView.Items.Add;
      ListViewItem.Objects.AccessoryObject.Visible := false; (или true, не важно)
      вторая строка не работает если до выполнения, ListView ни одного раза не отображался. Если же отображался хотя бы один раз - всё нормально.
      В предыдущих обсуждениях Krapotkin рекомендовал Resize и OnUpdateObjects. Если нет идей проще, то, конечно, воспользуюсь.  
       
    • От x11
      Если у элементов, идущих подряд одинаковый текст, то текст скрывается.
      Как это это отключить?
       
    • От x11
      Не понять, ни в справке найти, ни примеров, как получить текст из header.
      Как получить текст из какого-то элемента, есть пример:
      lvContacts.Items[li.Index].Objects.FindObjectT<TListItemText>('textTel').Text; а для заголовка ил подвала не нахожу примеров
    • От Erlan_krg
      Всем привет! Встретился с одной проблемой. Удаляю Item у ListView по нажатию кнопки, которая находится на ListViewItem
      procedure TfmAppointment.lvSelectedServicesButtonClick(const Sender: TObject;
        const AItem: TListItem; const AObject: TListItemSimpleControl);
      begin
          lvSelectedServices.BeginUpdate;
          if lvSelectedServices.ItemCount > 0 then
              lvSelectedServices.Items.Delete(AItem.Index);
          lvSelectedServices.EndUpdate;
      end;
      итем удаляется, но потом выскакивает ошибка Access violation at address 60BCB318 и то се бо се
       
      у ListView ItemAppearance выставлен на DynamicAppearance
      помимо родного объекта Text добавил еще один объект Text и кнопку
       
      но фишка в чем, если убрать дополнительный объект Text с ListWiewItem и удалить итем то ошибка не выскакивает)
       
      что за прикол?
    • От sinuke
      Доброго дня, форумчане
      Возникла проблема с тем, чтобы поменять местами два итема в ListView. ListView.Items не имеет метода Exchange, сами итемы не имеют метода Assign чтобы можно было один итем клонировать в другой / удалить / вставить
      У кого какие мысли? Как реализовать?
      Delphi 10.2 Tokyo
       
    • От x11
      Не могу понять, как записать текст в Footer text
       
       

    • От Mars M
      Загружаю большой список в ListView, время загрузки где то 5-7 секунд.
      Это много, по этому переделал что бы список загружался динамически, как к концу пролистывается, подгружаются новые данные.
      Все бы хорошо, но вот ScrollBar при загрузке новых данных меняет размер и позицию. 
      Это не очень нравиться
      Можно как то заранее настроить его размер под конечное число итемов?
      Или может как то по другому сделать.
  • Последние посетители   0 пользователей онлайн

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