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

krapotkin

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

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

  • Посещение

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

    209

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

  1. Like
    krapotkin получил реакцию от Равиль Зарипов (ZuBy) в Динамическое создание и уничтожение TForm   
    не знаю, у меня формы с  Action=caFree нормально убиваются
    то, что при этом не сразу вызывается деструктор, это описанное поведение 
     
    но есть еще form.Release
    кроме того пытаюсь привыкнуть к созданию форм
    TMyForm.Create(NIL).Show; либо диалогов
    var f:TMyDialog; begin   f:=TMyDialog.Create(NIL);   f.showModal(procedure (AResult:TModalResult) begin   case AResult of     mrOK:begin     end;   end;  end); FreeAndNil(F); end;
  2. Like
    krapotkin получил реакцию от zairkz в MultiView и MasterButton   
    Новая особенность MultiView 
    MasterButton работает только в случае, если лежит в одном и том же контейнере, что и MultiView
     
    у меня была раскладка - Тулбар, Align = Top
    TLayout Align = Client
    в Layout помещен MultiView и TPanel - TargetControl
    кнопка на тулбаре установлена как MasterButton
    в XE8.1 она работала, в DX10 перестала
    всю голову сломал, пока догадался тулбар сунуть в панель
  3. Like
    krapotkin получил реакцию от Rusland в Запрет ввода определенных символов в TEdit   
    пора забывать в юникоде про set of char
    там компилятор делает преобразование и могут быть ошибки при совмещении widechar и ansichar
    я пользуюсь строковыми константами и поиском типа
    if '123478906zxcvmnwerqoipu'.Contains(ch) then
    те же яйца pos(), только в профиль
  4. Like
    krapotkin отреагировална Равиль Зарипов (ZuBy) в TMapsEngine   
    Обновил TMapsEngine с выходом Delphi 10 Seattle
    Вырезал нативный сенсор (т.к. исправили TLocationSensor) переименовал методы, в соответствии с используемым API Добавил Yandex Locator API (определение координат по IP, WI-FI, GSM) для определения своих координат, достаточно отправить пустой IP адрес, yandex сам распознает откуда был запрос сделан
     
    модуль TMapsEngine_Seattle_10.zip
  5. Like
    krapotkin получил реакцию от bigjorj в RAD XE9 (RAD X Seattle)   
    Действительно, следующая версия - Kostroma! )))
  6. Like
    krapotkin получил реакцию от rareMax в Скрыть/показать ряд в TStringGrid   
    конечно
    с т.з. пользователя будет "скрыть"
    с т.з. программиста "скопировать все нижележащие строки на одну вверх и уменьшить кол-во строк на 1"
  7. Like
    krapotkin получил реакцию от zairkz в RAD XE9 (RAD X Seattle)   
    сервисы - важнее
    и исправления в RTL
    и мульти-вью
  8. Like
    krapotkin получил реакцию от kami в RAD XE9 (RAD X Seattle)   
    после чтения bug-fix прямо в раздумьях -- как хоть что-то работало ? и что делать если ошибки того же уровня есть в новой версии...
  9. Like
    krapotkin получил реакцию от Kitty в ini файл в телефоне   
    посмотрите как сделано тут
    там есть ссылка на комплект исходников
  10. Like
    krapotkin получил реакцию от rareMax в При динамическом создании объектов, они всегда поверх всех.   
    ну, как бы очень оптимистом нужно быть, чтобы браузер в listBoxItem запихать
    такой жуткий оверхед...
  11. Like
    krapotkin получил реакцию от sulion в Как программно отмасштабировать TImage   
    я делал галерею полностью из layout + scrollbox для timage, заключенных в эти layouts
    и в той же программе просто масштабируемый вывод нескольких слоев картинки в панель
    во втором случае мне кажется использование TImage не нужно
  12. Like
    krapotkin получил реакцию от rareMax в Атрибуты в Delphi   
    насколько я разумею, атрибут это дополнительные свойства и даже методы, приаттаченные к объекту RTTI - классу, методу класса, полю
    при работе мы можем учитывать это свойство
    например, в этой библиотеке
    при сериализации объекта в JSON можно переименовать поле, или убрать его из сериализации вовсе
    в датаснап с помощью атрибутов сделана авторизация на исполнение метода
  13. Like
    krapotkin отреагировална Равиль Зарипов (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. Like
    krapotkin получил реакцию от Brovin Yaroslav в Недостающий вариант Image WrapMode   
    Большое спасибо за готовое решение. Я примерно то же делал ручками через копирование по месту.
    Конечно, было бы круто, чтобы эта функциональность попала в стандартный image.
    Там ведь есть всякие варианты типа TRectangle.Fill, в которые тоже можно пихать картинки...
  15. Like
    krapotkin получил реакцию от Rusland в Есть ли возможность дебага приложения запущенного на Андроид?   
    если мы говорим про XE8 дебаг работает, просто нужно 

    правда глючный он нынче очень
    теперь он почти не показывает поля объектов, в потоках вообще беспомощен
    хорошо помогает присваивание во временные локальные переменные простых типов. их он видит нормально
  16. Like
    krapotkin отреагировална Brovin Yaroslav в Как закрасить имеющийся рисунок?   
    Надо зону выреза не просто сделать полностью прозрачным, а добавить туда белый цвет. Как сейчас модно делать. Смешивают белый с альфа каналом. Получается еле заметная белесая маска. А далее под нее если подкладываешь монотонный цвет. И в итоге в результате смешивания можно получить неплохой натуранльный цвет с тенями.
     
    P.S. В принципе это тот же самый способ, что и с маской. Просто не нужно дополнительно ручками попиксельно менять цвет. Можно без кода сразу сделать смешивание на уровне FMX.
  17. Like
    krapotkin получил реакцию от Martifan в узнать расстояние между 2 точками   
    function DistanceMeters(const Crd1,Crd2:TLocationCoord2D):Double; begin   try   result := (1609.344*3958.75 *     arccos(sin(Crd1.Latitude/57.2958) * sin(Crd1.Latitude/57.2958) +     cos(Crd1.Latitude/57.2958) * cos(Crd2.Latitude/57.2958) * cos(Crd2.Longitude/57.2958     - Crd1.Longitude/57.2958)));   except     result := 0;   end; end;
  18. Like
    krapotkin отреагировална Brovin Yaroslav в TListBoxItem.Data и ARC   
    Перехватить момент удаление объекта можно используя интерфейс IFreeNotification.
  19. Like
    krapotkin отреагировална AngryOwl в [TListBox] Как отобразить итемы в виде панелей?   
    Не в первый раз вижу эту тему...
    TGridPanelLayout - далеко не предпочтительный вариант. Совсем.
    У ListBox с его Item'ами намного больше возможностей.
    С [xenon54] соглашусь, но не полностью. ListView действительно хорош (для мобильной платформы), однако он намного сложнее.
     
    Примеры применения стилей для ListBoxItem (не сочтите за рекламу, так проще было... нащелкал скринов для примера):
     

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

  20. Like
    krapotkin отреагировална Brovin Yaroslav в Аналог Post в FMX android   
    С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно:
    Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода:
    class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток. 
     
    Итог
    TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.  
  21. Like
    krapotkin получил реакцию от Mazzay в Ввод числа - самый простой способ фильтрации   
    тут статья
  22. Like
    krapotkin получил реакцию от kami в Ввод числа - самый простой способ фильтрации   
    вместо tagString можно использовать Model.Data, это более концептуально верно
  23. Like
    krapotkin получил реакцию от Евгений Корепов в com-порт FireMonkey   
    вполне можно без компонентов пользоваться просто WinApi
    portNum='\\.\COM28'; CommHandle:= CreateFile(portNum,GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0); ссылка
  24. Like
    krapotkin отреагировална kami в Отправка содержимого Edit на сервер   
    В первую очередь определитесь, в каком виде сервер хочет получить содержимое вашего Edit. И хочет ли вообще.
    Есть как минимум два варианта отправки (по http(s)) - метод GET и метод POST.
     
    Anyway - до сервера должна быть возможность достучаться. В общем случае - сервер должен иметь белый статический IP. Если используется только локалка (пусть даже и с разными подсетями) - тут проще.
     
    Берете Indy, десктопное приложение будет выступать сервером (idHTTPServer), а мобильное приложение - клиентом (idHTTPClient). Клиент отправляет данные через idHTTPClient1.Get|Post, а сервер в событии приема данных ловит это и обрабатывает.
  25. Like
    krapotkin отреагировална Brovin Yaroslav в TEdit с автозавершением   
    Любопытная ошибка. Попробуйте внести следующие изменения в FMX.Platform.Android.pas так:
     
    Найдите метод
    function TWindowManager.FindTopWindow: TAndroidWindowHandle; var I: Integer; begin for I := FWindows.Count - 1 downto 0 do if FWindows[I].Form.Visible then Exit(FWindows[I]); Result := nil; end; И замените условие IF на следующее:
    if FWindows[I].Form.Visible and not (FWindows[I].Form is TCustomPopupForm) then По идеи это должно помочь
×
×
  • Создать...