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

Равиль Зарипов (ZuBy)

Модераторы
  • Постов

    2 517
  • Зарегистрирован

  • Посещение

  • Победитель дней

    264

Весь контент Равиль Зарипов (ZuBy)

  1. он работает только с Android/iOS, для остальным платформ нужно использовать JavaScript(маршрут, геолокация, определение координат, нанесение маркеров)+Yandex карты. как один из вариантов
  2. Аа, ну тогда я не могу помочь. Даже не знаю как эта штука работает
  3. в том что они не доступны были пока не перенес ниже
  4. из модели в основной в класс, для большего удобства это для GoToNext, GoToPrevious У Вас два public TfgCustomFlipView = class(TPresentedControl, IfgFlipViewNotifications) ... public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function CanSlideShow: Boolean; { Manipulation } procedure GoToImage(const AImageIndex: Integer; const ADirection: TfgDirection = TfgDirection.Forward; const Animate: Boolean = True); property Model: TfgFlipViewModel read GetModel; public // тут видет это методы procedure GoToNext(const Animate: Boolean = True); procedure GoToPrevious(const Animate: Boolean = True);
  5. использовать нужно класс TEncoding и не прибегать к таким функциям как в пункте 2 /// ////////////////////////////////////////////////////////////////// function myUTF8ToString(aStr: String): string; // uses System.NetEncoding var Data: TEncoding; StrArray: TBytes; begin Data := TEncoding.Create; try try StrArray := BytesOf(aStr); Result := StringOf(Data.Convert(Data.UTF8, TEncoding.Default, StrArray)); except Result := aStr; end; finally FreeAndNil(Data); end; end; /// ////////////////////////////////////////////////////////////////// function myStringToUTF8(aStr: String): string; // uses System.NetEncoding var Data: TEncoding; StrArray: TBytes; begin Data := TEncoding.Create; try try StrArray := BytesOf(aStr); Result := StringOf(Data.Convert(Data.Default, TEncoding.UTF8, StrArray)); except Result := aStr; end; finally FreeAndNil(Data); end; end;
  6. для System.Delete нужно использовать 1, а не 0 неважно на какой платформе это будет работать
  7. 2. Deployment при каждом запуске распаковывается на устройство и можно работать как с обычными файлами, Ресурсами вы сами занимаетесь, когда они вам нужны вы их вытаскиваете
  8. Как динамически добавлять картинки в этот компонент? На андроиде не работает? Не могу запустить проект на android'e пустой экран Чтобы заработало на Android нужно стиль грузить в ресурсы... Ярослав, Вынесите в след. версии два метода в public (нижний) procedure GoToNext(const Animate: Boolean = True); procedure GoToPrevious(const Animate: Boolean = True); чтобы можно было реализовать переключение картинок жестами ещё вот эти не помешают function IsFirstImage: Boolean; function IsLastImage: Boolean; Вот еще может реализуете такую штуку, в режиме слайда и ImagesCount = 1 чтобы не переключались картинки procedure TfgFlipViewSlidingPresentation.ShowNextImage(const ANewItemIndex: Integer; const ADirection: TfgDirection; const AAnimate: Boolean); begin AssertIsNotNil(Model); inherited; if (csDesigning in ComponentState) or not AAnimate then begin if ImageContainer <> nil then ImageContainer.Bitmap.Assign(Model.CurrentImage); Model.FinishChanging; end else begin if Model.ImagesCount = 1 then begin exit; end; if (FNextImageContainer <> nil) and (FNextImageAnimator <> nil) and (FImageAnimator <> nil) then begin FNextImageContainer.Bitmap.Assign(Model.CurrentImage); InitAnimatorParams(ADirection); FImageAnimator.Start; FNextImageContainer.Visible := True; FNextImageAnimator.Start; end; end; end;
  9. Я не силен в C++, если только сами портируровать будете. Там кода не так много
  10. У меня ведь работает, смотрите что то не так указали. Может местами поменяли
  11. тут на форуме не так давно выкладывали компонент который поможет AlexG вроде выкладывал
  12. Получаю аналогичную ошибку "blocking dialogs not implemented on this platform" при использовании InputQuery try if InputQuery( 'Enter New Item', 'Name', TaskName) and (TaskName.Trim <> '') then begin FDQueryInsert.ParamByName('ShopItem').AsString := TaskName; FDQueryInsert.ExecSQL(); FDQuery1.Close; FDQuery1.Open; end; except on e: Exception do ShowMessage(e.Message); end; Подскажите что дописать в InputQuery? в FMX он работает по другому InputQuery имеет еще параметры смотрим внимательно type TInputCloseQueryEvent = procedure(Sender: TObject; const Values: array of string; var CanClose: Boolean) of object; TInputCloseQueryFunc = reference to function(const Values: array of string): Boolean; TInputCloseQueryProc = reference to procedure(const AResult: TModalResult; const AValues: array of string); TInputCloseBoxProc = reference to procedure(const AResult: TModalResult; const AValue: string); TInputCloseDialogProc = reference to procedure(const AResult: TModalResult); TInputCloseDialogEvent = procedure(Sender: TObject; const AResult: TModalResult) of object; TInputCloseQueryWithResultEvent = procedure(Sender: TObject; const AResult: TModalResult; const AValues: array of string) of object; TInputCloseBoxEvent = procedure(Sender: TObject; const AResult: TModalResult; const AValue: string) of object;
  13. Равиль Зарипов (ZuBy)

    TMapsEngine

    Компонент TMapsEngine Возможности Нативный LocationSensor [ANDROID] Геокодинг/Реверс геокодинг через Google API, Yandex API, Here Maps API Построение маршрута через Google Distance API Расчет дистанции по прямой Совместим со стандартным компонентом TLocationSensor Видео демонстрация На видео видно как TMapView косячик с миллионом точек, приложение зависло при отрисовке, но с этим ничего не поделать. Без синхронизации не возможно отрисовать все точки Исходник TMapsEngine_source.zip TMapsEngine_Seattle_10.zip Скачать APK (долго он там не пролежит, а форум не позволяет загрузить zip размером 7,4 мб )
  14. Запустил программу, поставил галочки GPS Enabled, Network Enabled, жму Load Providers и получаю широту и долготу. Но после этого они больше не меняются (хоть я и сижу на месте перед окном ) в отличии от варианта когда используется LocationSensor (с ним у меня маркер постоянно движется туда сюда). Почему так? Я тоже сделал реверс геокодинг вот так: private FGeocoder: TGeocoder; procedure OnGeocodeReverseEvent(const Address: TCivicAddress); procedure TForm1.OnGeocodeReverseEvent(const Address: TCivicAddress); begin TThread.Queue(nil, procedure begin Info.Text:=''; LbiAdminArea.ItemData.Detail := Address.AdminArea; LbiCountryCode.ItemData.Detail := Address.CountryCode; LbiCountryName.ItemData.Detail := Address.CountryName; LbiFeatureName.ItemData.Detail := Address.FeatureName; LbiLocality.ItemData.Detail := Address.Locality; LbiPostalCode.ItemData.Detail := Address.PostalCode; LbiSubAdminArea.ItemData.Detail := Address.SubAdminArea; LbiSubLocality.ItemData.Detail := Address.SubLocality; LbiThoroughfare.ItemData.Detail := Address.Thoroughfare; LbiSubThoroughfare.ItemData.Detail:= Address.SubThoroughfare; end); end; procedure TForm1.LSensorLocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); begin ///. .. try // реверсивная геолокация if not Assigned(FGeocoder) then begin if Assigned(TGeocoder.Current) then FGeocoder := TGeocoder.Current.Create; if Assigned(FGeocoder) then FGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent; end; if Assigned(FGeocoder) and not FGeocoder.Geocoding then FGeocoder.GeocodeReverse(NewLocation); except Info.Text:='Ошибка Geocoder'; ClearAdress(); FGeocoder.Free; FGeocoder:=nil; end; end; И работает хорошо, но до первой ошибки. Если связь по WiFi или GPRS обрывается, то вываливается ошибка о Timeout-е и после этого на строку FGeocoder.GeocodeReverse(NewLocation); больше не попадает. Что я делаю не так? Круто! А какой компонент используется для отображения карт, TWebBrowser? Формулу для расчета по прямой я уже нашел (не думаю что она вообще может быть полезной ) А вот не поделитесь с общественностью кодом для расчета расстояния по дороге? (коли не жалко) PS. ZuBy, вообще ничего что я в этой теме столько пишу? если посмотреть в исходный код внимательно то можно обнаружить что дистанция стоит 10, а в родном TLocationSensor = 0 попробуйте поменять это значение и увидите разницу FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener, TJLooper.JavaClass.getMainLooper); FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.NETWORK_PROVIDER, 10000, 10, locationListener, TJLooper.JavaClass.getMainLooper); для геолокации не нужен браузер, просто запросы через TidHttp бывает полезной, кое где у меня используется пока это соответствует теме думаю никто против не будет компонентом могу поделится, но для того чтобы все заработало подготовьте API key Google, Appid, Appcode для Here Maps я позже выложу ссылку сюда
  15. я через TCircle делал, просто и удобно вроде
  16. поверх TMapView ничего нельзя наложить, можно например в заголовке или внизу наоборот. TMapView также как и TWebBrowser нельзя перекрыть ничем
  17. попробуй после после первого получения сразу отключать AutoActivate := false;
  18. Почтамте в интернете про потоки и синхронизации
×
×
  • Создать...