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

Alexander

Пользователи
  • Постов

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

  • Посещение

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

    2

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

  1. Like
    Alexander получил реакцию от Pax Beach в Eddystone   
    Может это поможет
  2. Like
    Alexander получил реакцию от Kitty в 3D приложение   
    На FMX, с такими моделями, лучше не рассчитывать. Если принципиально Objectpascal, то используйте связку Delphi +glscene, либо Delphi + OpenGL
  3. Like
    Alexander отреагировална Vitaldj в StringrGrid переехал из Seatle в Berlin в пути пропал багаж (DragDrop, DblClick)   
    Очень широко использовал и использую grid, так как в основном программирую для десктопов windows и mac. OnDblClick нужен! Двойной клик использую по разному.  Иногда для помещения в рядом стоящий edit какой либо информации. Иногда для открытия формы для редактирования этой записи (Бывает, что строка в grid'е составлена из разных таблиц, поэтому напрямую не отредактируешь ее).
  4. Like
    Alexander получил реакцию от Rusland в GlowEffect на кнопке   
    не знаю как в мобильной платформе работает, в настольной
    procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin GlowEffect1.Enabled := True; end; procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin GlowEffect1.Enabled := False; end;  
  5. Like
    Alexander получил реакцию от zairkz в OpenStreetMap   
    function osmGetTile(const Latitude, Longitude: double;const Scale: integer): TTile; begin Result.Scale:=Scale; Result.TileX:=osmGetTileX(Latitude, Longitude, Scale); Result.TileY:=osmGetTileY(Latitude, Longitude, Scale); end; function osmGetTileX(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((Longitude+180)/360*Power(2, Scale)); end; function osmGetTileY(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((1-ln(Tan(Latitude*PI/180)+1/Cos(Latitude*PI/180))/PI)/2*Power(2, Scale)); end; Что касается тайлов. их можно получить либо скачивая с сайта по URL 'http://tile.openstreetmap.org/'+Scale/+ TileX/+TileY.png, либо установить программу, которая подключается к БД OSM и нарезает тайлы в указанный каталог на вашем ПК.
    При разработке логики программы необязательно задействовать собственный тайловый сервер, достаточно кешировать просматриваемые с сайта тайлы (например, так работает яндекс.навигатор)
  6. Like
    Alexander получил реакцию от Rusland в OpenStreetMap   
    function osmGetTile(const Latitude, Longitude: double;const Scale: integer): TTile; begin Result.Scale:=Scale; Result.TileX:=osmGetTileX(Latitude, Longitude, Scale); Result.TileY:=osmGetTileY(Latitude, Longitude, Scale); end; function osmGetTileX(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((Longitude+180)/360*Power(2, Scale)); end; function osmGetTileY(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((1-ln(Tan(Latitude*PI/180)+1/Cos(Latitude*PI/180))/PI)/2*Power(2, Scale)); end; Что касается тайлов. их можно получить либо скачивая с сайта по URL 'http://tile.openstreetmap.org/'+Scale/+ TileX/+TileY.png, либо установить программу, которая подключается к БД OSM и нарезает тайлы в указанный каталог на вашем ПК.
    При разработке логики программы необязательно задействовать собственный тайловый сервер, достаточно кешировать просматриваемые с сайта тайлы (например, так работает яндекс.навигатор)
  7. Like
    Alexander получил реакцию от Kitty в OpenStreetMap   
    function osmGetTile(const Latitude, Longitude: double;const Scale: integer): TTile; begin Result.Scale:=Scale; Result.TileX:=osmGetTileX(Latitude, Longitude, Scale); Result.TileY:=osmGetTileY(Latitude, Longitude, Scale); end; function osmGetTileX(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((Longitude+180)/360*Power(2, Scale)); end; function osmGetTileY(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((1-ln(Tan(Latitude*PI/180)+1/Cos(Latitude*PI/180))/PI)/2*Power(2, Scale)); end; Что касается тайлов. их можно получить либо скачивая с сайта по URL 'http://tile.openstreetmap.org/'+Scale/+ TileX/+TileY.png, либо установить программу, которая подключается к БД OSM и нарезает тайлы в указанный каталог на вашем ПК.
    При разработке логики программы необязательно задействовать собственный тайловый сервер, достаточно кешировать просматриваемые с сайта тайлы (например, так работает яндекс.навигатор)
  8. Like
    Alexander получил реакцию от Brovin Yaroslav в OpenStreetMap   
    function osmGetTile(const Latitude, Longitude: double;const Scale: integer): TTile; begin Result.Scale:=Scale; Result.TileX:=osmGetTileX(Latitude, Longitude, Scale); Result.TileY:=osmGetTileY(Latitude, Longitude, Scale); end; function osmGetTileX(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((Longitude+180)/360*Power(2, Scale)); end; function osmGetTileY(const Latitude, Longitude: double; const Scale: integer): integer; begin Result:=Floor((1-ln(Tan(Latitude*PI/180)+1/Cos(Latitude*PI/180))/PI)/2*Power(2, Scale)); end; Что касается тайлов. их можно получить либо скачивая с сайта по URL 'http://tile.openstreetmap.org/'+Scale/+ TileX/+TileY.png, либо установить программу, которая подключается к БД OSM и нарезает тайлы в указанный каталог на вашем ПК.
    При разработке логики программы необязательно задействовать собственный тайловый сервер, достаточно кешировать просматриваемые с сайта тайлы (например, так работает яндекс.навигатор)
  9. Like
    Alexander получил реакцию от OnePeople в Глюк анимации   
    внизу архив
  10. Like
    Alexander получил реакцию от Kitty в Вопрос об скрости разработки   
    Ничего сложного, на Layout положить Rectangle и 4 Circle. Rectangle сделать прозрачным.Circle по иерархии присвоить Layout. У каждого Circle в Fill загрузить иконку. К Layout приделать анимацию появление/скрытие и готово.
  11. Like
    Alexander получил реакцию от zairkz в Geofencing   
    На прямую возможность, через компоненты, получить доступ к технологии я не нашёл. Но вот тут  есть примеры реализации для мобильного приложения
  12. Like
    Alexander получил реакцию от Kitty в Geofencing   
    На прямую возможность, через компоненты, получить доступ к технологии я не нашёл. Но вот тут  есть примеры реализации для мобильного приложения
  13. Like
    Alexander получил реакцию от Andrey Efimov в Geofencing   
    На прямую возможность, через компоненты, получить доступ к технологии я не нашёл. Но вот тут  есть примеры реализации для мобильного приложения
  14. Like
    Alexander отреагировална rareMax в TeeBI - для тех, кто часто работает с данными и не только   
    Если вы часто работаете с данными, анализируете их - то советую обратить на бесплатную библиотеку классов и компонентов от Steema. Библиотека активно развивается и улучшается.

    Поддержка всех платформ(VCL+LCL+FMX)
    Описание функционала найдете на официальных источниках.
    GitHub https://github.com/Steema/BI/wiki
    g+ https://plus.google.com/communities/117324086536146457211
    site http://www.steebi.com/
      Download Size Date Description   TeeBI for RAD Studio Beta 9 42MB 29th Feb 2016 Includes full source code for Delphi RAD Studio XE4 up to XE10 Seattle Update 1 ЗЫ: В дальнейшем сообщать о найденных интересных библиотеках для FMX?
  15. Like
    Alexander отреагировална Andy в Обновление форума   
    Если есть возможность в мобильной версии форума "Последние темы" поднять в начало страницы. Думаю дл многих актуально... 
  16. Like
    Alexander получил реакцию от Pax Beach в Какие статьи вы хотели бы видеть в блогах?   
    Создание сложных стилей с привязкой к создаваемым пользовательским классам. Заполнение интерфейса DisignTime и RealTime.
  17. Like
    Alexander получил реакцию от Kitty в BeaconFence   
    https://jeapie.com/ru/blog/what-is-beacon/
    https://ru.wikipedia.org/wiki/IBeacon
    аА почему бы и нет:-). Можно использовать, но необходимы маячки и включенный смартфон у продавца с приложением
  18. Like
    Alexander получил реакцию от Brovin Yaroslav в Почему между двумя версиями Android разный размер приложения   
    уже обсуждали http://fire-monkey.ru/topic/2178-razmer-prilozheniia-na-raznykh-ustroistvakh/?hl=размер
  19. Like
    Alexander получил реакцию от Rusland в GPS   
    Нет возможности проверить, Tlocationsensor.Sensor.SensorType возможно, там либо устанавливается тип сенсора или приходит "тип" координат
  20. Like
    Alexander получил реакцию от Alex7wrt в Изменение курсора мыши, Windows   
    всё правильно, вы в обработчике компонента присваиваете курсор не компоненту, а форме. Хотите, чтоб и над компонентом был такой курсор, так и ему присвойте.
    Проверил у себя, данный код работает
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); begin if Rectangle1.Cursor = crHourGlass then Form1.Cursor := crSQLWait else Form1.Cursor := crSizeNWSE; end; procedure TForm1.Rectangle1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); begin Form1.Cursor := crSizeAll; Rectangle1.Cursor := crHourGlass; end;
  21. Like
    Alexander получил реакцию от Rusland в Количество видимых спутников   
    System.Sensors.TGpsStatus.Satellites.SatelliteCount подойдёт?
  22. Like
    Alexander получил реакцию от SergeyIT в Перетаскивание отрезка   
    Всё работает, если убрать поворот на 90 градусов
  23. Like
    Alexander получил реакцию от Rusland в [Android] [XE7] Какой компонент выбрать для карты?   
    Черновой вариант, использую в Windows. На сколько адаптировано к Android не знаю, не компилил procedure TMap.FullScreen(Image:TImage;Tile:TOSMTile); var I: Byte; j: Integer; BMPTile, BMPImage:TBitmap; rctIn, rctOut:TRectF; S:String; begin rctOUT:= TRectF.Create(0,0,255,255); BMPImage := TBitmap.Create; BMPImage.Width := Round(Image.Width); BMPImage.Height := Round(Image.Height); BMPTile := TBitmap.Create; if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)) then ForceDirectories(FPathTile+IntToStr(Tile.Zoom)); for I := 1 to FTileWidth do for j := 1 to FTileHeight do begin S:= FPathTile+format('%d\%d\%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]); while Assigned(FHTTP) and not FileExists(S) do begin if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1)) then ForceDirectories(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1)); LoadURLToFile(S, 'http://b.tile.openstreetmap.org/'+format('%d/%d/%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]), FHTTP); end; if FileExists(S) then begin rctIn := TRectF.Create(256*(i-1),256*(j-1),256*(i),256*(j)); BMPTile.LoadFromFile(S); BMPImage.Canvas.BeginScene(); BMPImage.Canvas.DrawBitmap(BMPTile,rctOut,rctIn,100,True); // BMPImage.Canvas.Fill.Kind := TBrushKind.None; // BMPImage.Canvas.DrawRect(TRectF.Create(0,0,FScreenWidth, FScreenHeight),0, 0, AllCorners, 100); BMPImage.Canvas.EndScene; end end; Image.Bitmap:= TBitmap.Create; Image.Bitmap.Clear($FFFFFFFF); Image.Bitmap.Assign(BMPImage); end;
  24. Like
    Alexander получил реакцию от Brovin Yaroslav в Координаты центральной точки в закрашенной области.   
    R := 80; Canvas.BeginScene(); Alpha := ((Sender as TPie).EndAngle+(Sender as TPie).StartAngle)/2; dX := (Sender as TPie).Width /2+ R * Cos(DegToRad(Alpha)); dY := (Sender as TPie).Height/2 +R * Sin(DegToRad(Alpha)); rct.Create(dX-5,dY-5,dX+5,dY+5); Canvas.DrawEllipse(rct,100); Canvas.EndScene();
  25. Like
    Alexander получил реакцию от Евгений Корепов в ScrollBox.ViewportPosition анимация   
    У Floatanimation есть событие Process. В его обработчике пропишите изменение image.position пропорционально увеличению image
×
×
  • Создать...