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

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

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

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

  • Посещение

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

    264

Активность репутации

  1. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в TLocationSensor - GPS трекер   
    вот оригинальный код, я же себе сделал компонент сразу с геокодингом и реверс геокодингом (через три сервиса here maps, google maps, yandex maps) +расчёт дистанции по дороге через google +расчёт дистанции по прямой
    AndroidGPS.zip
  2. Like
    Равиль Зарипов (ZuBy) получил реакцию от zairkz в TLocationSensor - GPS трекер   
    вот оригинальный код, я же себе сделал компонент сразу с геокодингом и реверс геокодингом (через три сервиса here maps, google maps, yandex maps) +расчёт дистанции по дороге через google +расчёт дистанции по прямой
    AndroidGPS.zip
  3. Like
    Равиль Зарипов (ZuBy) отреагировална kami в [Android] программа закрывается при использовании LocationSensor и Memo   
    {$IFDEF offtop}Мсье знает толк в извращениях {$ENDIF}
  4. Like
    Равиль Зарипов (ZuBy) получил реакцию от zairkz в [Android] программа закрывается при использовании LocationSensor и Memo   
    Это все конечно хорошо, но не всегда работает.
    Вот такая зверская конструкция на Windows отрабатывается на ура, а на андроиде бывают лаги
    TTask.Run(procedure begin   // тут обращение к базе например   TThread.Synchronize(nil, procedure   begin      //  тут разбираем данные     TTask.Run(procedure     begin       // тут сохраняем       TThread.Queue(nil, procedure       begin          // тут обновляем данные в визуальных компонентах       end);     end);    end); end); пришлось отказаться от такой конструкции, но иногда она жутко удобна
  5. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo   
    Если у вас зависает программа, то замените Synchronize на TThread.Queue. Это точно должно помочь
     
    Этим летом мне выделили время и я плотно занимался проблемой "черного экрана" на андроиде и креша при закрытии приложения на Андроиде. На форуме было очень много обсуждений этой проблемы. Поэтому есть пара советов, как ее избежать в текущих версия среды:
    Все операции требуемые выполнять в Delphi UI потоке нужно выполнять в Synchronize или Queue. Второе предпочтительнее. Отличие между Synchronize и Queue - только в том, что первое остановит выполнение потока до тех пор, пока не выполниться код в Synchronize. Queue наборот, поставить в очередь ваш код на выполнение. Поэтому если вы можете выполнять вашу задачу асинхронно, то лучше использовать Queue, если нет, то Synchronize. В вашем случае вы можете выполнить добавление маркера асинхронно, так как результат сенсора вы не используете в будущем для вычислений. То есть у вас только задача отображения данных в Real Time. Поэтому 
  6. Like
    Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo   
    TThread.Synchronize(nil, procedure begin Memo1.Lines.Add(''); end); потому что работает в другом потоке!
  7. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в [Android] программа закрывается при использовании LocationSensor и Memo   
    с  какими точно не могу сказать, это зависит от того какие компоненты вы используете. например карта (судя по коду) тоже работают в отдельном потоке, но пока проблем не было
     
    ограничения по Memo я поставил 1000 символом и после чего очищаю его (для логов использовал)
  8. Like
    Равиль Зарипов (ZuBy) получил реакцию от Евгений Корепов в узнать расстояние между 2 точками   
    uses Math, FMX.Maps
    function TMapsEngine.GetDistance(const aStart, aEnd: TMapCoordinate): Real; const   Radius = 6372795;   PiDiv180 = Pi / 180; var   CosLatStart, SinLatStart, CosLatEnd, SinLatEnd, Delta, CosDelta, SinDelta, X, Y: Real; begin   try     CosLatStart := Cos(aStart.Latitude * PiDiv180);     CosLatEnd := Cos(aEnd.Latitude * PiDiv180);     SinLatStart := Sin(aStart.Latitude * PiDiv180);     SinLatEnd := Sin(aEnd.Latitude * PiDiv180);     Delta := (aEnd.Longitude * PiDiv180) - (aStart.Longitude * PiDiv180);     CosDelta := Cos(Delta);     SinDelta := Sin(Delta);     Y := Sqrt(((CosLatEnd * SinDelta) * (CosLatEnd * SinDelta)) + ((CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)       * (CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)));     X := SinLatStart * SinLatEnd + CosLatStart * CosLatEnd * CosDelta;     Result := Round(ArcTan2(Y, X) * Radius);   except     Result := -1;   end; end; рассчитывает отрезок по прямой, не по дороге!
  9. Like
    Равиль Зарипов (ZuBy) получил реакцию от Alex7wrt в При выравниваниее по правому краю съедаются символы.   
    как одно из решении, добавить пробелы с права от текста. если float то перевести в string
  10. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в [Android] программа закрывается при использовании LocationSensor и Memo   
    TThread.Synchronize(nil, procedure begin Memo1.Lines.Add(''); end); потому что работает в другом потоке!
  11. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в При выравниваниее по правому краю съедаются символы.   
    как одно из решении, добавить пробелы с права от текста. если float то перевести в string
  12. Like
    Равиль Зарипов (ZuBy) получил реакцию от Martifan в узнать расстояние между 2 точками   
    RouteURL = 'https://maps.googleapis.com/maps/api/directions/xml?origin=%s,%s&destination=%s,%s&mode=driving&key=%s'; Str := (Format(RouteURL, [OrigLatitude, OrigLongitude, DestLatitude, DestLongitude, aGoogleDistanceKey])); подробно
    смотрим XML и разбираем
  13. Like
    Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в узнать расстояние между 2 точками   
    uses Math, FMX.Maps
    function TMapsEngine.GetDistance(const aStart, aEnd: TMapCoordinate): Real; const   Radius = 6372795;   PiDiv180 = Pi / 180; var   CosLatStart, SinLatStart, CosLatEnd, SinLatEnd, Delta, CosDelta, SinDelta, X, Y: Real; begin   try     CosLatStart := Cos(aStart.Latitude * PiDiv180);     CosLatEnd := Cos(aEnd.Latitude * PiDiv180);     SinLatStart := Sin(aStart.Latitude * PiDiv180);     SinLatEnd := Sin(aEnd.Latitude * PiDiv180);     Delta := (aEnd.Longitude * PiDiv180) - (aStart.Longitude * PiDiv180);     CosDelta := Cos(Delta);     SinDelta := Sin(Delta);     Y := Sqrt(((CosLatEnd * SinDelta) * (CosLatEnd * SinDelta)) + ((CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)       * (CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)));     X := SinLatStart * SinLatEnd + CosLatStart * CosLatEnd * CosDelta;     Result := Round(ArcTan2(Y, X) * Radius);   except     Result := -1;   end; end; рассчитывает отрезок по прямой, не по дороге!
  14. Like
    Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в узнать расстояние между 2 точками   
    uses Math, FMX.Maps
    function TMapsEngine.GetDistance(const aStart, aEnd: TMapCoordinate): Real; const   Radius = 6372795;   PiDiv180 = Pi / 180; var   CosLatStart, SinLatStart, CosLatEnd, SinLatEnd, Delta, CosDelta, SinDelta, X, Y: Real; begin   try     CosLatStart := Cos(aStart.Latitude * PiDiv180);     CosLatEnd := Cos(aEnd.Latitude * PiDiv180);     SinLatStart := Sin(aStart.Latitude * PiDiv180);     SinLatEnd := Sin(aEnd.Latitude * PiDiv180);     Delta := (aEnd.Longitude * PiDiv180) - (aStart.Longitude * PiDiv180);     CosDelta := Cos(Delta);     SinDelta := Sin(Delta);     Y := Sqrt(((CosLatEnd * SinDelta) * (CosLatEnd * SinDelta)) + ((CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)       * (CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta)));     X := SinLatStart * SinLatEnd + CosLatStart * CosLatEnd * CosDelta;     Result := Round(ArcTan2(Y, X) * Radius);   except     Result := -1;   end; end; рассчитывает отрезок по прямой, не по дороге!
  15. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в Редактирование стиля, как добавить "TStyleObject", "TActiveStyleObject" и т.п.?   
    По умолчанию эти объекты стиля и другие не зарегистрированы в палитре инструментов.
    Эти объекты используются только в стилях для:
    Упрощение создания стиля за счет композиции контролов для достижения наиболее часто используемых функций (смена изображений по триггеру в зависимости от состояния контрола  - кнопка с тремя состояниями, Текст с тенью) Увеличения производительности работы стиля за счет композиции контролов. Уменьшение размера стиля за счет повторного использования одного исходного изображения в однотипных контролах (TButton, TSpeedButton и тд). То есть вместо загрузки по отдельности каждого изображения в стиль каждого контрола, можно использовать изображения по ссылке. Чтобы их использовать, нужно их зарегистрировать в среде IDE RAD Studio.
    Это делает вот этот пакет: 
    RAD Studio XE5 - FMX Style Objects.zip RAD Studio XE6 - FMX Style Objects (XE6).zip После установки пакета в палитре инструментов появится вкладка "Style Object", в которой будут находится все служебные стилевые объекты среды RAD Studio XE5.
     
    Список добавляемых стилевых объектов: 
    TStyleObject - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект. TSubImage - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект. TActiveStyleObject - Объект для смены одного изображения на другое с указанным типом анимации и указанным триггером. TTabStyleObject - специальный объект для быстрого создания стиля вкладки TTabControl TCheckStyleObject - специальный упрощенный объект для создания стиля TCheckBox TButtonStyleObject - упрощенный объект стиля кнопки с поддержкой загрузки отдельных изображений на каждое состоянии кнопки (нормальное, фокус, под мышкой, нажатое) TSystemButtonObject - стиль системной кнопки. То же, что и TButtonStyleObject, только с дополнительным состоянием - неактивная кнопка TStyleTextObject - объект для быстрого создания стиля текст с тенью. TStyleTextAnimation - объект анимации для смены цвета и тени текста  TActiveStyleTextObject - объект стиля для создания текста с тенью и переключению цвета текста и тени на другой по анимации и триггеру. TTabStyleTextObject - объект стиля для создания вкладки с текстом для TTabControl. TButtonStyleTextObject - объект стиля для создания стиля кнопки с текстом. TActiveOpacityObject - объект для смены прозрачности контрола. TBrushObject - объект хранящий кисть TBrush TBitmapObject - объект хранящий изображение TBitmap TFontObject - хранение шрифта TFont TPathObject - хранение SVG пути TPath TColorObject - хранение цвета TAlphaColor
  16. Like
    Равиль Зарипов (ZuBy) отреагировална #WAMACO в Индивидуальные занятия по Skype   
    И не только книги, но хотя бы открытого "клиента" под этот форум!
  17. Like
    Равиль Зарипов (ZuBy) отреагировална FIL в fmx Popmenu ниже button как?   
    Хорошо. Отмечу лишь, что ListBox позволяет сделать все тоже самое и даже больше.
     
     

  18. Like
    Равиль Зарипов (ZuBy) получил реакцию от enatechno в [TListBox] Как отобразить итемы в виде панелей?   
    я же наоборот использую ListView, для достижении своих целей


  19. Like
    Равиль Зарипов (ZuBy) получил реакцию от enatechno в OnButtonClick vs OnItemClick   
    в итоге получилось так
     
    ContentView - TListView
    procedure TForm1.ContentViewItemClickEx(const Sender: TObject; ItemIndex: Integer; const LocalClickPos: TPointF; const ItemObject: TListItemObject); var   pMy: TPoint;   pItem: TRect; begin   // вычисляем прямоугольник, где распологается кнопка   pItem.Left := trunc(ContentView.Width - ContentView.ItemAppearanceObjects.ItemObjects.Accessory.WidthWhenVisible -     ContentView.ItemAppearanceObjects.ItemObjects.TextButton.WidthWhenVisible) - 12;   pItem.Right := pItem.Left + trunc(ContentView.ItemAppearanceObjects.ItemObjects.TextButton.WidthWhenVisible);   pItem.Top := trunc((ContentView.ItemAppearance.ItemHeight / 2) -     (ContentView.ItemAppearanceObjects.ItemObjects.TextButton.HeightWhenVisible / 2));   pItem.Bottom := pItem.Top + trunc(ContentView.ItemAppearanceObjects.ItemObjects.TextButton.HeightWhenVisible); {  смотрим куда тыкаем   ShowMessage('click : ' + LocalClickPos.X.ToString + '  ' + LocalClickPos.Y.ToString + #13#10 + 'client: ' +     ContentView.Width.ToString + #13#10 + pItem.Left.ToString + '  ' + pItem.Top.ToString + #13#10 + pItem.Right.ToString + '  ' +     pItem.Bottom.ToString + #13#10); }   pMy.X := trunc(LocalClickPos.X);   pMy.Y := trunc(LocalClickPos.Y);   if PtInRect(pItem, pMy) then   begin     ShowMessage('Нажалось))');   end else  begin    // нажатие на Item, выполняем код тут, не в OnItemClick  end; end; стиль вот такой используется

  20. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в [XE7-XE8] [Android] SONY   
    Для чего использовались драйвера (Windows 7/8/10 (x64)):
     
    Sony Xperia SP
    Sony Xperia L
    Sony Xperia Tablet Z
    и в архиве еще туча райверов для других девайсов от Sony ( размер архива 400 Mb !)
     
    https://drive.google.com/open?id=0B5LS-2rAfJMDVkIycVlOQ1hqejA
     
    P.S. Здесь и сделаю примечание по работе с данными девайсами.
    В случае попытки работы с графическими примитивами, рисование закрашенных градиентом примитивов, возникает "баг" - вместо того чтобы рисовать, например, прямоугольник залитый градиентом, рисуется прямоугольник цветом "Fuchsia".
    Чтобы избежать этого, рекомендую использовать обычные PNG.
    Например:

  21. Like
    Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в [TListBox] Как отобразить итемы в виде панелей?   
    я же наоборот использую ListView, для достижении своих целей


  22. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в [TListBox] Как отобразить итемы в виде панелей?   
    Не в первый раз вижу эту тему...
    TGridPanelLayout - далеко не предпочтительный вариант. Совсем.
    У ListBox с его Item'ами намного больше возможностей.
    С [xenon54] соглашусь, но не полностью. ListView действительно хорош (для мобильной платформы), однако он намного сложнее.
     
    Примеры применения стилей для ListBoxItem (не сочтите за рекламу, так проще было... нащелкал скринов для примера):
     

     
    Везде - ListBox.
    На последнем скрине - всплывающие сообщения на экране. Реализовано так же - прозрачная форма, ListBox и Item'ы со своим стилем В ВИДЕ ПАНЕЛЕК )
     

  23. Like
    Равиль Зарипов (ZuBy) получил реакцию от Евгений Корепов в [Android] Как можно изменить стиль кнопки в TListViewItem?   
    ListView1.DeleteButtonText := 'Удалить'; // меняем текст ListView1.CanSwipeDelete := false; // отключить появление кнопки
  24. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в TEdit с автозавершением   
    Раньше нельзя было прикреплять 7z файлы. Я после вашего сообщения добавил эти файлы в список разрешенных к прикреплению.
  25. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в [SSL] Как получить содержимое страницы по HTTPS с помощью INDY?   
    begin fSSL := TIdSSLIOHandlerSocketOpenSSL.Create(fHTTP); fHTTP.IOHandler := fSSL; fHTTP.AllowCookies := True; fHTTP.HandleRedirects := True; end; Указать НУЖНЫЙ тип SSL/TLS и его версию
    и если это Windows программа, то надеюсь вы не забыли библиотеки ssl положить вместе с исполнительным файлом
    ответ на запрос, проверьте id вашего приложения
×
×
  • Создать...