Перейти к содержанию
Fire Monkey от А до Я
  • 0

TMultiView и TListBox


HyperZen

Вопрос

Не могу понять почему так происходит: при клике/тапе по TListBoxItem пишу строку, чтобы снять выделение итема:

Item.IsSelected := False; // в примере студии работает
Теперь в своей программе:
procedure TfrmMain.TListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
begin
  case TListBox1.ItemIndex of
    0:
    begin
// действие 1
    end;
    1:
    begin
// действие 2
    end;
    2:
    begin
// действие 3
    end;
  end;

    Item.IsSelected := False;
    MultiView1.HideMaster;
end;

- выделение нажатого итема не снимается. Почему?

 

Ссылка на комментарий

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

  • 0

Case работает, выделение итема не снимается. Сейчас взял пример из студии (MultiViewDemo) - там оказывается та же проблема... выделение не пропадает...

Ссылка на комментарий
  • 0
  • Модераторы

какая платформа? на windows все прекрасно работает

 

UPDATE не работает :)

Изменено пользователем ZuBy
Ссылка на комментарий
  • 0

какая платформа? на windows все прекрасно работает

 

UPDATE не работает :)

Ни на платформе Windows, ни на Android не работает :)

Вот скриншоты, сделанные по шагам в винде, на Андроиде то же самое.

post-1802-0-67727700-1454919852_thumb.pn

Ссылка на комментарий
  • 0

 

Если вам подойдет можете на MultiView1 ->OnHidden прописать  

ListBox1.ItemIndex:=-1;

 

Удивительно, так тоже не работает! :) Выделение итема все равно остается...

Ссылка на комментарий
  • 0

 

 

Если вам подойдет можете на MultiView1 ->OnHidden прописать  

ListBox1.ItemIndex:=-1;

 

Удивительно, так тоже не работает! :) Выделение итема все равно остается...

 

Да не может быть, все работает на MultiView.OnHidden

 

procedure TForm1.MultiView1Hidden(Sender: TObject);
begin
  ListBox1.ItemIndex := -1;
end;

post-412-0-04407200-1454920897_thumb.png

post-412-0-95284400-1454920900_thumb.png

post-412-0-35399000-1454920904_thumb.png

Ссылка на комментарий
  • 0

Ничего не понимаю, создал новый проект, бросил на форму TMultiView, на него TListBox, создал 5-6 Итемов, и код:

procedure TForm1.lst1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
begin
  case lst1.ItemIndex of
    0: ShowMessage('a');
    1: ShowMessage('b');
    2: ShowMessage('c');
    3: ShowMessage('d');
  end;
  Item.IsSelected := False;
  mv1.HideMaster;
end;

Все работает :( Почему в старом проекте наблюдаются такие "глюки"?

Ссылка на комментарий
  • 0

Нашел косяк (если это косяк - может быть это нормальное поведение): в режиме Drawer работает  и выделение итема снимается, в режиме Popover выделение не снимается вообще никак.

Ссылка на комментарий
  • 0

Но как то же его можно победить :) Взять, к примеру, ES проводник, там вверху справа есть меню, с выпадающим (Popover) MultiView, после выбора любого пункта меню, выделение сбрасывается :)

Ссылка на комментарий
  • 0

А лучше не делать такие действия из "детей" MultiView.

Установку Selected можно оставить, а скрывать лучше через какой-то промежуток времени (реализация "в лоб" - по таймеру с маленьким интервалом и однократным срабатыванием)

Ссылка на комментарий
  • 0

Вставьте костыль - перед HideMaster сделайте Application.ProcessMessages

Данный "костыль" не помог в случае Popover :) Решил проблему, изменив свойство на Drawer :)

Ссылка на комментарий
  • 0

Тоже столкнулся с этим багом. Delphi Berlin update 2. А баг есть в QC?

Я так понял проблема в MultiView, проще сделать popup меню вообще без MultiView - здесь описание:

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Mobile_Tutorial:_Using_ListBox_Components_to_Display_a_Table_View_(iOS_and_Android)

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

Изменено пользователем ENRGY
Ссылка на комментарий

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

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