-
Постов
1 204 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Весь контент Rusland
-
Значит надо удалять маркеры и лишь затем очищать список. Хм... сейчас попробую Отлично! Работает ))
-
Удаляю маркеры так: public FMarkers: TList<TMapMarker>; ... procedure TFormMain.ClearListPV; var Marker: TMapMarker; begin for Marker in FMarkers do begin FMarkers.Remove(Marker); Marker.Remove; end; end; FMarkers содержит список маркеров. Чтобы удалились все маркеры приходится вызывать процедуру несколько раз. Что я делаю не так?
-
Делаю так procedure TFormMain.MapViewMarkerDoubleClick(Marker: TMapMarker); begin Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap); end; ничего не происходит. Как изменить картинку маркеру при двойном клике?
-
День добрый. Раньше пользовался TRegExpr (http://regexpstudio.com/RU/TRegExpr/TRegExpr.html) Попытался использовать его в Delphi 10 S для Android, посыпались ошибки компиляции RegExpr.pas (проблемы cо строковыми значениями). Почитал статьи/форумы, узнал что есть встроенные регулярники System.RegularExpressions.pas, но якобы плохо работает с русским языком. Как на текущий момент? Решена ли эта проблема?
-
Еще назрел такой вопрос: Если есть несколько маркеров на карте, то как отцентрировать карту так чтобы все маркеры были видны?
-
Да, можно конечно удалить и добавить новый, но как-то уж топорно. Неужели по другому никак? Ошибся, надо было MapView.Location или Marker.Descriptor.Position Хотя тоже не то. MapView.Location выдает центральную координаты карты - в моем случае почти всегда совпадает с координатой Маркера. Но так как это не всегда, то значит надо использовать Marker.Descriptor.Position. Но он выдает только первичные координаты маркера и не фиксирует его перемещение (drag). Как быть?
-
Пытаюсь изменить значение Title procedure TFormMain.MapViewMarkerDragEnd(Marker: TMapMarker); begin Marker.Descriptor.Title:=MapView.Position.ToString; end; Не компилируется, выдает E2064 Left side cannot be assigned to Почему так?
-
Во! Похоже то что мне нужно! Это события самого TMapMarker? Почему я их не вижу? Как например вызвать свою процедуру в OnMarkerClick? Дошло... это события MapView. Ушел разбираться дальше. krapotkin, спасибо. Сразу родился еще один вопрос: если есть несколько маркеров на карте, то как их различать между собой? Есть ли у MapMarker какой-то скрытый параметр типа Tag (куда прописывать уникальный номер)?
-
Нашел решение второго вопроса: есть свойство Snippet куда можно вбивать текст Осталось решить первый - как в Title загнать координаты? Менять заголовок либо при изменении положения маркера, либо во время нажатия на маркер. Не знаю как отследить ни то, ни это. Может кто подсказать?
-
Создаю маркер так procedure TFormMain.SetMarker(Lat,Lon:Double); var Descrip: TMapMarkerDescriptor; MyLocation: TMapCoordinate; Angle:integer; begin TThread.Queue(nil, procedure begin try if (TabControl.ActiveTab=TabMap)and((PrevLat<>Lat) or (PrevLon<>Lon)) then begin MyLocation:=TMapCoordinate.Create(Lat,Lon); MapView.Location:=MyLocation; Descrip:=TMapMarkerDescriptor.Create(MyLocation); Descrip.Icon := Image1.Bitmap; Descrip.Draggable:=True; Descrip.Title:='Маркер '+#10+#13+Descrip.Position.ToString; if Assigned(MyMarker) then MyMarker.Remove; MyMarker:=MapView.AddMarker(Descrip); PrevLat:=Lat; PrevLon:=Lon; end; except LabInfo.Text:='Произошла ошибка'; end; end); end; Маркер я сделал Draggable, то есть его можно переносить сделав на нем долгий Tap. Можно ли навесить какую-то свою функцию на изменение положения маркера? Я хочу при изменении положения маркера менять ему в Title его координаты. И еще интересует как сделать Title в две строки? #10+#13 почему-то не делает переноса.
-
С 10 версии появилась кнопка центрирования карты по текущему местоположению. Можно ли ею как-то управлять? Нужно чтобы при нажатии на эту кнопку выставлялся Zoom нужный мне?
-
Чтобы приложение держало экран всегда включенным я добавил в dpr следующий код: uses ... {$IF DEFINED(ANDROID)} Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, {$ENDIF } ... {$R *.res} begin Application.Initialize; {$IF DEFINED(ANDROID)} SharedActivity.getWindow.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON); {$ENDIF} Так вот в какой-то момент после нескольких компиляций строка Androidapi.JNI.GraphicsContentViewText просто исчезает. И проект не компилируется. Приходится снова ее добавлять. В чем может быть дело?
-
Да, Android. Как всегда ответ четко по теме, спасибо. Не хочется нарушать рекомендации Google Однако это на мой взгляд большая проблема... некоторые компоненты не увеличить (типа кнопок), а некоторые не уменьшить... Например, на форме где есть TMapView очень трудно что либо еще уместить. Эх, придется как-то подстраивать дизайн
-
Из этой темы попробовал сделать так: function FindSearchBox(const ARootControl: TControl): TSearchBox; var Child: TControl; begin Result := nil; for Child in ARootControl.Controls do if Child is TSearchBox then Exit(TSearchBox(Child)); end; procedure TFormAdd.SpeedButton1Click(Sender: TObject); var SearchBox: TSearchBox; begin SearchBox:=FindSearchBox(FormMain.ListView1); if SearchBox <> nil then begin SearchBox.Text:=''; end; end; Метод работает.
-
Делаю Набираю текст в появившейся панели поиска, список фильтруется. Как теперь из другой формы отключить фильтр? ListView.SearchVisible:=false прячет панель, но не отменяет фильтрации.
-
Можно ли изменить размер Switch? Слишком уж он маленький и приходится несколько раз на нем тыкать чтобы попасть по нему.
-
Странно, клавиатуру скрыл, а Access Violation все равно выскакивает PS. Заменил Release формы на Free и ошибка ушла...
-
Две формы, первая - главная, вторая - модальная, которая создается так TFormAdd.Create(self). На второй есть Edit-ы, кнопка Возврата SpeedButton1 (ModalResult=mrCancel) и она вызывается методом ShowModal. Когда я захожу, например в редактирование Edit1 второй формы, появляется клавиатура. Если в этот момент нажать SpeedButton1, то форма закрывается, а клавиатура остается висеть. Если после этого снова вызвать (создать) вторую форму и нажать на Edit1, то получаю вечный Access Violation. Вопрос: как убирать клавиатуру при закрытии формы?
-
На ListBox-e несколько Item-ов, на них поставил Edit-ы. Когда я пытаюсь редактировать нижние Edit-ы, то клавиатура перекрывает их и не видно что набираешь (в моем примере это Номер дома). Как это исправить? И как сделать чтобы на клавиатуре вместо кнопки Enter была кнопка Готово, по нажатию на которую клава бы скрывалась?
-
Осталось только понять: Стрелочка ">" - это кнопка или что? Можно ли на нее нажать отдельно от всего Item-a?
-
Что-то я стормозил... действительно же нужный Item уже будет Selected. Я вот так обращаюсь: TListViewItem(ListViewPV.Selected).Text
-
Посмотрел вот тут пример http://docwiki.embarcadero.com/CodeExamples/Seattle/en/OnGesture_(Delphi) Компонент GestureManager обязателен? uses FMX.Gestures; { ... } procedure TFormMain.ListViewPVGesture(Sender: TObject; const [Ref] EventInfo: TGestureEventInfo; var Handled: Boolean); var S: String; begin if GestureToIdent(EventInfo.GestureID, S) then ShowMessage(S) else ShowMessage('Could not translate gesture identifier'); end; При долгом нажатии получаю "Could not translate gesture identifier". Почему? Процедура то вызывается... выходит что долгий Тап отрабатывается. А как понять какой Item вызвал процедуру? PS. В Touch -> InteractiveGestures -> LongTap выставлено True.
-
Можно ли ListView представить подобным образом (см. картинку)? Особенно интересует отображение текста (в трех местах).
-
Нужно при долгом нажатии на элементе вызывать форму. Как сделать? И как обработать нажатие кнопочек ">"?