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

MultiView


estra

Вопрос

Беру пример Samples\Object Pascal\Mobile Samples\User Interface\MultiView\ и запускаю на устройстве. Все по умолчанию, окно выезжает слева. На нем ListBox, и когда я нажимаю на один из его итемов, MultiView закрывается. И только открыв его повторно я вижу, на какой Item я нажимал.

 

Как сделать, чтобы при нажатии на itme MultiView не закрывался?

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

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

  • 0

строки 147-151

 

procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem);
begin
  Item.IsSelected := False;
  MultiView1.HideMaster; // убрать
end;

вы хоть немного думаете перед тем как спрашивать ?

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

вы хоть немного думаете перед тем как спрашивать ?

 

Естественно. Данный конфуз случился из-за спешки, тем не менее возник он не на пустом месте. Я набросал свой пример (скачать можно в конце поста), в котором на MultiView лежит кнопка и в OnClick выводится сообщение. Так вот, открывая на устройстве MultiView и нажимая на кнопку MultiView закрывается а OnClick не срабатывает. Тогда я посмотрел пример из демок и увидев аналогичное поведение сразу создал вопрос. Но, возвращаясь к моему примеру, у меня нет никакого MultiView1.HideMaster, тем не менее оно скрывается. Что не так в моем примере и как его поправить, чтобы работало корректно?

MultiView.zip

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

Уточнение к вопросу. Такое поведение MultiView обусловлено тем, что оно является дочерним к TabControl и на к Form (с формой проблем нет). Как добиться нормального поведения, не меняя иерархию компонентов в примере? Или это снова баг?

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

Кстати, в вышеозначенном примере тоже есть ошибка, приводящая к Access Violation. Как воспроизвести:

 

1. Запускаем пример под Windows;

2. В выпадающем списке (Multi View Mode) выбираем Custom;

3. Открываем MultiView (нажатием кнопки в левом верхнем углу формы);

4. Не закрывая MultiView закрываем приложение. Получаем Access Violation.

 

Попробуйте исправить сами, а если не получится, можете подсмотреть решение:

unit FMX.MultiView.CustomPresentation;

...

procedure TMultiViewAlertPresentation.Realign;
var
  SceneForm: TCommonCustomForm;
begin
  inherited;
  if Assigned( FFrame.Position ) then // Добавляем эту строчку
     if MultiView.Scene <> nil then
     begin
       SceneForm := MultiView.Scene.GetObject as TCommonCustomForm;
       FFrame.Position.Point := TPointF.Create(SceneForm.Width / 2 - FFrame.Width / 2, SceneForm.Height / 2 - FFrame.Height / 2)
     end;
end; 

 

 

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

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

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

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

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

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

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

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

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

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

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