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

krapotkin

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

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

  • Посещение

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

    102

Весь контент krapotkin

  1. я ж вроде расписал что как в другом форуме ? что не так?
  2. А также Cannot find style resource fir Windows. Воспроизведение 1. создать новое FMX приложение 2. кинуть TSyleBook 3. зайти по двойному щелчку4. попытаться добавить платформурезультат (1) 5. добавить Windows, Android. Удалить Default. закрыть StyleBook editor6. Положить кнопку, ПКМ, Edit Custom Style7. Результат если же просто сначала кинуть кнопку, сделать ПКМ, Edit custom Style, то картина совсем другая поэтому и не находит ни Windows ни Android Соответственно Workaround - найти в FMX Platform = 'Android' и заменить на Platform = 'AndroidL Light' Platform = 'Windows' тоже возможно надо будет заменить, но с ней проблем вроде нет пока. Все это делал на Windows 7 x64 Pro SP1
  3. самое простое в OnResize проверять значения ширины-высоты
  4. что вы хотите с ними быть ? фрейм создается, встраивается в форму и берет стили из ее Stylebook нет никаких проблем
  5. http://fire-monkey.ru/topic/5519-фреймворк-для-стандартного-listview/?page=2#comment-37339
  6. "Соблюдая индекс сортировки" - это и есть "в том порядке в котором они отсортированы". Если есть порядок, то запросто можно добавлять. Кроме вроде есть методы и для перестановок тоже, если лень заново заполнять каждый раз. Хотя по мне это самое простое поэтому можете использовать что хотите, но работают эти компоненты по-разному
  7. ну, есть идеи, как бы модифицировать код, но и так сойдет я бы перефразировал if frmScanWindow = nil then frmScanWindow := TFrmScanWindow.Create(NIL); frmScanwindow.showModal( procedure (const AResult:TModalResult) begin if AResult = mrOK then begin ....... и может быть даже FreeAndNil(frmScanwindow); end; end);
  8. насколько я понимаю, GridPanelLayout сам делает назначение ячейки при вставке очередного компонента просто добавляйте в том порядке, в котором нужно. Если нужно что-то пропустить, то можно вставлять пустой TLayout
  9. You shouldn't do it this way Follow the simple rules. 1. Create your components without Owner ==> Aaa := TAAA.Create(NIL); 2. Keep the links to created objects. Use them to destroy objects after. L:=TLayout.Create(NIL); L.parent := ContainerComponent; .... L.Parent := NIL; FreeAndNil(L); // now it works the same way in desktop and mobile !! 3. Don't call DisposeOf manually. ARC should do it for you automatically! If you didn't provide conditions for automatic destruction and killed the object yourself, it means that some links to your object are keeped somewhere inside and can be utilized at any moment, so you'll get an Access Violation... Good alternative to your scenario is using Frames! Construct the frame from several components and use it as single unit instead of creating Layout, then rectanlge inside it then ... then ...
  10. там из нетривиального есть itemwidth и remain = itemwidth - <элемент>.X itemwidth считается с учетом отступов, т.е. значение чистое, правильное вопрос про арифметику не совсем понял. там используется мой собственный парсер выражений Для текста задается H = "Auto" - с автоматическим расчетом высоты
  11. P.S. по факту использования мне показалось, что удобнее использовать не отдельный JSON файл, а прямо в коде константой задавать JSON строкой. (Видимо сказались приключения с деплоем)))
  12. правильный ответ - не делать так )) нужно хранить настройки приложения в отдельном классе тогда кроме самого класса нужны методы, которые 1) читают пишут его из ... файла, БД, интернета и т.д. 2) в нужный момент (обычно чтобы изобразить форму и заполнить св-ва компонентов или еще для чего угодно) использовать эти настройки 3) вытекает из 2) сохранять в нужный момент новые значения в переменную, где лежат настройки для хранения настроек отлично подходит JSON. Т.к. он может иметь иерархическую структуру, что очень удобно. Его и хранить в БД. Можно и прямо поля, строки и все такое, но все равно, собирать их нужно в некое хранилище в программе. Пример разбирал тут http://www.cyberforum.ru/blogs/469693/blog4883.html
  13. смелее используйте F1 там будет описание метода и модуль где он находится System.Threading запускается новый поток, который запускает процедуру в главном потоке т.е. мы даем закончиться текущему методу и наше действие выполнится с гарантией после него
  14. еще один пример раскладки из реального проекта { "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" }
  15. Во-первых, откройте для себя фреймы )) Во-вторых убивать себя из обработчика себя нельзя, да и не нужно (см п.1) В качестве костыля. 1. Создавайте все с Owner=NIL2. 2. TTask.Run(procedure begin tthread.synchronize(nil, procedure begin KILLTHEMALL(); end); end)
  16. смысл очень простой - эта технология идеально подходит для скрытых вирусных закладок поэтому запрещена так что оповещайте смской самого курьера а не его программу
  17. Я так и написал. Бс это эмулятор на интеле. Он запускается и фиг с ним. А делфи программу на нем запустить никто не обещал. Потому что интел не поддерживается
  18. bluestacks работает на intel Delphi официально не поддерживает этот процессор
  19. когда-то делал свое обновление. скачивал свой APK со своего сайта и запускал его если выставлено "доверять установке из левых источников", все штатно проходило, запускался установщик
  20. перехват звонков тоже относится к опасным разрешениям
  21. значит, договаривайтесь с гугл, чтобы изменили политику взад...
  22. вроде же закрыт вопрос с читалками смс? отправляйте push
  23. Насколько я помню, эта функциональность теперь считается опасной и у гугла спец апи для этого https://medium.com/@sampadasalimath14/sms-retriever-api-for-automatic-sms-verification-e029cc501b1f реализаций на делфи не видел
×
×
  • Создать...