Перейти к содержанию
  • Регистрация

Anatoliy

Пользователи
  • Публикаций

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

  • Посещение


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

  1. Like
    Anatoliy отреагировална krapotkin в Фреймворк для стандартного ListView   
    P.S.
    по факту использования мне показалось, что удобнее использовать не отдельный JSON файл, а прямо в коде константой задавать JSON строкой.
    (Видимо сказались приключения с деплоем)))
  2. Like
    Anatoliy отреагировална Tumaso в Долгая реакция переключения вкладок   
    Попробуй при создании приложения единоразово вызвать процедуру PreloadContent(TabControl2), где PreloadContent определена следующим образом:
    procedure PreloadContent(const AControl: TControl); {$IF DEFINED(ANDROID) or DEFINED(IOS)} var I: Integer; {$ENDIF} begin {$IF DEFINED(ANDROID) or DEFINED(IOS)} if AControl is TStyledControl then TStyledControl(AControl).ApplyStyleLookup; if AControl.ControlsCount > 0 then for I := 0 to AControl.ControlsCount - 1 do PreloadContent(AControl.Controls[I]); {$ENDIF} end;  
  3. Like
    Anatoliy отреагировална Tumaso в firemonkey android otg camera   
    а этот микроскоп определяется андроидом как стандартная камера? если да, то задача несложная. В rio вообще всё из коробки, в berlin нужен дополнительный модуль запроса разрешений (для андроид 6+), а с камерой можно работать из коробки
  4. Like
    Anatoliy отреагировална Maka в переход к x64?   
    Отвечают долго, 10-14 дней, а потом еще около 7 дней переписка, проверки и ожидание решения. Наберитесь терпения
  5. Like
    Anatoliy отреагировална krapotkin в Загрузка настроек приложения из БД   
    правильный ответ - не делать так ))
    нужно хранить настройки приложения в отдельном классе
    тогда кроме самого класса нужны методы, которые 
    1) читают пишут его из ... файла, БД, интернета и т.д.
    2) в нужный момент (обычно чтобы изобразить форму и заполнить св-ва компонентов или еще для чего угодно) использовать эти настройки
    3) вытекает из 2) сохранять в нужный момент новые значения в переменную, где лежат настройки
    для хранения настроек отлично подходит JSON. Т.к. он может иметь иерархическую структуру, что очень удобно. Его и хранить в БД.
    Можно и прямо поля, строки и все такое, но все равно, собирать их нужно в некое хранилище в программе.
    Пример разбирал тут http://www.cyberforum.ru/blogs/469693/blog4883.html
  6. Like
    Anatoliy отреагировална Slym в Загрузка настроек приложения из БД   
    FDQuery1.Lookup?
    или RTTI
    c:=FindComponent(FDQuery1.Fields[1].AsString)
    if assigned(c)
      SetProp(c,FDQuery1.Fields[2].AsString,TValue.From(FDQuery1.Fields[3].AsString))
     
  7. Like
    Anatoliy отреагировална Rusland в Invalid parameter при подключении таблицы   
    Кажется нашел я причину проблем с моим DataSnap проектом - при создании я поставил галочку HTTPS. 
    Сейчас пересоздал проект заново без HTTPS, все заработало.
    PS. Возможно просто нужно найти правильные ssleay32.dll и libeay32.dll
  8. Like
    Anatoliy отреагировална Евгений Корепов в Умный дом   
    К сожалению тема никакого отношения в Умному дому не имеет. В телеграмме я поднимал тему о реальных технологиях умного дома - датчиках (задымление, протечка, газ, открытие двери/окна, движение), протоколы и технологии соединения всего этого, к примеру ZigBee, ну и работа со всем этим хозяйством.
    Тема прикольная и интересная. Написал на delphi класс работы в ZigBee шлюзом, нормально опрашиваю все датчики, но запись реализовать не удалось из за отсутствия в delphi библиотек шифрования "из коробки". Наработок куча, но все они времен Delph 7 - абсолютно все используют короткие ANSI строки, и в современных версиях среды результат шифрования/дешифровки может быть какой угодно, но не правильный.
    Пока все что нужно по быстрому написал на php, там хоть с шифрованием порядок, не надо изобретать велосипед или адаптировать код двадцатилетней давности.
    Так что теперь могу включать/выключать свет с помощью умной розетки, включать светильник на основном хабе, выбирая яркость и палитру, но на php ))))
  9. Like
    Anatoliy отреагировална krapotkin в Фреймворк для стандартного ListView   
    еще один пример раскладки из реального проекта

    { "Columns":[], "Variables": [ {"Y_UNIT":"12"}, {"GAP":"8"}, {"ITEM_H":"2*GAP+5*Y_UNIT"}, {"IMG_H":"76"}, {"IMG_W":"76"}, {"STOCK_SIZE":"48"}, {"PRICE_COLW":"53"} ], "Objects": [ {"Name":"ID","Kind":"data"}, , {"Name":"img","Kind":"image", "Place":{"X":"0","Y":"0","W":"IMG_W","H":"IMG_H"}, } , {"Name":"Text","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"img.right","Y":"GAP","W":"itemwidth - IMG_W - GAP - 2*PRICE_COLW - GAP","H":"52"}, "WordWrap":true, "Color":"black", "Font":{"Size":12} } , {"Name":"earlier","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"text.left","Y":"ITEM_H-2*GAP+2","W":"itemwidth - 2*PRICE_COLW","H":"Y_UNIT"}, "WordWrap":false, "Color":"green", "Font":{"Size":10} } , {"Name":"price1","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"itemwidth-GAP-PRICE_COLW-W","Y":"GAP+2*Y_UNIT","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15} } , {"Name":"imgstrike","Kind":"image", "Place":{"X":"price1.x-5","Y":"price1.y","W":"price1.w+8","H":"price1.h"}, } , {"Name":"price2","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"price1.right-W","Y":"ITEM_H-GAP-Y_UNIT*1.5","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15, "style":"bold"} } , {"Name":"qty","Kind":"text","TextHAlign":"trailing","TextVAlign":"center", "Place":{"X":"itemwidth-PRICE_COLW-GAP","Y":"GAP","W":"PRICE_COLW","H":"2*Y_UNIT"}, "WordWrap":false, "Color":"black", "Font":{"Size":27, "style":"bold"} } , {"Name":"imgstock","Kind":"image", "Place":{"X":"itemwidth-STOCK_SIZE-3","Y":"ITEM_H-STOCK_SIZE-4","W":"STOCK_SIZE","H":"STOCK_SIZE"}, } ], "ItemHeight":"ITEM_H", "ItemSpaces": {"X":"0","Y":"0","W":"0","H":""}, "SideSpace":"0" }  
  10. Like
    Anatoliy отреагировална krapotkin в Удаление динамически созданных компонентов   
    Во-первых, откройте для себя фреймы ))
    Во-вторых убивать себя из обработчика себя нельзя, да и не нужно (см п.1)
    В качестве костыля.
    1. Создавайте все с Owner=NIL2.
    2. 
    TTask.Run(procedure begin   tthread.synchronize(nil, procedure begin     KILLTHEMALL(); end); end)  
  11. Like
    Anatoliy отреагировална qz5 в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Короче нашел способ, чтобы добавлялись Item при LiveBinding! Потратил кучу времени. Вот так:
    FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; Но есть тогда другая проблема - ListView прокручивается на самый верх при добавлении новых строк.
    Решил это вот так:
    procedure TForm1.ListView1ScrollViewChange(Sender: TObject); var ItemHeight, p: single; begin p := ListView1.ScrollViewPos; ItemHeight := ListView1.ItemAppearance.ItemHeight; if ListView1.ScrollViewPos + ListView1.Height > ItemHeight * 0.8 * ListView1.ItemCount then begin FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; ListView1.ScrollViewPos := p; end; end; В принципе работает, надо только добавить условия, что все данные показаны и т.п., но наверное не буду я всё равно делать на биндингах.
    Хочу всё переделать назад на ручное добавление элементов. Подумаю как лучше будет работать.
  12. Like
    Anatoliy отреагировална mab в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Доброго времени суток, коллеги.
    Столкнулся с проблемой неотрисовки итемов в ListView при выставлении свойства TFDQuery.FetchOptions.Mode := fmManual. Данные с TListView (и TGrid) связаны посредством LiveBindings. На скрине видно, что данные в принципе загружены в датасет и даже отображаются в TGrid, но не в Listview.

    Может кто сталкивался? Варианты пробовал разные, бьюсь 3-й день, но увы(
    До решения в общем додумался (но вышеуказанный способ не выходит из головы))): отлавливать событие, что список прокручен до упора и увеличивать свойство FetchOptions.RecsMax (при FetchOptions.Mode := скажем fmAll).
    Для чего нужно: открывать без задержек таблицы с большим количеством записей, не загружая их в датасет сразу все. fmOnDemand необходимого эффекта не дал - все равно загружаются все записи сразу. Хотя здесь (http://docwiki.embarcadero.com/Libraries/XE8/en/FireDAC.Stan.Option.TFDFetchOptions.Mode) о свойстве с этим значением написано обратное.
    PS. Delphi XE7 (XE8), БД SQLite. Проект в прицепе.
    33333.zip
  13. Like
    Anatoliy отреагировална DirtyBorov в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Похоже FireDAC плохо дружит с LiveBinding. Я тоже напоролся на проблему - не обновляются данные. 
    Есть 3 три таблицы, связанных внешними ключами через Master/Detail, по цепочке 1>2>3. Если перейти по записям в первой таблице - во второй данные обновятся, а в третьей - нет. Обновляются только если нет связанных данных.
    Самое интересное то, что точно такой же проект, с теме же таблицами на VCL отлично работает. Из чего складывается вывод - косячит биндинг. Точнее TBindSourceDB.
  14. Like
    Anatoliy отреагировална alexei в Определение включена ли на устройстве возможность применять mock location   
    вот тебе методы обнаружения ложных gps с исходниками :https://github.com/smarques84/MockLocationDetector
  15. Like
    Anatoliy отреагировална qz5 в Модерация приложения в google play   
    Сейчас вроде три дня обещают модерировать
  16. Like
    Anatoliy отреагировална Martifan в FireDac компоненты   
    var DriverID, Server, SetDatabase, UserName, Password: string; Begin .... FDConnection1.Close; FDConnection1.Params.Clear; FDConnection1.Params.Add('DriverID=' + DriverID); FDConnection1.Params.Add('SERVER=' + Server); FDConnection1.Params.Add('Database=' + SetDatabase); FDConnection1.Params.Add('User_Name=' + UserName); FDConnection1.Params.Add('Password=' + Password); FDConnection1.Open; End;  
  17. Like
    Anatoliy отреагировална dnekrasov в ADO components   
    Это надо делать после присвоения LoginPrompt и ConnectionString.
    IsLinkedTo только проверяет привязку  DataSource к DataSet. В Вашем случае - бесполезная строчка (мало того - ещё и вредная).
    Насчёт связи StringGrid и DataSource - в FMX, насколько я знаю, кроме LiveBindings стандартных вариантов нет (ну кроме как ручками отрисовывать ячейки). 
  18. Like
    Anatoliy получил реакцию от qz5 в Умный дом   
    В телеграмм канале обсуждалось создание умного дома. Пишу сюда. Телеграмм канал не удобен. Со временем там каша ничего не найти. Он лучше для флуда, а форум самое то. По теме - в студии для управления домом все есть из коробки. Сами биконы стоят копейки.
    Видио показывает управление. Ну и дополнительные полезные ссылки на  yutube:
     
  19. Like
    Anatoliy отреагировална krapotkin в Фреймворк для стандартного ListView   
    Вот и картинки подвезли. Идиотский Deployment отказывается переписывать старые файлы на новые....
    Пока полностью не удалил приложение, файл-описание раскладки был старый, без картинок
    Как видно из заголовка 3000+ итемов с авторасчетом высоты. 6 секунд
    Крутится плавно...

    ListViewTest.apk.rar
  20. Like
    Anatoliy отреагировална Brovin Yaroslav в Какие статьи вы хотели бы видеть в блогах?   
    http://docwiki.embarcadero.com/RADStudio/Rio/en/Firebase_Android_Support
  21. Like
    Anatoliy отреагировална mazayhin в Как узнать Device Name на Андроиде?   
    Это будет имя Bluetooth-адаптера.
    //uses System.Bluetooth; TBluetoothManager.Current.CurrentAdapter.AdapterName  
  22. Like
  23. Like
    Anatoliy отреагировална Yuriy2606 в Приложение не работает на Spreadtrum SC9863A   
    Здравствуйте.
    Проблема решилась очень просто - обновлением RAD до версии Embarcadero® Delphi 10.3 Version 26.0.33219.4899
    Ссылка на торрент https://softtorrent.ru/tt/3276.SoftTorrent.ru.torrent
    Предыдущую версию полностью удалил -> перезагрузка -> установка свежей версии.
    Заработало всё в штатном режиме.
     
  24. Like
    Anatoliy отреагировална qz5 в Приложение не работает на Spreadtrum SC9863A   
    Попробуй спросить на этом форуме, там есть владельцы смартфоном с таким процессором:
    https://4pda.ru/forum/index.php?showtopic=946744
    https://4pda.ru/forum/index.php?showtopic=952959
    https://4pda.ru/forum/index.php?showtopic=957113
    Я нашел такие телефоны с этим процессором.
    Попроси владельцев этих смартов установить твою и любую другую программу написанную на Firemonkey.
    https://play.google.com/store/apps/details?id=kz.rzaripov.PushTest
    Обязательно напиши результат (работает ли твоя прога и чужие на их девайсах).
    Если не работает - нам всем это надо знать.
     
    Особенно напиши в теме Doogee N10 - там много людей, проще контакт найти.
  25. Like
    Anatoliy отреагировална qz5 в Версия андроид   
    Я разбавлю своим вариантом: Leagoo Power 2.
    У него цена около 3000 рублей, из коробки идет Андроид 8.1, но можно поставить Андроид 9 и даже... Android 10!!!
    С одной стороны у меня среди родственников есть смарты от 4ой до 9-ой версии Андроид, да и моя прога сейчас на всех работает (пока она простая).
    Но с другой стороны решил поискать дешевый смарт, на который можно несколько разных версий Андроид поставить, но:
    1. чтобы это было легко, без всяких разблокировок и т.п. (у новых Xiaomi, Huawei как раз проблемы с заблокированным загрузчиком)
    2. чтобы был максимально дешевый
    3. чтобы можно было поставить Андроид 8.1 и Андроид 9, причем разные сборки
    4. чтобы не надо было ставить всякие Flash Tools и т.п. - искал, чтобы прошивка была простой и максимально без лишних программ
    Оказалось, что Leagoo Power 2 Pro:
    1. Поддерживает GSI-прошивки от Project Treble (Андроид 8.1, Андроид 9 и Android 10)
    2. стоит около 3000 рублей
    3. Для прошивки не нужно никаких лишних программ! Достаточно ADB, а он и так уже идет вместе с Delphi (можно и самому ADB ставить на комп, если Delphi нет например)
    Взял на будущее, чтобы было дешевое устройство, на котором можно экспериментировать с прошивками
    Правда сам пока не пробовал - телефон получил, всё работает, но пока закинул его в коробочку, тестирую на смартфоне с Андроид 7 (он всё равно постоянно на столе и там нужные мне программы).
     
    Как прошить ТВРП: https://4pda.ru/forum/index.php?showtopic=928803&st=120#entry81458052
    Другие версии Андроид брать здесь: https://4pda.ru/forum/index.php?showtopic=892755
    Где купить: решайте сами, многие покупают на Пандао, но я почитал отзывы - Пандао какой-то странный магазин, ничего там не покупал и не стал из-за 200 рублей рисковать.
    Я взял там, где советует официальный производитель: https://vk.com/wall-148943419_19677
    Доставила почта Сингапура за 20 дней.
    p.s. я кучу разных вариантов пересмотрел и остановился именно на нем. Самая легкая перепрошивка из всех, недорогой смарт, есть запчасти, возможность ставить разные кастомы.
    может кому пригодится 🙂
     
×
×
  • Создать...