krapotkin
-
Постов
2 185 -
Зарегистрирован
-
Посещение
-
Победитель дней
209
Активность репутации
-
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; -
krapotkin получил реакцию от zairkz в MultiView и MasterButton
Новая особенность MultiView
MasterButton работает только в случае, если лежит в одном и том же контейнере, что и MultiView
у меня была раскладка - Тулбар, Align = Top
TLayout Align = Client
в Layout помещен MultiView и TPanel - TargetControl
кнопка на тулбаре установлена как MasterButton
в XE8.1 она работала, в DX10 перестала
всю голову сломал, пока догадался тулбар сунуть в панель
-
krapotkin получил реакцию от Rusland в Запрет ввода определенных символов в TEdit
пора забывать в юникоде про set of char
там компилятор делает преобразование и могут быть ошибки при совмещении widechar и ansichar
я пользуюсь строковыми константами и поиском типа
if '123478906zxcvmnwerqoipu'.Contains(ch) then
те же яйца pos(), только в профиль
-
krapotkin отреагировална Равиль Зарипов (ZuBy) в TMapsEngine
Обновил TMapsEngine с выходом Delphi 10 Seattle
Вырезал нативный сенсор (т.к. исправили TLocationSensor) переименовал методы, в соответствии с используемым API Добавил Yandex Locator API (определение координат по IP, WI-FI, GSM) для определения своих координат, достаточно отправить пустой IP адрес, yandex сам распознает откуда был запрос сделан
модуль TMapsEngine_Seattle_10.zip
-
krapotkin получил реакцию от bigjorj в RAD XE9 (RAD X Seattle)
Действительно, следующая версия - Kostroma! )))
-
krapotkin получил реакцию от rareMax в Скрыть/показать ряд в TStringGrid
конечно
с т.з. пользователя будет "скрыть"
с т.з. программиста "скопировать все нижележащие строки на одну вверх и уменьшить кол-во строк на 1"
-
krapotkin получил реакцию от zairkz в RAD XE9 (RAD X Seattle)
сервисы - важнее
и исправления в RTL
и мульти-вью
-
krapotkin получил реакцию от kami в RAD XE9 (RAD X Seattle)
после чтения bug-fix прямо в раздумьях -- как хоть что-то работало ? и что делать если ошибки того же уровня есть в новой версии...
-
krapotkin получил реакцию от Kitty в ini файл в телефоне
посмотрите как сделано тут
там есть ссылка на комплект исходников
-
krapotkin получил реакцию от rareMax в При динамическом создании объектов, они всегда поверх всех.
ну, как бы очень оптимистом нужно быть, чтобы браузер в listBoxItem запихать
такой жуткий оверхед...
-
krapotkin получил реакцию от sulion в Как программно отмасштабировать TImage
я делал галерею полностью из layout + scrollbox для timage, заключенных в эти layouts
и в той же программе просто масштабируемый вывод нескольких слоев картинки в панель
во втором случае мне кажется использование TImage не нужно
-
krapotkin получил реакцию от rareMax в Атрибуты в Delphi
насколько я разумею, атрибут это дополнительные свойства и даже методы, приаттаченные к объекту RTTI - классу, методу класса, полю
при работе мы можем учитывать это свойство
например, в этой библиотеке
при сериализации объекта в JSON можно переименовать поле, или убрать его из сериализации вовсе
в датаснап с помощью атрибутов сделана авторизация на исполнение метода
-
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 мб )
-
krapotkin получил реакцию от Brovin Yaroslav в Недостающий вариант Image WrapMode
Большое спасибо за готовое решение. Я примерно то же делал ручками через копирование по месту.
Конечно, было бы круто, чтобы эта функциональность попала в стандартный image.
Там ведь есть всякие варианты типа TRectangle.Fill, в которые тоже можно пихать картинки...
-
krapotkin получил реакцию от Rusland в Есть ли возможность дебага приложения запущенного на Андроид?
если мы говорим про XE8 дебаг работает, просто нужно
правда глючный он нынче очень
теперь он почти не показывает поля объектов, в потоках вообще беспомощен
хорошо помогает присваивание во временные локальные переменные простых типов. их он видит нормально
-
krapotkin отреагировална Brovin Yaroslav в Как закрасить имеющийся рисунок?
Надо зону выреза не просто сделать полностью прозрачным, а добавить туда белый цвет. Как сейчас модно делать. Смешивают белый с альфа каналом. Получается еле заметная белесая маска. А далее под нее если подкладываешь монотонный цвет. И в итоге в результате смешивания можно получить неплохой натуранльный цвет с тенями.
P.S. В принципе это тот же самый способ, что и с маской. Просто не нужно дополнительно ручками попиксельно менять цвет. Можно без кода сразу сделать смешивание на уровне FMX.
-
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; -
krapotkin отреагировална Brovin Yaroslav в TListBoxItem.Data и ARC
Перехватить момент удаление объекта можно используя интерфейс IFreeNotification.
-
krapotkin отреагировална AngryOwl в [TListBox] Как отобразить итемы в виде панелей?
Не в первый раз вижу эту тему...
TGridPanelLayout - далеко не предпочтительный вариант. Совсем.
У ListBox с его Item'ами намного больше возможностей.
С [xenon54] соглашусь, но не полностью. ListView действительно хорош (для мобильной платформы), однако он намного сложнее.
Примеры применения стилей для ListBoxItem (не сочтите за рекламу, так проще было... нащелкал скринов для примера):
Везде - ListBox.
На последнем скрине - всплывающие сообщения на экране. Реализовано так же - прозрачная форма, ListBox и Item'ы со своим стилем В ВИДЕ ПАНЕЛЕК )
-
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 идет из главного потока, то это равносильно прямому вызову процедуры или метода.
-
-
krapotkin получил реакцию от kami в Ввод числа - самый простой способ фильтрации
вместо tagString можно использовать Model.Data, это более концептуально верно
-
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); ссылка
-
krapotkin отреагировална kami в Отправка содержимого Edit на сервер
В первую очередь определитесь, в каком виде сервер хочет получить содержимое вашего Edit. И хочет ли вообще.
Есть как минимум два варианта отправки (по http(s)) - метод GET и метод POST.
Anyway - до сервера должна быть возможность достучаться. В общем случае - сервер должен иметь белый статический IP. Если используется только локалка (пусть даже и с разными подсетями) - тут проще.
Берете Indy, десктопное приложение будет выступать сервером (idHTTPServer), а мобильное приложение - клиентом (idHTTPClient). Клиент отправляет данные через idHTTPClient1.Get|Post, а сервер в событии приема данных ловит это и обрабатывает.
-
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 По идеи это должно помочь