rustam_d Опубликовано 7 августа, 2015 Поделиться Опубликовано 7 августа, 2015 DelphiXE8 upd1, Android На vcl реализовывается за 15 сек...но это же fmx... Взял пример из Делфи - FP := Button1.LocalToAbsolute(FP); а он оказался левым, т.к. отображается черти где но не под кнопкой...да ничего я привык уже... Задача простейшая, а тут затык... Вот кнопка прижатая на панели вправо у меня, с 3 точками иконкой. Если юзаете дроид то знаете что в 99% это popup. Вот хочу того же. Прошу поделиться у кого такой функционал реализован красиво и идеально? Нажать на кнопку и popup снизу... Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 7 августа, 2015 Администраторы Поделиться Опубликовано 7 августа, 2015 TPopup.Placement TPopup.PlacementTarget Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 TPopup.Placement TPopup.PlacementTarget Ярослав, понимаю мало времени...но этот экзотический компонент не получается правильно юзать с PopupMenu. Кинул на форму, выставил Popup1.PlacementTarget = Speedbutton1 Popup1.Popupmenu = Popupmenu1 по нажатию вызываю Speedbutton1 вызываю Popup1.Popup. Никакой реакции... Цитата Ссылка на комментарий
0 FIL Опубликовано 7 августа, 2015 Поделиться Опубликовано 7 августа, 2015 (изменено) по нажатию вызываю Speedbutton1 вызываю Popup1.Popup. Никакой реакции... TPopup - это "заготовка" для создания соответствующих компонентов. PopupMenu можно вызвать так: procedure TForm1.Button1Click(Sender: TObject); var P: TPointF; begin P := (Button1 as IControl).LocalToScreen(Button1.LocalRect.TopLeft); PopupMenu1.PopupComponent := Button1; PopupMenu1.Popup(P.X, P.Y + Button1.Height); end; Изменено 7 августа, 2015 пользователем FIL Brovin Yaroslav 1 Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 TPopup - это "заготовка" для создания соответствующих компонентов. PopupMenu можно вызвать так: procedure TForm1.Button1Click(Sender: TObject); var P: TPointF; begin P := (Button1 as IControl).LocalToScreen(Button1.LocalRect.TopLeft); PopupMenu1.PopupComponent := Button1; PopupMenu1.Popup(P.X, P.Y + Button1.Height); end; на win32 только пашет, в Андроид никакой реакции... Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 7 августа, 2015 Администраторы Поделиться Опубликовано 7 августа, 2015 В андроиде и iOS вроде нету PopupMenu Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 В андроиде и iOS вроде нету PopupMenu Вы про платформу? Или FMX? В платформе есть...зайдите в gmail и справа 3 точки...вот типа того надо. В fmx то вроде компилируется...иначе зачем они там...короче пока не победил popupmenu... Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 7 августа, 2015 Администраторы Поделиться Опубликовано 7 августа, 2015 Я про FireMonkey Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 Я про FireMonkey Да верно нет в fmx+андроид...но среда почему то пропустила... А есть ли пример как можно подобное в popup реализовать? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 7 августа, 2015 Модераторы Поделиться Опубликовано 7 августа, 2015 1. TLayout + TListBox 2. TMultiView +TListBox Вариантов может быть куча, просто BringToFront и задать правильные Position.X/Y Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 (изменено) 1. TLayout + TListBox 2. TMultiView +TListBox Вариантов может быть куча, просто BringToFront и задать правильные Position.X/Y Это "тяжелые" компоненты...думал об этом. Но спасибо за ответ ). меньше всего ожидал что fmx мне праздник устроит с простейшим попапом... Сделал пример на кнопках, изврат не хилый получился...но работает ). Критика приветствуется. (там где смайл это b со скобкой) public { Public declarations } pop : TPopup; procedure Popclick(Sender: TObject); end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Popclick(Sender: TObject); begin ShowMessage(TButton(Sender).Text); pop.IsOpen := false; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin pop.Placement := TPlacement.plMouse; pop.Popup; end; procedure TForm1.FormShow(Sender: TObject); var b : TButton; begin pop := TPopup.Create(self); pop.Parent:= self; pop.Width := 200; pop.Height := 300; pop.PlacementRectangle:= TBounds.Create(RectF(0,0,200,300)); b := TButton.Create(Self); b.Align := TAlignLayout.Top; b.TextSettings.HorzAlign := TTextAlign.Leading; b.Text := 'Menu1'; b.OnClick := Popclick; pop.AddObject( ; b := TButton.Create(Self); b.Align :=TAlignLayout.Top; b.TextSettings.HorzAlign := TTextAlign.Leading; b.Text := 'Menu2'; b.OnClick := Popclick; pop.AddObject( ; end; Изменено 7 августа, 2015 пользователем rustam_d Цитата Ссылка на комментарий
0 FIL Опубликовано 7 августа, 2015 Поделиться Опубликовано 7 августа, 2015 (изменено) Вариант с ListBox: var Form1: TForm1; Popup: TPopup; ListBox: TListBox; ... procedure TForm1.FormCreate(Sender: TObject); begin Popup := TPopup.Create(nil); with Popup do begin PlacementTarget := Button1; Placement := TPlacement.Bottom; Width := Button1.Width; Parent := Button1; end; ListBox := TListBox.Create(nil); with ListBox do begin Align := TAlignLayout.Client; Items.DelimitedText := 'Item1, Item2, Item3, Item4, Item5'; OnItemClick := ListBoxItemClick; Parent := Popup; Popup.Height := ListItems[0].Height * Items.Count + BorderHeight; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin ListBox := nil; Popup := nil; end; procedure TForm1.Button1Click(Sender: TObject); begin ListBox.ItemIndex := -1; Popup.IsOpen := True; end; procedure TForm1.ListBoxItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin Popup.IsOpen := False; ShowMessage(Item.Text); end; Ну а при желании можно сделать что-то вроде этого: http://yaroslavbrovin.ru/new-approach-of-development-of-firemonkey-control-control-model-presentation-part-2-tedit-with-autocomplete-ru/ Изменено 7 августа, 2015 пользователем FIL Цитата Ссылка на комментарий
0 rustam_d Опубликовано 7 августа, 2015 Автор Поделиться Опубликовано 7 августа, 2015 Вариант с ListBox: Не плохо. Но в моем варианте в Tag я храню индексы или ID, также у меня Меню с иконками, т.к. подключил images. Вообщем какой и должен быть PopupMenu полноценный. Цитата Ссылка на комментарий
0 FIL Опубликовано 7 августа, 2015 Поделиться Опубликовано 7 августа, 2015 Хорошо. Отмечу лишь, что ListBox позволяет сделать все тоже самое и даже больше. Равиль Зарипов (ZuBy) и Sergey56 2 Цитата Ссылка на комментарий
0 krapotkin Опубликовано 10 августа, 2015 Поделиться Опубликовано 10 августа, 2015 у Sarina Dupont в блоге есть решение для вывода попап меню с помощью listbox Цитата Ссылка на комментарий
0 rustam_d Опубликовано 10 августа, 2015 Автор Поделиться Опубликовано 10 августа, 2015 у Sarina Dupont в блоге есть решение для вывода попап меню с помощью listbox посмотрел...в подметки не годиться тому что фил тут написал... я подкинул у себя связку с imagelist и ID...красота... Items.Add(aBtn_text); ItemByIndex(Items.Count-1).ImageIndex := aImg_index; ItemByIndex(Items.Count-1).Tag := aId; эх еще бы как то фон задать...видели те юзерам не нравиться как текст налагается...блин знали бы как это делается через одно место ))... Цитата Ссылка на комментарий
0 rustam_d Опубликовано 12 августа, 2015 Автор Поделиться Опубликовано 12 августа, 2015 (изменено) Добавил фон через тень. Ничего так получилось. Может кому пригодиться. uses FMX.Effects; with TShadowEffect.Create(pListBox) do Parent := pListBox; Изменено 12 августа, 2015 пользователем rustam_d Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 12 августа, 2015 Модераторы Поделиться Опубликовано 12 августа, 2015 использовать стили кто мешает? поправить стиль, делов то Цитата Ссылка на комментарий
Вопрос
rustam_d
DelphiXE8 upd1, Android
На vcl реализовывается за 15 сек...но это же fmx...
Взял пример из Делфи - FP := Button1.LocalToAbsolute(FP); а он оказался левым,
т.к. отображается черти где но не под кнопкой...да ничего я привык уже...
Задача простейшая, а тут затык... Вот кнопка прижатая на панели вправо у меня, с 3 точками иконкой.
Если юзаете дроид то знаете что в 99% это popup. Вот хочу того же.
Прошу поделиться у кого такой функционал реализован красиво и идеально?
Нажать на кнопку и popup снизу...
Ссылка на комментарий
17 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.